-
Notifications
You must be signed in to change notification settings - Fork 20
Technical Guide to Review and Approve System Contract v3.8.0
This document reviews the contents for the multisig submitted by proposer.enf
named enfsys.blk
. This multisig combines together several small releases of the system contracts.
- Restore Missing Ricardian Clauses v3.6.1
- Enable Gifted RAM, RAM can be given and returned but never sold v3.7.0
- New actions to limit system names v3.8.0
Checksums from build using CDT v4.1.0 and EOS System Contracts v3.8.0
- 105aabeae706beaba2d31a8e6466bf8345f0cb7583fddb59411e905112ae163f
eosio.system.abi
- 3aba4db19e43fc171ebdf615e886077c89ee46411d1b127b2aa8ad4e118a7e95
eosio.system.wasm
Checksum from applied ABI
- e5b06d27873b2a4d7c7eb4666a3416825e733de8c48592e4a12c007345c80a0a
on-chain ABI
- MAINNET
cleos -u https://eos.api.eosnation.io multisig review proposer.enf enfsys.blk | cut -c1-40
- unicove proposer.enf enfsys.blk
- look for three actions
setabi
,setcode
, anddenyhashadd
see json example below
- Must use CDT tagged as v4.1.0
- Verify version of CDT with
cdt-cpp -version
- If needed build CDT from source Full Instructions
git clone https://github.com/AntelopeIO/cdt.git
cd cdt && git checkout v4.1.0 && mkdir build && cd build
cmake ..
make -j 3 # note if this fails try make -j 1
- Build System Contracts Full Instructions
git clone https://github.com/eosnetworkfoundation/eos-system-contracts.git
cd eos-system-contracts && git checkout v.3.8.0 && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF ..
make -j 3 # note if this fails try make -j 1
Run from eos-system-contracts build
directory you created when building System Contracts. Your path may be different.
sha256sum contracts/eosio.system/eosio.system.*
- record hashes
Pull the setcode hex from the proposed MSIG and hash it. Then compare the hash from the MSIG with the hash from the file on your local host.
- MAINNET
- get the hash from unicove URL or via cleos, and validate

cleos -u https://eos.api.eosnation.io multisig review propser.enf enfsys.blk | jq '.transaction.actions[0].data.code' | xxd -r -p | sha256sum -
echo "3aba4db19e43fc171ebdf615e886077c89ee46411d1b127b2aa8ad4e118a7e95 contracts/eosio.system/eosio.system.wasm" | sha256sum --check
The ABI on-chain is in bytes and the order of some fields may have changed after the ABI is uploaded. To validate the ABI create the setabi JSON in a dry-run command. Then use the output to get the ABI and calculate the hash. First cleos
command creates a ABI from the provided file. Second cleos
command pulls the ABI from the MSIG action data.
cleos -u https://eos.api.eosnation.io set abi -u -s -d -j doesntmatter contracts/eosio.system/eosio.system.abi 2>/dev/null | jq -r .actions[0].data.abi | xxd -r -p | sha256sum -
cleos -u https://eos.api.eosnation.io multisig review proposer.enf enfsys.blk | jq '.transaction.actions[1].data.abi' | xxd -r -p | sha256sum -
Note: All hex strings are truncated
{
"proposer": "proposer.enf",
"proposal_name": "enfsys.blk",
"transaction_id": "66d8d076db3dd16bb13
"packed_transaction": "9acf4e68d5d2f00
"earliest_exec_time": null,
"transaction": {
"expiration": "2025-06-15T13:50:18",
"ref_block_num": 53973,
"ref_block_prefix": 3444117232,
"max_net_usage_words": 0,
"max_cpu_usage_ms": 0,
"delay_sec": 0,
"context_free_actions": [],
"actions": [{
"account": "eosio",
"name": "setcode",
"authorization": [{
"actor": "eosio",
"permission": "active"
}
],
"data": {
"account": "eosio",
"vmtype": 0,
"vmversion": 0,
"code": "0061736d0100000001...
},
"hex_data": "0000000000ea3055...
},{
"account": "eosio",
"name": "setabi",
"authorization": [{
"actor": "eosio",
"permission": "active"
}
],
"data": {
"account": "eosio",
"abi": "0e656f73696f3a3a616...
},
"hex_data": "0000000000ea3055...
},{
"account": "eosio",
"name": "denyhashadd",
"authorization": [{
"actor": "eosio",
"permission": "active"
}
],
"data": "8eecb104b43b88aef8ec...
"hex_data": "8eecb104b43b88ae...
}
]
}
}