Verification
Last updated
Last updated
We've built a handy tool to verify that the on-chain bytecode of deployed Mento contracts matches what has been audited. This is a bit technical and requires at least some knowledge of the stack used for smart contract development and how to use the terminal.
Before you get started make sure you have installed: git, foundry, node, and yarn.
Clone the mento-deployments
Run forge install
Run yarn verify:bytecodes -n <network> -u <upgrade> -c <commit or tag>
For the verifyBytecodes
command, you need to pick three parameters as follows:
network
one of baklava
, alfajores
or celo
upgrade
currently only MU01
exists which upgrades Mento from v1.0 to v2.0
commit or tag
what version of the source files to check against, this should come from the audit report associated with the upgrade.
For example, if we want to verify on Celo mainnet we would run this command:
In order to trust the results, you also have to trust the verification script. Luckily it's short enough to be able to read comfortably. You can find it here:
The script flow is the following:
Check out the mento-core
submodule at the supplied commit
Clean and recompile all contracts
Find deployed contracts by looking at the related to the upgrade
Compare the bytecode found on-chain for a deployed contract with the local compilation results
Print a pretty table.