Etherscan just turned every verified smart contract into an npm package. The announcement is buried in developer blogs, but it’s the kind of infrastructure shift that changes how we build—and how we break.
I’ve been in this space long enough to remember when developers manually copied ABIs from block explorers. That workflow was error-prone, slow, and a breeding ground for typos that cost millions. The Parity multisig vulnerability I audited back in 2017? It started with a missed delegatecall line. If the developers had a standardized ABI package, maybe the bug would have been caught earlier. But that’s the problem with standardization: it creates a single point of failure.
Context: What the Partnership Actually Does
GitMyABI is a tool that takes verified smart contract source code from Etherscan and packages it into installable npm modules. Instead of visiting Etherscan, copying the ABI JSON, and pasting it into your project, you now run npm install @etherscan/uniswap-v3-pool or whatever the naming convention is. The package includes the ABI, the bytecode hash, and the source code. The promise is simple: reduce friction, eliminate copy-paste errors, and make contract interactions reproducible.
On the surface, this is a win for developer experience. Every block explorer competitor—Solscan, Blockscout—will likely follow. But let’s be honest: this is not a technological breakthrough. It’s a workflow optimization. The real innovation is in the trust model: Etherscan’s verification process becomes the single source of truth for npm packages. That’s both powerful and dangerous.
Core: The Technical Reality
Let’s break down what this means for the development stack. Currently, when you interact with a deployed contract, you need its address and ABI. The ABI is usually obtained from a frontend library or from Etherscan manually. This new integration automates the ABI retrieval by linking it to the verified contract on Etherscan. The npm package contains a metadata file that includes the contract address, chain ID, and the ABI. The idea is that you can always trust the package because it’s signed by the same authority that verified the contract.
But here’s the catch: the trust is not in the code, it’s in the process. If the npm publishing pipeline is compromised—say, someone steals the GitMyABI GitHub token or exploits a vulnerability in their CI/CD—anyone who installs the package will get a malicious ABI. That ABI could point to a different contract address, or worse, include a proxy pattern that redirects calls to a malicious implementation. The attack surface shifts from the block explorer to the package manager.
Code does not lie, but the package manager can.
During my 72-hour reverse-engineering of the TerraUSD reserve mechanism, I learned that the most dangerous vulnerabilities are not in the code itself, but in the assumptions about how the code is delivered. The Terra collapse was a death spiral, but it was triggered by a simple mismatch between the oracle price and the on-chain reserve. If that oracle had been packaged as an npm module with a hardcoded address, the entire ecosystem would have been compromised instantly.
Contrarian: The Double-Edged Sword of Standardization
Most developers will celebrate this integration. They should. It saves time and reduces bugs. But I see a darker side: centralization of the dependency graph. Every smart contract project that adopts these packages will implicitly trust Etherscan’s verification process. If Etherscan’s API goes down, or if the npm packages are delisted, entire dApps could break. We already saw what happened when Infura went down—dozens of applications halted. Now imagine a scenario where the ABI package for a critical lending protocol is unavailable because of a dispute or a licensing issue.
The moon is a myth; the ledger is the only truth. But the ledger doesn’t include the npm registry.
Furthermore, this integration creates a new vector for supply chain attacks. Typosquatting (e.g., @etherscan/uniswap-v3-pool vs @etherscan/uniswap-v3-pool with a typo) becomes a real threat. The npm ecosystem already has a history of malicious packages. Web3’s security model relies on immutable, verifiable code. npm packages are mutable. The contract address inside the package can be updated, and unless you pin the version, your build could silently pull in a different contract.
Trust the math, ignore the memes. But math doesn’t prevent a malicious maintainer.
Takeaway: Actionable Steps for Developers
If you plan to use these packages, don’t blindly trust the latest version. Always verify the package hash against the source code on Etherscan. Pin the exact version in your package.json. Use lockfiles. And for the love of the ledger, never use a package that claims to be from a protocol you haven’t verified yourself.
Survival is the first profit metric.
This integration is a net positive for the ecosystem, but only if developers treat it as a convenience tool, not a trust anchor. The real value is in the automation of ABIs, not in the security of the npm package. The ledger is still the only truth. The npm package is just a mirror.
I’ll be watching the download numbers and the GitHub commit activity of GitMyABI. If the package starts receiving updates without corresponding changes to the verified contract, that’s a red flag. If the package is abandoned, the dependency becomes a liability.

Speed kills, but patience compounds. Take the time to verify. Your future self—and your users—will thank you.