LaborX sidechain: deployment migrations
Provides set of useful constants, functions and scripts to access and deploy LaborX Token Bridge (sidechain) smart contracts.
Structure
There are couple of exported scopes that should be mentioned:
- provides constants and utility functions to access basic functionality
-
GlobalDeployedContractNames
andDeployedContractNames
- allows to access deployed contracts by names -
ContractsStorageCrates
andGlobalContractStorageCrates
- storage crate names, defines scopes of stored data of smart contracts -
getDeployedArtifactsPath(contractEnv)
- allows to get deployed addresses path according to neededcontractEnv
parameter. SeeSmartContractsAddressBuildEnvironment
for available options. -
getDeployedArtifactsPathFromNodeEnv()
- allows to get deployed addresses path based on provided env variable -
defaultReadContractKeys
anddefaultWriteContractKeys
could be used for getting default read/write for deployment roles
-
-
Deployment
- scripts for smart contracts deployment
Usage (as lib)
Environment variable
Look at `.example.env` for full list of possible env variables
Setup in .env
SC_ADDRESSES_BUILD_ENV
variable to one of
SC_ADDRESSES_BUILD_ENV=production
# SC_ADDRESSES_BUILD_ENV=beta
# SC_ADDRESSES_BUILD_ENV=dev
Importing
import { Constants } from "@laborx/sidechain-migrations";
const {
getDeployedArtifactsPath,
getDeployedArtifactsPathFromNodeEnv,
SmartContractsAddressBuildEnvironment
} = Constants;
/*
Get deployed addresses path for 'beta' build environment
*/
const deployedAddressesPath = getDeployedArtifactsPath(
SmartContractsAddressBuildEnvironment.beta
);
/*
If provided you can use setup environment variable and use it for getting build environment
*/
const deployedAddressePath = getDeployedArtifactsPathFromNodeEnv();
Usage (as a sidechain migrations' sources)
Repository provides also a set of migrations and scripts to fully deploy token bridge functionality to an Ethereum network.
Migration steps
1. Define already deployed smart contract addresses
The next smart contracts addresses (and key name) could be provided to reduce resources during deployment:
- contract:
MultiEventsHistory
- key name:MultiEventsHistory
- contract:
StorageManager
- key name:ChronoBankStorageManager
- contract:
Storage
- key name:ChronoBankStorage
- contract:
ChronoBankPlatform
- key name:ChronoBankPlatform
- contract:
ChronoBankAssetProxy
- key name:ChronoBankAssetProxy
- contract:
Roles2Library
- key name:Roles2Library
2. Run sidechain migrations
It will take into account already deployed smart contracts and deploy only needed code.
yarn migrate --network [network name]
Scripts
Provides a set of truffle-based scripts to manage more frequent functions
- register (add) token pairs in
TokenBridgeTracker
smart contract - to allow cross-chain operations with provided tokens. Need to set up addresses first.
yarn exec:truffle:bridge:tokens:add --network [network name]
- unregister (remove) token pairs from
TokenBridgeTracker
smart contract - to forbid cross-chain operations with provided tokens. Need to set up addresses first.
yarn exec:truffle:bridge:tokens:remove --network [network name]
Tests
After executed migrations it is recommended to run tests on target network to make sure that all required properties of deployed smart contracts are set correctly, expected addresses have valid access rights and smart contracts' communication could proceed after the migration.
Sidechain tests
yarn test:ci:state --network [network name]
Development
Build full package (smart contracts + typescript)
yarn build
Compile contracts
yarn contracts:compile
Compile typescript sources
yarn build:tsc
Run ganache
yarn ganache
Load ganache state from the archive
yarn migrate:unpack
Save current state into the archive
yarn migrate:save
Run tests on ganache archive's version
yarn test
Run tests (for CI)
yarn test:ci