oDAO verification: Houston contract upgrades

Using peteris’ writeup at oDAO Membership Interest - peteris - #22 by peteris

docker run --rm -it -u 1000:1000 -v $(pwd):/app -w /app node:22 sh -c 'npm install && ./verify.sh'
✔️Verified contract at 0x5dC69083B68CDb5c9ca492A0A5eC581e529fb73C matches RocketUpgradeOneDotThree
✔️Verified contract at 0x7603352f1C4752Ac07AAC94e48632b65FDF1D35c matches RocketNetworkSnapshots
✔️Verified contract at 0xA9d27E1952f742d659143a544d3e535fFf3Eebe1 matches RocketNetworkVoting
✔️Verified contract at 0x5f24E4a1A1f134a5a6952A9965721E6344898497 matches RocketDAOProtocolSettingsProposals
✔️Verified contract at 0x25F41Cd11d95DBEC0919A0440343698cf1472a33 matches RocketDAOProtocolVerifier
✔️Verified contract at 0x84aE6D61Df5c6ba7196b5C76Bcb112B8a689aD37 matches RocketDAOSecurity
✔️Verified contract at 0xeaa442dF4Bb5394c66C8024eFb4979bEc89Eb59a matches RocketDAOSecurityActions
✔️Verified contract at 0x6004Fa90a27dB9971aDD200d1A3BB34444db9Fb7 matches RocketDAOSecurityProposals
✔️Verified contract at 0x1ec364CDD9697F56B8CB17a745B98C2b862CBE29 matches RocketDAOProtocolSettingsSecurity
✔️Verified contract at 0x7cee91F49001B08f8D562d58510C76bcEcD61FA0 matches RocketDAOProtocolProposal
✔️Verified contract at 0x1b714ed0ce30A8BeDC5b4253DaAa08c84CA5BFcb matches RocketDAOProtocol
✔️Verified contract at 0x6D736da1dC2562DBeA9998385A0A27d8c2B2793e matches RocketDAOProtocolProposals
✔️Verified contract at 0x25E54Bf48369b8FB25bB79d3a3Ff7F3BA448E382 matches RocketNetworkPrices
✔️Verified contract at 0x9304B4ebFbE68932Cf9Af8De4d21D7e7621f701a matches RocketNodeDeposit
✔️Verified contract at 0x2b52479F6ea009907e46fc43e91064D1b92Fdc86 matches RocketNodeManager
✔️Verified contract at 0x0e29BA1155cE103A07118c8912dA44B0507A982D matches RocketNodeStaking
✔️Verified contract at 0xFe6Db0ce3F61a4aE04c0A3E62F775a6f511C9aaC matches RocketClaimDAO
✔️Verified contract at 0x8857610Ba0A7caFD4dBE1120bfF03E9c74fc4124 matches RocketDAOProtocolSettingsRewards
✔️Verified contract at 0x09fbCE43e4021a3F69C4599FF00362b83edA501E matches RocketMinipoolManager
✔️Verified contract at 0xEE4d2A71cF479e0D3d0c3c2C923dbfEB57E73111 matches RocketRewardsPool
✔️Verified contract at 0x6Cc65bF618F55ce2433f9D8d827Fc44117D81399 matches RocketNetworkBalances
✔️Verified contract at 0x89682e5F9bf69C909FC5E21a06495ac35E3671Ab matches RocketDAOProtocolSettingsNetwork
✔️Verified contract at 0xEF75e83633E686D3085b3a988b937D021e2fA628 matches RocketDAOProtocolSettingsAuction
✔️Verified contract at 0xD846AA34caEf083DC4797d75096F60b6E08B7418 matches RocketDAOProtocolSettingsDeposit
✔️Verified contract at 0x1d4AAEaE7C8b75a8e5ab589a84516853DBDdd735 matches RocketDAOProtocolSettingsInflation
✔️Verified contract at 0xA416A7a07925d60F794E20532bc730749611A220 matches RocketDAOProtocolSettingsMinipool
✔️Verified contract at 0x448DA008c7EB2501165c9Aa62DfFEeC4405bC660 matches RocketDAOProtocolSettingsNode
✔️Verified contract at 0x5cE71E603B138F7e65029Cc1918C0566ed0dBD4B matches RocketMerkleDistributorMainnet
✔ Verification successful

Byte code verification shows one mismatch

