Similar Match Bytecode

When a smart contract’s source code is compiled, it’s transformed into bytecode. This bytecode is then deployed to Ethereum, meaning it’s permanently stored on the blockchain via a contract creation transaction.

However, this alone isn’t sufficient for interacting with a smart contract on websites such as Etherscan.

To address this, Etherscan offers a contract verification service, allowing users—typically smart contract deployers—to upload their source code for verification. This process checks the uploaded source code against the onchain bytecode. If these are verified to match, Etherscan displays the source code along with read and write contract functions for users to interact with the contract. These contracts are considered to have their source code verified with Exact Match.

For context, there are over 67 million contracts deployed on Ethereum, but only ~1% of them (at time of writing) are currently verified on Etherscan. The majority of smart contracts remain unreadable.

Learn about the 3 types of contract verification on Etherscan.

To improve the readability of the block explorer, Team Etherscan uses heuristics to match unverified smart contracts and method IDs with verified contracts on Etherscan. Here’s how it works:

Similar Match Contract

If the compiled bytecode of a smart contract that is deployed on Ethereum but is unverified on Etherscan, matches that of a different contract that has been verified on Etherscan, it will be labeled with a "Similar Match Source Code" tag. The source code along with read and write contract functions are displayed like with Exact Match contracts.

However, it’s important to note that this heuristic is not foolproof. Differences in constructor arguments, for example, could change the actual behavior of the contract.

Learn how to verify smart contract source code on Etherscan.

Similar Match Method ID

In a transaction where the sender interacts with an unverified contract and invokes a function, it’s impossible to know for sure which specific function is being called.

However, if the function’s Method ID and parameters matches that of a known, verified function in another Etherscan-verified contract, the full function signature will be displayed for better readability.

It’s crucial to understand that a Method ID can correspond to multiple function signatures since it only represents the first 4 bytes of a hashed function signature. Even if the function signatures are identical, the internal workings of the functions may differ, especially if the source code isn’t verified on Etherscan.

Learn more about Method ID.