[fio 3.4 fio.contracts 2.8] Release Script

Guidance

For this release, the BPs will execute the MSIGs in 3 parts, as noted by the section headings: MSIGs - Batch #1, MSIGs - Batch #2, and MSIGs - Batch #3.

  • Batch #2 msigs can only be created after Batch #1 msigs are executed since they need the fio.oracle account to exist in order to set the privilege and RAM limits.

Rollout Guides

FIP-41 Rollout guide: FIP-41 Deployment and rollout guide

FIP-17a and FIP-17b Rollout guide: [FIP-17] Deployment guide

Items of Interest:

TestNet mSig Proposals:

Execution Notes:

  • BP may execute msigs via links above*

Validation Notes:

  • For addaction and createfee actions, view transaction (after execution)

    • View transaction details, click ‘Block Number’, then confirm that next block is produced by clicking ‘Next’

      Next Block Example
  • For contract deployment (set contract) validation, run fio.devtools “Contract Hashes” query to confirm ABI and contract hashes match.

  • Use Aloha EOS TestNet Producer Reliability Tracker to verify that no blocks are missed. Note, missed rounds will result in a post to the Telegram TestNet channel.

  • Use FioWatch tool to check transaction

MSIGS - Batch #1

Add new actions

FIP-41

./clio -u http://localhost:8889 push action eosio addaction '{"action":"clrgenlocked","contract":"eosio","actor":"eosio"}' --permission eosio@active

FIP-17

./clio -u http://localhost:8889 push action eosio addaction '{"action":"wraptokens","contract":"fio.oracle","actor":"eosio"}' -p eosio@active

./clio -u http://localhost:8889 push action eosio addaction '{"action":"unwraptokens","contract":"fio.oracle","actor":"eosio"}' -p eosio@active

./clio -u http://localhost:8889 push action eosio addaction '{"action":"regoracle","contract":"fio.oracle","actor":"eosio"}' -p eosio@active

./clio -u http://localhost:8889 push action eosio addaction '{"action":"unregoracle","contract":"fio.oracle","actor":"eosio"}' -p eosio@active

./clio -u http://localhost:8889 push action eosio addaction '{"action":"setoraclefee","contract":"fio.oracle","actor":"eosio"}' -p eosio@active

./clio -u http://localhost:8889 push action eosio addaction '{"action":"wrapdomain","contract":"fio.oracle","actor":"eosio"}' -p eosio@active

./clio -u http://localhost:8889 push action eosio addaction '{"action":"unwrapdomain","contract":"fio.oracle","actor":"eosio"}' -p eosio@active

Validation (Postman): Verify new actions exist using https://fiotestnet.greymass.com/v1/chain/get_actions

Create the new fees

Note: A new fee will need a default value; set fee on TestNet. BPs will need to perform this action on MainNet (to update BP fee and multiplier tables)

FIP-41

Not applicable for this release

FIP-17

./clio -u http://localhost:8889 push action fio.fee createfee '{"end_point":"wrap_fio_tokens","type":"0","suf_amount":"390000000"}' -p fio.fee@active

./clio -u http://localhost:8889 push action fio.fee createfee '{"end_point":"wrap_fio_domain","type":"0","suf_amount":"390000000"}' -p fio.fee@active

NOTE: No fees for unwrapping as fees are collected upfront on wrap

Validation:

  • Postman

    • https://fiotestnet.greymass.com/v1/chain/get_fee, {“end_point”:”wrap_fio_domain”}

    • https://fiotestnet.greymass.com/v1/chain/get_table_rows

  • BlockPane Dev Tools

Create account and set permissions (Part 1)

  1. Create a file called “payload.json” with the following content:

    { "creator": "eosio", "name": "fio.oracle", "owner": { "threshold": 1, "keys": [], "accounts": [ { "permission": { "actor": "eosio", "permission": "active" }, "weight": 1 } ], "waits": [] }, "active": { "threshold": 1, "keys": [], "accounts": [ { "permission": { "actor": "eosio", "permission": "active" }, "weight": 1 }, { "permission": { "actor": "fio.oracle", "permission": "eosio.code" }, "weight": 1 } ], "waits": [] } }
  2. Create a new account with those permissions.

./clio -u http://localhost:8889 push action -j -s -d eosio newaccount payload.json -p eosio@active

Validation:

  • View account FIP-17 Account Creation mSig and compare to FIO System account (specifically permissions)

  • System account may be retrieved via Postman at https://fiotestnet.greymass.com/v1/chain/get_account

MSIGs - Batch #2

