...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Overview
This document covers the upgrade to the FIO Protocol release of Fio 3.5 (core) and Fio.Contracts 2.9.
Guidance
To alert the reader of anything of note before proceeding; Include descriptive text on execution order, things of note.
Rollout Guides
For this release, the mSigs will be executed in 3 parts, as noted by in the section headings: Batch #1, and Batch #2, and Batch #3.
Batch #2 msigs may only be executed after Batch #1 msigs are executed since they need the fio.perms account to exist in order to set the privilege and RAM limits.
FIPS & Rollout Guides
https://github.com/fioprotocol/fips
FIP-36 Deployment and rollout guide : FIO Fio (Core) Update (getteraccount public key)
FIP-37 Deployment and rollout guide : FIO Fio Contracts Update : Contracts: fio.system(pub key limit)
FIP-38 Deployment and rollout guide : FIOFio/FIO.Fio Contracts Update : fio.system, fio.token. Actions: newfioacc, Fees: new_fio_chain_account(new chain account, fee)
FIP-39 Deployment and rollout guide : FIO.Contracts: fio.address, Actions: updcryptkey, FeesFio Contracts Update (encryption pub key)
[FIP-40] Deployment and rollout guide : Fio/Fio Contracts (private domain address reg)
[FIP-42] Deployment and rollout guide : FIOFio/FIO.Contracts Update: fio.address, Actions: regdomaddFio Contracts Update (single trx handle and domain registration)
[FIP-43] Deployment and rollout guide : FIO Update Fio Update (get_fee update)
[FIP-46] Deployment and rollout guide : FIO Fio Update (new timeout for table lookupstable lookup performance update)
[FIP-47] Deployment and rollout guide : FIO Contracts Update: fio.system, Actions: regproducer
Items of Interest:
TestNet mSig Proposals:
Capture from Telegram TestNet channel
Execution Notes:
BP may execute msig 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’
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
Add new actions
Document new actions as well as validation here
[Example] ./clio.sh Fio Contracts Update (use regproducer to update info)
Add new actions (Batch #1)
./clio -u http://localhost:8889 push action eosio addaction '{"action":"newfioacc","contract":"eosio","actor":"eosio"}' --permission eosio
./clio -u http://localhost:8889 push action eosio addaction '{"action":"regdomadd","contract":"fio.address","actor":"eosio"}' --permission eosio
./clio -u http://localhost:8889 push action eosio addaction '{"action":"updcryptkey","contract":"fio.address","actor":"eosio"}' --permission eosio
./clio -u http://localhost:8889 push action eosio addaction '{"action":"addperm","contract":"fio.perms","actor":"eosio"}' --permission eosio
./clio -u http://localhost:8889 push action eosio addaction '{"action":"remperm","contract":"fio.perms","actor":"eosio"}' --permission eosio
./clio -u http://localhost:8889 push action eosio addaction '{"action":"listdomainclearperm","contract":"fio.escrowperms","actor":"eosio"}' --p permission eosio
Validation (Postman): Verify new actions exist using https://fiotestnet.greymass.com/v1/chain/get_actions
Testnet example: https://fio-test.bloks.io/msig/gws1hlwlqhq1/fioaddaction
Create the new fees
Document new fees as well as validation here
[Example] ./clio.sh push action
Create new fees (Batch #1)
./clio -u http://localhost:8889 push action -f fio.fee createfee '{"end_point":"new_fio_chain_account","type":"0","suf_amount":"2000000000"}' --permission fio.fee@active
./clio -u http://localhost:8889 push action -f fio.fee createfee '{"end_point":"update_encrypt_key","type":"1","suf_amount":"40000000000"}' --permission fio.fee@active
./clio -u http://localhost:8889 push action -f fio.fee createfee '{"end_point":"add_fio_permission","type":"0","suf_amount":"3000000000"}' --permission fio.fee@active
./clio -u http://localhost:8889 push action -f fio.fee createfee '{"end_point":"remove_fio_permission","type":"0","suf_amount":"1000000000"}' --permission fio.fee@active
./clio -u http://localhost:8889 push action -f fio.fee createfee '{"end_point":"listregister_fio_domain_address","type":"0","suf_amount":"3048044021183130919351"}' --p permission fio.feefee@active
Validation:
Postman
https://fiotestnet.greymass.com/v1/chain/get_fee, {“end_point”:”wrap_fio_domain””new_fio_chain_account”}
https://fiotestnet.greymass.com/v1/chain/get_fee, {“end_point”:”update_encrypt_key”}
BlockPane Dev Tools
Point to TestNet and set contract=fio.fee and table=fio.fee
Testnet example: https://fio-test.bloks.io/msig/gws1hlwlqhq1/fiocreatefee
fiofees
Create account and set permissions (
...
Batch #1)
(Part 1 This must be done before Part 2 msigs can be Batch #2 msigs are created)
First, create a file called “payload.json” with the following permissions:
Code Block |
---|
{ "creator": "eosio", "name": "fio.escrowperms", "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.escrowperms", "permission": "eosio.code"}, "weight": 1 }], "waits": [] } } |
Next create a new account with those permissions.
[Example] ./clio .sh -u http://localhost:8889 push action -j -s -d eosio newaccount newaccount_ payload.json -p eosio@active
Validation:
View account Insert Account Creation mSig here and compare to FIO System account (specifically permissions)
System account may be retrieved via Postman at https://fiotestnet.greymass.com/v1/chain/get_account
...
Add additional new action [See BD-4580] (Batch #2)
./clio -u http://localhost:8889 push action eosio addaction '{"action":"burndomain","contract":"fio.address","actor":"eosio"}' --permission eosio
Create account to be privileged and set RAM limits. (
...
Batch #2)
Set the account to be privileged.
[Example] ./clio .sh -u http://localhost:8889 push action eosio setpriv '["fio.escrowperms",1]' -p eosio@active
Validation:
Postman
https://fiotestnet.greymass.com/v1/chain/get_account
account = fio.oracleperms
Expected Result: "privileged": true
Remove RAM limits on the new account, this may be called by eosio, and fio.system only!
[Example] ./clio .sh -u http://localhost:8889 push action eosio setnolimits '{"account":"fio.escrowperms"}' --permission eosio@active
Validation:
Postman
https://fiotestnet.greymass.com/v1/chain/get_account
account = fio.oracleperms
Expected Result: "ram_quota": -1
Testnet example: https://fio-test.bloks.io/msig/un3emex141fp/setpriv.a
Deploy EOSIO system contract
...
Deploy EOSIO system contract (Batch #3)
./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
Deploy any new system contracts and set each contract on the new account (Batch #3)
./clio -u http://localhost:8889 set contract -j fio.perms /opt/FIO/bin/Contracts/last/fio.system/ perms -p eosiofio.perms@active
Validation: See Validation Notes above for contract validation
Testnet example: https://fio-test.bloks.io/msig/bsbdk2lectan/updfiosys
Set the contract on the new account
[Example] ./clio.sh set contract
Set all other contracts (Batch #3)
./clio -u http://localhost:8889 set contract -j eosio.msig /opt/FIO/bin/Contracts/last/eosio.msig eosio.msig.wasm eosio.msig.abi -p eosio.msig@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.escrow /opt/FIO/bin/Contracts/last/fio.escrow fio.escrow.wasm fio.escrow.abi -p fio.escrow@active
./clio -u http://localhost:8889 set contract -j fio.oracle /opt/FIO/bin/Contracts/last/fio.oracle fio.oracle.wasm fio.oracle.abi -p fio.escrow
Validation: See Validation Notes above for contract validation
Testnet example: https://fio-test.bloks.io/msig/bsbdk2lectan/crtfioesc
Set all other contracts
[Example] ./clio.sh set contract fio.address oracle@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.staking /opt/FIO/bin/Contracts/last/fio.staking fio.staking.wasm fio.staking.abi -p fio.staking@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.tpid /opt/FIO/bin/Contracts/last/fio.tpid fio.tpid.wasm fio.tpid.abi -p fio.tpid@active
./clio -u http://localhost:8889 set contract -j fio.treasury /opt/FIO/bin/Contracts/last/fio.address/ treasury fio.treasury.wasm fio.treasury.abi -p fio.addresstreasury@active
Validation: See Validation Notes above for contract validation
Initialize the Marketplace Account (must be done after escrow contract is set)
This initializes the marketplace TESTNET admin account. Thomas will need to create a Mainnet account as well.
TESTNET: ./clio.sh push action fio.escrow setmrkplcfg '{"actor":"p325sqluvj4u", "listing_fee": "5000000000", "commission_fee": 3, "max_fee": "1000000000", "e_break": 0}' -p eosio@active
MAINNET: ./clio.sh push action fio.escrow setmrkplcfg '{"actor":"q3k31xlj413z", "listing_fee": "5000000000", "commission_fee": 3, "max_fee": "1000000000", "e_break": 0}' -p eosio@active
Validation: check fio.escrow mrkplconfigs table to confirm account was added
Testnet example:https://fio-test.bloks.io/msig/bsbdk2lectan/setmrkplcfg
TODO: Remove once script is finalized.
Examples
Fee: Testnet example: https://fio-test.bloks.io/msig/gws1hlwlqhq1/fiocreatefee
New Account: Testnet example: https://fio-test.bloks.io/msig/bsbdk2lectan/crtfioescrow2
Privileges: Testnet example: https://fio-test.bloks.io/msig/un3emex141fp/setpriv.a
Contract Update: Testnet example: https://fio-test.bloks.io/msig/bsbdk2lectan/updfiosys
Set contract on Account: Testnet example: https://fio-test.bloks.io/msig/bsbdk2lectan/crtfioesc
Marketplace Account: Testnet example: https://fio-test.bloks.io/msig/bsbdk2lectan/setmrkplcfg
Items of Interest:
TestNet mSig Proposals:
Capture from Telegram TestNet channel
Execution Notes:
BP may execute msig via links above
Validation Notes:
Anchor | ||||
---|---|---|---|---|
|
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’
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