1

I am following BIOS Boot Sequence, at step 1.12

cleos set contract eosio /[path]/eosio.contracts/build/contracts/eosio.system/

I am not able to set the eosio.system contract it will give me error:

Reading WASM from /[path]/eosio.contracts/build/contracts/eosio.system/eosio.system.wasm...
Publishing contract...
error 2020-01-27T09:14:50.680 cleos     main.cpp:4013                 main                 ] Failed with error: deadline 2020-01-27T09:14:50.677 exceeded by 102us  (2)
deadline 2020-01-27T09:14:50.677 exceeded by 102us

I know the execution limit is 30s by default so I'm using -x to change it but:

:~/eosio.contracts/build/contracts$ cleos set contract eosio /[path]/eosio.contracts/build/contracts/eosio.system/ -x 90s
Reading WASM from /[path]/eosio.contracts/build/contracts/eosio.system/eosio.system.wasm...
Publishing contract...
Error 3070000: WASM Exception
Error Details:
env.set_proposed_producers_ex unresolveable
pending console output:

What should I do? Is there something I'm doing wrong?

Also my eosio version is 2.0 My system details are:

H/W path  Device  Class      Description
========================================
                  system     Computer
/0                bus        Motherboard
/0/0              memory     11GiB System memory
/0/1              processor  Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
/1        eth0    network    Ethernet interface
/2        eth1    network    Ethernet interface
/3        eth2    network    Ethernet interface
/4        wifi0   network    Ethernet interface
/5        wifi1   network    Ethernet interface
/6        wifi2   network    Ethernet interface
  • Try this command once cleos set contract eosio CONTRACTS_DIR/build/contracts/eosio.system --abi eosio.system.abi -p eosio@active. Need to check this once – Vipulw Jan 27 at 11:23
  • I'm getting this error: Publishing contract... error 2020-01-27T11:29:47.912 cleos main.cpp:4013 main ] Failed with error: deadline 2020-01-27T11:29:47.909 exceeded by 37us (2) deadline 2020-01-27T11:29:47.909 exceeded by 37us @Vipulw – AditiB Jan 27 at 11:30
  • it seems like version mismatch between the system contract and nodeos. set_proposed_producers function was renamed from set_active_producers, your system contract uses set_proposed_producers while nodeos doesn't provide it try recompiling everything from the same version of source code – Vipulw Jan 27 at 12:21
1

This got me as well, it's related to the new WTMSIG_BLOCK_SIGNATURES in eosio 2.0 and the requirement to pre-activate the new eosio chain. There is a pull request which includes a simplified version of the eosio.bios contract called eosio.boot which once deployed gives you the ability to pre-activate and then activate the necessary features. Details can be found here.

Here are the steps I followed:

First clone the branch with the new eosio.boot contract

git clone --branch add-boot-contract https://github.com/EOSIO/eosio.contracts.git

Then run the build script

$./[path]/eosio.contracts/build.sh 

You should now have an eosio.boot directory which includes the "eosio.boot.wasm" and "eosio.boot.abi" which can be deployed with the cleos set contract command above.

You then enable the PREACTIVATE_FEATURE by running

curl -X POST http://127.0.0.1:8888/v1/producer/get_supported_protocol_features -d '{}' | jq

This output something like this:

...

{
  "feature_digest": "0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd",
  "subjective_restrictions": {
    "enabled": true,
    "preactivation_required": false,
    "earliest_allowed_activation_time": "1970-01-01T00:00:00.000"
  },
  "description_digest": "64fe7df32e9b86be2b296b3f81dfd527f84e82b98e363bc97e40bc7a83733310",
  "dependencies": [],
  "protocol_feature_type": "builtin",
  "specification": [
    {
      "name": "builtin_feature_codename",
      "value": "PREACTIVATE_FEATURE"
    }
  ]
},
...

Take the feature digest and run it on your producing node.

curl -X POST http://127.0.0.1:8888/v1/producer/schedule_protocol_feature_activations -d '{"protocol_features_to_activate": ["0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd"]}' | jq

I didn't set any timers, left everything at defaults.

Now you have the PREACTIVATE_FEATURE set on the chain, you can use cleos to activate the WTMSIG_BLOCK_SIGNATURES.

Get a list of the supported features and the digests by running the same command as above, finding the one that relates to WTMSIG, then a command similar to this:

cleos -u http://127.0.0.1:8888 push transaction '{"delay_sec":0,"max_cpu_usage_ms":0,"actions":[{"account":"eosio","name":"activate","data":{"feature_digest":"299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707"},"authorization":[{"actor":"eosio","permission":"active"}]}]}'

I then loaded all the eosio features and checked them using

curl -X POST http://127.0.0.1:8888/v1/chain/get_activated_protocol_features -d '{}' | jq

All going well, you should now be able to load the eosio.system contract. In my case, I loaded the eosio.bios contract which was successful, hopefully, it works for you.

More info on the activation can be found here.

  • What step is not working for you? I've never seen this message before. – Scott Owen Jan 28 at 9:15
  • Error for activate the WTMSIG_BLOCK_SIGNATURES: Error 3010010: Invalid packed transaction Error Details: Failed to deserialize data for eosio:activate Failed to deserialize variant – AditiB Jan 28 at 9:40
  • How can I use actions to activate the WTMSIG_BLOCK_SIGNATURES, as no contract has been deployed to eosio yet. – AditiB Jan 28 at 10:03
  • Did you try deploying the eosio.boot contract in the "add-boot-contract" branch as above? I did this before pre-activation, then was able to push txn to activate WTMSIG. – Scott Owen Jan 28 at 11:33
  • 1
    I had to use cleos set contract eosio [path]/eosio.contracts/build/contracts/eosio.system/ -x 80s -p eosio@active. It worked. Thank you so much. @ScottOwen – AditiB Jan 28 at 12:04
0

I am having this exact issue with the boot sequence, I even tried the steps from the answer marked as a solution in this question, and still no luck.

I created a small example of the BIOS script that we're trying to apply at https://github.com/eoscostarica/eos-test The steps to put this project to work are in the readme, the version of the bios script that's on BASH is not complete, I have it until the point where it fails.

Also, I provided a base docker image for running the bios-tutorial example that lives currently under the GH repo for eosio, which gives the exact same error.

Has anyone been able to make this work with 2.0.x?

  • 1
    Did you enable PREACTIVATE_FEATURE and WTMSIG_BLOCK_SIGNATURES. This might help "eosio.stackexchange.com/questions/5241/…" Also, I had the same error but it works somewhere although it shows the error but again when you try it shows "the exact code is already deployed". Don't know the exact reason but I did set up 3 Private Blockchains & was stuck on the same step but it works after hitting this command several times "cleos set contract eosio [path]/eosio.contracts/build/contracts/eosio.system/ -x 80s -p eosio@active" – AditiB Feb 20 at 5:36
  • My all work was on 2.0.X itself. – AditiB Feb 20 at 5:38
  • I sent the commands to activate both features and tried to deploy the old version of the contracts, giving me that same error but I'll try to do as you say, to keep trying to deploy the system contract till it works (or it says it's already been deployed) Thanks! – Daniel J. Prado Feb 21 at 12:08
  • You're welcome. Just make sure that both features are activated. – AditiB Feb 24 at 6:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.