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
I have a contract that I had verified but when I try to verify it again, it shows me the repository link
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:
- https://medium.com/etherscan-blog/and-finally-proxy-contract-support-on-etherscan-693e3da0714b
- https://docs.tenderly.co/monitoring/smart-contracts/proxy-contracts
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.