[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: https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/478904347
FIP-17a and FIP-17b Rollout guide: https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/edit-v2/495517777
Items of Interest:
TestNet mSig Proposals:
Execution Notes:
BP may execute msigs via links above*
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
Point to TestNet and set contract=fio.fee and table=fio.fee
Create account and set permissions (Part 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": [] } }
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: Fastest Block Explorer and Wallet
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