debian@eth-rp-c:~/rocketpool$ node verify.js
✅ RocketUpgradeOneDotThree 0x5dC69083B68CDb5c9ca492A0A5eC581e529fb73C
✅ RocketClaimDAO 0xFe6Db0ce3F61a4aE04c0A3E62F775a6f511C9aaC
✅ RocketDAOProtocol 0x1b714ed0ce30A8BeDC5b4253DaAa08c84CA5BFcb
✅ RocketDAOProtocolProposals 0x6D736da1dC2562DBeA9998385A0A27d8c2B2793e
✅ RocketDAOProtocolSettingsAuction 0xEF75e83633E686D3085b3a988b937D021e2fA628
✅ RocketDAOProtocolSettingsDeposit 0xD846AA34caEf083DC4797d75096F60b6E08B7418
✅ RocketDAOProtocolSettingsInflation 0x1d4AAEaE7C8b75a8e5ab589a84516853DBDdd735
✅ RocketDAOProtocolSettingsMinipool 0xA416A7a07925d60F794E20532bc730749611A220
✅ RocketDAOProtocolSettingsNetwork 0x89682e5F9bf69C909FC5E21a06495ac35E3671Ab
✅ RocketDAOProtocolSettingsNode 0x448DA008c7EB2501165c9Aa62DfFEeC4405bC660
✅ RocketDAOProtocolSettingsRewards 0x8857610Ba0A7caFD4dBE1120bfF03E9c74fc4124
❌ RocketMerkleDistributorMainnet 0x5cE71E603B138F7e65029Cc1918C0566ed0dBD4B
✅ RocketMinipoolManager 0x09fbCE43e4021a3F69C4599FF00362b83edA501E
✅ RocketNetworkBalances 0x6Cc65bF618F55ce2433f9D8d827Fc44117D81399
✅ RocketNetworkPrices 0x25E54Bf48369b8FB25bB79d3a3Ff7F3BA448E382
✅ RocketNodeDeposit 0x9304B4ebFbE68932Cf9Af8De4d21D7e7621f701a
✅ RocketNodeManager 0x2b52479F6ea009907e46fc43e91064D1b92Fdc86
✅ RocketNodeStaking 0x0e29BA1155cE103A07118c8912dA44B0507A982D
✅ RocketRewardsPool 0xEE4d2A71cF479e0D3d0c3c2C923dbfEB57E73111
✅ RocketDAOProtocolProposal 0x7cee91F49001B08f8D562d58510C76bcEcD61FA0
✅ RocketDAOProtocolSettingsProposals 0x5f24E4a1A1f134a5a6952A9965721E6344898497
✅ RocketDAOProtocolSettingsSecurity 0x1ec364CDD9697F56B8CB17a745B98C2b862CBE29
✅ RocketDAOProtocolVerifier 0x25F41Cd11d95DBEC0919A0440343698cf1472a33
✅ RocketDAOSecurity 0x84aE6D61Df5c6ba7196b5C76Bcb112B8a689aD37
✅ RocketDAOSecurityActions 0xeaa442dF4Bb5394c66C8024eFb4979bEc89Eb59a
✅ RocketDAOSecurityProposals 0x6004Fa90a27dB9971aDD200d1A3BB34444db9Fb7
✅ RocketNetworkSnapshots 0x7603352f1C4752Ac07AAC94e48632b65FDF1D35c
✅ RocketNetworkVoting 0xA9d27E1952f742d659143a544d3e535fFf3Eebe1

Verify against the previous commit where the comment hadn’t been changed

debian@eth-rp-c:~/rocketpool$ git reset --hard 8a86af4e37299dbdd8e0a07fd80a51887278557c

debian@eth-rp-c:~/rocketpool$ npm run compile

> [email protected] compile
> hardhat compile

