TODO
FIP-39 indicates a RAM increase of 2560 on fio.address (updcryptkey); Is there anything to do here?
...
FIP-42 indicates new fee for register_fio_domain_address, however, none is specified, what is default?
fio.contracts build.sh does not copy fio.perms.abi to build directory
Overview
This document covers the upgrade to the FIO Protocol release of Fio 3.5 (core) and Fio.Contracts 2.9.
...
Batch #2 msigs can only be created after Batch #1 msigs are executed since they need the fio.perms account to exist in order to set the privilege and RAM limits.
...
[FIP-47] Deployment and rollout guide : 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
...
Validation (Postman): Verify new actions exist using g
Create the 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":"register_fio_domain_address","type":"0","suf_amount":"1000000000"}' --permission fio.fee@active
Validation:
Postman
https://fiotestnet.greymass.com/v1/chain/get_fee, {“end_point”:”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
Create account and set permissions (Batch #1)
(This must be done before Batch #2 msigs are created)
First, create a file called “payload.json” with the following permissions:
...
./clio -u http://localhost:8889 push action -j -s -d eosio 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
Create account to be privileged and set RAM limits. (Batch #2)
Set the account to be privileged.
./clio -u http://localhost:8889 push action eosio setpriv '["fio.perms",1]' -p eosio@active
Validation:
Postman
https://fiotestnet.greymass.com/v1/chain/get_account
account = fio.perms
Expected Result: "privileged": true
...
./clio -u http://localhost:8889 push action eosio setnolimits '{"account":"fio.perms"}' --permission eosio@active
Validation:
Postman
https://fiotestnet.greymass.com/v1/chain/get_account
account = fio.perms
Expected Result: "ram_quota": -1
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.perms -p fio.perms@active
...
Set all other contracts (Batch #3)
./clio -u http://localhost:8889 set contract -j fioeosio.address msig /opt/FIO/bin/Contracts/last/fioeosio.address fiomsig eosio.addressmsig.wasm fioeosio.addressmsig.abi -p fioeosio.address@activemsig@active
./clio -u http://localhost:8889 set contract -j fio.reqobt address /opt/FIO/bin/Contracts/last/fio.reqobt address fio.reqobtaddress.wasm fio.reqobtaddress.abi -p fio.reqobt@activeaddress@active
./clio -u http://localhost:8889 set contract -j fio.token escrow /opt/FIO/bin/Contracts/last/fio.token escrow fio.tokenescrow.wasm fio.tokenescrow.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.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.treasury fio.treasury.wasm fio.treasury.abi -p fio.treasury@active
Validation: See Validation Notes above for contract validation
...
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
...