Adding new contracts to FIO Protocol Dev Environment

It is recommend to branch from develop on all repositories when developing to stay on pace with code updates

1 - Set_code and set_abi permissions:

The contract name must be added to the authorization lists for set_abi and set_code actions.

FIO Contracts -

Create new contract account entry

Insert account authorization


2 - Set_code authorizations are defined in the fio core library

FIO Core library -

Add your contract name here:

Add the contract name as an authorizer

3 - Update fio.devtools

FIO Devtools launcher -

Add a new account for the contract You can use the same public keys that are already loaded for testing. A new private key can be used ass well, just import here:

System Contracts

If you need a contract loaded at chain genesis, add as the final step of script

New feature contracts

Deploy the contract on It should be the final contract loaded in the list and by the launcher:

4 - Action list

System Contracts

If the new contract is a system contract and is loaded in of fio.devtools and needs to be initialized at genesis, the call to add the contract action will need to be added to the chain controller:

New feature contracts

Simply call addaction for the new contract action (can be called before or after contract has been loaded.)

5 - Wrapping up

Rebuild the FIO blockchain with scripts/, and install with

Run fio.devtools options 3 to clear existing configuring, option 2 to build the contract changes, and then finally option 1 to initialize the new chain with the changes supporting the new contract


On the FIO Testnet and Mainnet, the contract owner will always be an multisig account controlled by all active block producers. On the development and test environments, these accounts are simply loaded into the local wallet in fio.devtools.