Set new account to be privileged and update RAM limit

Set the account to be privileged.

./clio -u http://localhost:8889 push action -j eosio setpriv '["fio.oracle",1]' -p eosio@active

Validation:

  • Postman

    • https://fiotestnet.greymass.com/v1/chain/get_account

      • account = fio.oracle

      • Expected Result: "privileged": true

Remove RAM limits on the new account, this may be called by eosio, and fio.system only!

./clio -u http://localhost:8889 push action -j eosio setnolimits '{"account":"fio.oracle"}' --permission eosio@active

Validation:

  • Postman

    • https://fiotestnet.greymass.com/v1/chain/get_account

      • account = fio.oracle

      • Expected Result: "ram_quota": -1

Testnet example: https://fio-test.bloks.io/msig/un3emex141fp/setpriv.a

MSIGS - Batch #3

Deploy EOSIO system contract (If updated)

./clio -u http://localhost:8889 set contract -j eosio /opt/FIO/bin/Contracts/last/fio.system fio.system.wasm fio.system.abi -p eosio@active

Validation: See Validation Notes for contract validation

Deploy any new system contracts and set each contract on the new account

Deploy new contracts

FIP-41

Not applicable for this release

FIP-17

./clio -u http://localhost:8889 set contract -j fio.oracle /opt/FIO/bin/Contracts/last/fio.oracle -p fio.oracle@active

Validation: See Validation Notes for contract validation

Deploy updated contracts

[Example] ./clio.sh -u http://localhost:8889 set contract fio.address /opt/FIO/bin/Contracts/last/fio.address/ -p fio.address@active

[Note] The target contract directory should contain the “updated” contracts to be set

FIO-41

./clio -u http://localhost:8889 set contract -j eosio /opt/FIO/bin/Contracts/last/fio.system fio.system.wasm fio.system.abi -p eosio@active

./clio -u http://localhost:8889 set contract -j fio.address /opt/FIO/bin/Contracts/last/fio.address fio.address.wasm fio.address.abi -p fio.address@active

./clio -u http://localhost:8889 set contract -j fio.reqobt /opt/FIO/bin/Contracts/last/fio.request.obt fio.request.obt.wasm fio.request.obt.abi -p fio.reqobt@active

./clio -u http://localhost:8889 set contract -j fio.token /opt/FIO/bin/Contracts/last/fio.token fio.token.wasm fio.token.abi -p fio.token@active

./clio -u http://localhost:8889 set contract -j fio.treasury /opt/FIO/bin/Contracts/last/fio.treasury fio.treasury.wasm fio.treasury.abi -p fio.treasury@active

./clio -u http://localhost:8889 set contract -j fio.staking /opt/FIO/bin/Contracts/last/fio.staking fio.staking.wasm fio.staking.abi -p fio.staking@active

FIP-17

./clio -u http://localhost:8889 set contract -j fio.tpid /opt/FIO/bin/Contracts/lasts/fio.tpid fio.tpid.wasm fio.tpid.abi -p fio.tpid@active

Marketplace Update

./clio -u http://localhost:8889 set contract -j fio.escrow /opt/FIO/bin/Contracts/last/fio.escrow fio.escrow.wasm fio.escrow.abi -p fio.escrow@active

MSIGS - Batch #4

regoracle is specific to FIO Wrapping

Testnet

eosusa@fiotestnet:

./clio -u http://localhost:8889 push action fio.oracle regoracle '{"oracle_actor":"41ksaga2vybn","actor":"eosio"}' -p eosio@active

eosiodetroit@fiotestnet:

./clio -u http://localhost:8889 push action fio.oracle regoracle '{"oracle_actor":"yz5p4rb4begx","actor":"eosio"}' -p eosio@active

fiotribe@fiotestnet:

./clio -u http://localhost:8889 push action fio.oracle regoracle '{"oracle_actor":"gws1hlwlqhq1","actor":"eosio"}' -p eosio@active

Mainnet

bp@eosusa:

./clio -u http://localhost:8889 push action fio.oracle regoracle '{"oracle_actor":"mak1ed5b4k1v","actor":"eosio"}' -p eosio@active

eosio@detroit:

./clio -u http://localhost:8889 push action fio.oracle regoracle '{"oracle_actor":"jnmwi5vu3hle","actor":"eosio"}' -p eosio@active

bp@fiotribe:

./clio -u http://localhost:8889 push action fio.oracle regoracle '{"oracle_actor":"hkzfdcxe11us","actor":"eosio"}' -p eosio@active