...
The DevNet build, and deploy process follows the LocalNet Release process (steps 1-4). See FIO LocalNet Release Notes. In addition, perform the following steps on the devnet master node to spin up the nodes, devnet-a, devnet-b and devnet-c. Note that this requires access to the AWS Management Console for the DevNet cluster; to start (and stop) the DevNet cluster - see Devnet - FIO Operations.
The DevNet boot node, devnet.fioprotocol.io, has the following directory layout at /home/ubuntu,
...
As mentioned above fork testing involves updating one or more BP nodes. In the DevNet environment, a BP node may be solely a block-producing node or have plugins installed, i.e. chain_api, net_api, db_size_api allowing further capability. Regardless nodes in the DevNet environment are updated in groups of 3, or 6, and may be updated either by The boot node, uses the default install process and fio.devtools to run 3 BPs, The remote nodes, are updated using the devnet tool and host 6 BPs each. Regardless the boot node is updated by building and installing a new FIO Core and using fio.devtools to start the chain or by building an updated chain and and the remote nodes are updated using the devnet tool to ‘upgrade’ the remote nodesthem (from the boot node).
Build, install and run the current version of the FIO chain as described in FIO LocalNet Release Notes.
Stop and upgrade all remote nodes as described above in step 4.
...
Build, and install an updated version of the FIO chain as described in FIO LocalNet Release Notes.
Stop the current instance of FIO using fio.devtools start.sh, by nuking the chain
Start the updated instance of FIO using fio.devtools start.sh, with a new build of the contracts. Note, one may also run the updated chain, and apply the release script to update the contracts.
Using the devnet tool, upgrade one of the remote nodes as follows,
Stop the remote node using the command, “./devnet -f config.yml stop”, i.e.
./devnet -f a.yml stop
.Upgrade the remote node using the command, “./devnet -f config.yml -bin <FIO Install Dir>/bin/nodeos upgrade”, i.e.
./devnet -f config.yml -bin /home/ubuntu/fio/3.4/bin/nodeos upgrade
Note, the upgrade command will push out a new nodeos binary to the remote server and that this may be accomplished without actually stopping the “old” chain.
Start fiotop (as fiotop is in the path, type fiotop and hit Enter).
Verify that the BPs continue to process blocks. Note that any stoppage will indicate a forking change. One may also montor the logs on any of the servers hosting block producers.
Run the smoke test from any client (against an api node, in this case the boot node).
Repeat this process for server b, i.e. the associated to b.yml.
Setup and Deployment (Cut from Devnet to reduce duplication in readme, wiki, release procedures)
See Github Readme for usage documentation: https://github.com/dapixio/fio-devnet
‘devnet’ itself is a command-line tool for remotely managing a remote node, intended for use on distributed development networks. Currently, our default setup consists of a primary node and 3 cluster nodes across multiple regions on AWS.
example-config.yml -
Rename this file config.yml
and configure the file to match the needs of the specific server. Note that the devtools uses the following key for the faucet account:
Faucet Key: 5KF2B21xT5pE5G3LNA6LKJc6AP2pAd2EnfpAUrJH12SFV8NtvCD
Using the default initial install is fine but remember to use the devnet update command before starting the cluster nodes.
Fork Testing
Checkout the branch you’re attempting to test, build and install using the scripts provided inside the fio/scripts
directory. Once the new fio core has been installed run the following commands on 1 or more nodes:
./devnet -f a.yml -bin ~/fio/3.0/bin/nodeos upgrade
./devnet -f a.yml register
This command will stop, update, start and resync the node. To verify syncing, check the nodeos log file located on each node.
./devnet -f a.yml -out nodeos.log log
tail nodeos.log
Contract Deployment
Updating contracts is the same on devnet as it is when updating on a local dev launch. Use fio.devtools
and under the Post Actions
, select Update All Contracts
This will use the eosio permissions and update the contracts to the checked out branch inside the ~/fio.contracts
directory.