Compiled 1 Solidity file successfully
debian@eth-rp-c:~/rocketpool$ node verify.js
✅ RocketUpgradeOneDotThree 0x5dC69083B68CDb5c9ca492A0A5eC581e529fb73C
✅ RocketClaimDAO 0xFe6Db0ce3F61a4aE04c0A3E62F775a6f511C9aaC
✅ RocketDAOProtocol 0x1b714ed0ce30A8BeDC5b4253DaAa08c84CA5BFcb
✅ RocketDAOProtocolProposals 0x6D736da1dC2562DBeA9998385A0A27d8c2B2793e
✅ RocketDAOProtocolSettingsAuction 0xEF75e83633E686D3085b3a988b937D021e2fA628
✅ RocketDAOProtocolSettingsDeposit 0xD846AA34caEf083DC4797d75096F60b6E08B7418
✅ RocketDAOProtocolSettingsInflation 0x1d4AAEaE7C8b75a8e5ab589a84516853DBDdd735
✅ RocketDAOProtocolSettingsMinipool 0xA416A7a07925d60F794E20532bc730749611A220
✅ RocketDAOProtocolSettingsNetwork 0x89682e5F9bf69C909FC5E21a06495ac35E3671Ab
✅ RocketDAOProtocolSettingsNode 0x448DA008c7EB2501165c9Aa62DfFEeC4405bC660
✅ RocketDAOProtocolSettingsRewards 0x8857610Ba0A7caFD4dBE1120bfF03E9c74fc4124
✅ RocketMerkleDistributorMainnet 0x5cE71E603B138F7e65029Cc1918C0566ed0dBD4B
✅ RocketMinipoolManager 0x09fbCE43e4021a3F69C4599FF00362b83edA501E
✅ RocketNetworkBalances 0x6Cc65bF618F55ce2433f9D8d827Fc44117D81399
✅ RocketNetworkPrices 0x25E54Bf48369b8FB25bB79d3a3Ff7F3BA448E382
✅ RocketNodeDeposit 0x9304B4ebFbE68932Cf9Af8De4d21D7e7621f701a
✅ RocketNodeManager 0x2b52479F6ea009907e46fc43e91064D1b92Fdc86
✅ RocketNodeStaking 0x0e29BA1155cE103A07118c8912dA44B0507A982D
✅ RocketRewardsPool 0xEE4d2A71cF479e0D3d0c3c2C923dbfEB57E73111
✅ RocketDAOProtocolProposal 0x7cee91F49001B08f8D562d58510C76bcEcD61FA0
✅ RocketDAOProtocolSettingsProposals 0x5f24E4a1A1f134a5a6952A9965721E6344898497
✅ RocketDAOProtocolSettingsSecurity 0x1ec364CDD9697F56B8CB17a745B98C2b862CBE29
✅ RocketDAOProtocolVerifier 0x25F41Cd11d95DBEC0919A0440343698cf1472a33
✅ RocketDAOSecurity 0x84aE6D61Df5c6ba7196b5C76Bcb112B8a689aD37
✅ RocketDAOSecurityActions 0xeaa442dF4Bb5394c66C8024eFb4979bEc89Eb59a
✅ RocketDAOSecurityProposals 0x6004Fa90a27dB9971aDD200d1A3BB34444db9Fb7
✅ RocketNetworkSnapshots 0x7603352f1C4752Ac07AAC94e48632b65FDF1D35c
✅ RocketNetworkVoting 0xA9d27E1952f742d659143a544d3e535fFf3Eebe1

Verify that the only change is the comment

debian@eth-rp-c:~/rocketpool$ git diff 8a86af4e37299dbdd8e0a07fd80a51887278557c
diff --git a/contracts/contract/rewards/RocketMerkleDistributorMainnet.sol b/contracts/contract/rewards/RocketMerkleDistributorMainnet.sol
index 895251c1..c5ab312f 100644
--- a/contracts/contract/rewards/RocketMerkleDistributorMainnet.sol
+++ b/contracts/contract/rewards/RocketMerkleDistributorMainnet.sol
@@ -115,7 +115,7 @@ contract RocketMerkleDistributorMainnet is RocketBase, RocketMerkleDistributorMa
             // Distribute ETH
             if (totalAmountETH > 0) {
                 rocketVault.withdrawEther(totalAmountETH);
-                // Allow up to 2300 gas to send ETH to the withdrawal address
+                // Allow up to 10000 gas to send ETH to the withdrawal address^M
                 (bool result,) = withdrawalAddress.call{value: totalAmountETH, gas: 10000}("");
                 if (!result) {
                     // If the withdrawal address cannot accept the ETH with 10000 gas, add it to their balance to be claimed later at their own expense

The deployed contracts are from commit 8a86af4e37299dbdd8e0a07fd80a51887278557c on tag v1.3.0. A later commit only changes a comment, not the code.

This has not been merged into master.

Those minor things notwithstanding, the deployed code is what is in github at tag v1.3.0

8 Likes