Skip to content

Technical Guide to Review and Approve System Contract v3.8.0

Eric Passmore edited this page Mar 7, 2025 · 19 revisions

Validating v3.8.0 System Contracts and MultiSig

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.

Validation Steps

CheckSums

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

General Look at MSIG

Compiling from Source

CDT

  • 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

System Contracts

  • 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

Validate MSIG

Calculate Hashes

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

Validate Code

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

Validate ABI

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 -

JSON Example of MSIG

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...
      }
    ]
  }
}