Skip to main content

Frequently Asked Questions

Where can I get the ABI of the verified contract?

You can get the ABI of the verified contract from the metadata JSON file. After you fetch the metadata JSON file, you can get the ABI from the output.abi field. A metadata.json file is present in every contract's folder.

Here's an example: https://repo.sourcify.dev/contracts/full_match/11155111/0x2738d13E81e30bC615766A0410e7cF199FD59A83/metadata.json

I want to have another EVM chain supported by Sourcify

Please follow the instructions on the chain support page.

What are "full match" and "partial match"es?

  • Full Match: A full match is when both the bytecode and the metadata hash of the contract at a given address match the provided source files and the metadata file. This means the given source files are exactly the same as the ones that are compiled and deployed.

  • Partial Match: A partial match indicates that the deployed and the recompiled bytecodes match excluding the metadata hashes. This means the functionality of the given source files is the same with the contract deployed (similar to Etherscan) but the provided source files can contain differences in variable names, comments, spaces etc.

Learn more about the technical details of a match here

Contracts can only be verified once, unless they became a full match when they were a partial match.

I verified my contract on Sourcify but I can't see it on Etherscan. Why?

Etherscan and Sourcify are two different platforms and serve different purposes. Etherscan is a block explorer with its own smart contract verification service. Sourcify is not a block explorer but rather a public infrastructure: a smart contract verification tool and an open repository of verified contracts.

Blockscout and Otterscan are for instance two block explorers that make use of Sourcify's verification.

Does Sourcify support proxy contracts?

On Sourcify, you can separately verify the proxy and implementation. However we don't try to resolve to the implemenation and mark a contract as a proxy to a specific implementation. The main reson is, that we don't actively index chains, we wouldn't know when a proxy's implementation changes. It is therefore more fitting for a block explorer to have the notion of a proxy contract than a solely verification service like Sourcify.

How block explorers do this is usually by checking if the contract in question is following a proxy standard such as EIP-1967 and EIP-1822, or they use some sort of a heuristic to determine if a contract is a proxy.

Some resources on how it's done:

Do you support other languages such as Vyper, Fe etc. ?

Sourcify is currently Solidity only.

I want to download the complete Sourcify repository, is it possible?

Yes! You can download the repository via IPFS with:

ipfs get "/ipns/repo.sourcify.dev" -o <output-directory>

But IPFS is not always working perfectly. If you can't get it working contact us and we will find a solution for you.

I am running Sourcify locally and getting CORS error, what should I do?

The CORS settings on the Sourcify server is at the config.ts file. If you are running locally and the NODE_ENV is set to development it will include localhost origins too.

If you are trying to request from localhost, make sure NODE_ENV is set correctly. If you are on another domain, add your domain in this setting. Rebuild and restart the server.