eosnetworkfoundation / eos-system-contracts

Other
28 stars 20 forks source link

System Contract WASM Errors #87

Closed ericpassmore closed 1 year ago

ericpassmore commented 1 year ago

Using CDT 4.0 installed from deb package received the following error when applying eosio.bios.wasm and eosio.system.wasm. Steps to reproduce

  1. Build leap either branch release/4.0 or tag API-early-v5.0-b73c28d51
  2. install leap
    • Leap 4 from downloaded v4.0.4 deb package
    • Leap 5 from deb package build in step 1
  3. install CDT 4.0 from Deb package
  4. clone eos-system-contracts-repo from main or tag v3.1.1
  5. Build Contracts
    • cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -Dleap_DIR="$LEAP_BUILD_DIR"/lib/cmake/leap ..
    • make -j 8
      1. Activate needed protocol features
    • curl --data-binary '{"protocol_features_to_activate":["0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd"]}' http://127.0.0.1:8888/v1/producer/schedule_protocol_feature_activations
      1. Apply contracts (need to unlock wallet and add private key)
        cleos set contract eosio "$CONTRACT_DIR"/eosio.boot
        sleep 1;
        cleos set contract eosio "$CONTRACT_DIR"/eosio.msig
        sleep 1;
        cleos set contract eosio "$CONTRACT_DIR"/eosio.bios
        sleep 1;
        cleos set contract eosio "$CONTRACT_DIR"/eosio.system
        sleep 1;
        cleos set contract eosio "$CONTRACT_DIR"/eosio.wrap
        sleep 1;
Reading WASM from build/contracts/eosio.bios/eosio.bios.wasm...
Publishing contract...
failed transaction: 8b633ae8c912289321cbbec98c4fc8494bc1a4b606e2de975239db0d7d8c4173  <unknown> bytes  <unknown> us
error 2023-09-16T19:04:57.737 cleos     main.cpp:699                  print_result         ] soft_except->to_detail_string(): 3070003 wasm_serialization_error: Serialization Error Processing WASM
env.set_proposed_producers_ex unresolveable
    {"module":"env","fn":"set_proposed_producers_ex"}
    nodeos  eos-vm.cpp:74 validate
pending console output: 
    {"console":""}
    nodeos  apply_context.cpp:134 exec_one

Reading WASM from /build/contracts/eosio.system/eosio.system.wasm...
Publishing contract...
failed transaction: c3372a12e7901845a6388557a0e9dd8084c31a5fbcad2d6db45215295d0dcc96  <unknown> bytes  <unknown> us
error 2023-09-16T19:05:16.812 cleos     main.cpp:699                  print_result         ] soft_except->to_detail_string(): 3070003 wasm_serialization_error: Serialization Error Processing WASM
env.set_parameters_packed unresolveable
    {"module":"env","fn":"set_parameters_packed"}
    nodeos  eos-vm.cpp:74 validate
pending console output: 
    {"console":""}
    nodeos  apply_context.cpp:134 exec_one
ericpassmore commented 1 year ago

Found the Problem, there were new protocol activations that were missed. Once activated the contracts compiled. I needed to run through all of these steps end-to-end in the correct order. Note the users and permissions are different from what you may want in production. This shows to correct order of operations.

At a high level

  1. Apply eosio.boot contract
  2. Activate Protocol Features in order listed below
  3. Apply eosio.bios contract
  4. Apply eosio.system contract
  5. Apply eosio.wrap contract
curl --data-binary '{"protocol_features_to_activate":["0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd"]}' http://127.0.0.1:8888/v1/producer/schedule_protocol_feature_activations
sleep 1;

CONTRACT_DIR="/local/eosnetworkfoundation/repos/eos-system-contracts/build/contracts"

cleos set contract eosio "$CONTRACT_DIR"/eosio.boot
sleep 1;

echo SKIP NOT RECOGNIZED KV_DATABASE
#cleos push action eosio activate '["825ee6288fb1373eab1b5187ec2f04f6eacb39cb3a97f356a07c91622dd61d16"]' -p eosio

echo ACTION_RETURN_VALUE
cleos push action eosio activate '["c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071"]' -p eosio

echo CONFIGURABLE_WASM_LIMITS2 *
cleos push action eosio activate '["d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb40"]' -p eosio@active

echo SKIP NOT RECOGNIZED CONFIGURABLE_WASM_LIMITS
#cleos push action eosio activate '["bf61537fd21c61a60e542a5d66c3f6a78da0589336868307f94a82bccea84e88"]' -p eosio

echo BLOCKCHAIN_PARAMETERS
cleos push action eosio activate '["5443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4"]' -p eosio

echo GET_SENDER
cleos push action eosio activate '["f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d"]' -p eosio

echo FORWARD_SETCODE
cleos push action eosio activate '["2652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25"]' -p eosio

echo ONLY_BILL_FIRST_AUTHORIZER
cleos push action eosio activate '["8ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a405"]' -p eosio

echo RESTRICT_ACTION_TO_SELF
cleos push action eosio activate '["ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c43"]' -p eosio

echo DISALLOW_EMPTY_PRODUCER_SCHEDULE
cleos push action eosio activate '["68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428"]' -p eosio

 echo FIX_LINKAUTH_RESTRICTION
cleos push action eosio activate '["e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff526"]' -p eosio

 echo REPLACE_DEFERRED
cleos push action eosio activate '["ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99"]' -p eosio

echo NO_DUPLICATE_DEFERRED_ID
cleos push action eosio activate '["4a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f"]' -p eosio

echo ONLY_LINK_TO_EXISTING_PERMISSION
cleos push action eosio activate '["1a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241"]' -p eosio

echo RAM_RESTRICTIONS
cleos push action eosio activate '["4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d67"]' -p eosio

echo WEBAUTHN_KEY
cleos push action eosio activate '["4fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2"]' -p eosio

echo WTMSIG_BLOCK_SIGNATURES
cleos push action eosio activate '["299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707"]' -p eosio

echo GET CODE HASH *
cleos push action eosio activate '["bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99"]' -p eosio@active

echo GET_BLOCK_NUM *
cleos push action eosio activate '["35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b"]' -p eosio@active

echo CRYPTO_PRIMITIVES *
cleos push action eosio activate '["6bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc"]' -p eosio@active

sleep 2;

cleos set contract eosio "$CONTRACT_DIR"/eosio.bios
sleep 1;
cleos set contract eosio "$CONTRACT_DIR"/eosio.system
sleep 1;
cleos set contract eosio "$CONTRACT_DIR"/eosio.wrap
sleep 1;