@laborx/sidechain-migrations v1.1.0
LaborX sidechain: deployment migrations
Provides set of useful constants, functions and scripts to access and deploy LaborX sidechain smart contracts.
Install
npm install -D @laborx/sidechain-migrationsStructure
There are couple of exported scopes that should be mentioned:
- provides constants and utility functions to access basic functionality
GlobalDeployedContractNamesandDeployedContractNames- allows to access deployed contracts by namesContractsStorageCratesandGlobalContractStorageCrates- storage crate names, defines scopes of stored data of smart contractsnetworks,isNetwork(id,network)andcontainsNetwork(id, networks)to check connected networkgetDeployedArtifactsPath(contractEnv)- allows to get deployed addresses path according to neededcontractEnvparameter. SeeSmartContractsAddressBuildEnvironmentfor available options.getDeployedArtifactsPathFromNodeEnv()- allows to get deployed addresses path based on provided env variabledefaultReadContractKeysanddefaultWriteContractKeyscould be used for getting default read/write for deployment -roles
Deployment- scripts for smart contracts deployment
Usage (as a lib)
Environment variable
Look at `.example.env` for full list of possible env variablesSetup in .env SC_ADDRESSES_BUILD_ENV variable to one of
SC_ADDRESSES_BUILD_ENV=production
# SC_ADDRESSES_BUILD_ENV=beta
# SC_ADDRESSES_BUILD_ENV=devImporting
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 base functionality to an Ethereum network with a custom consensys (PoA).
- full sidechain migrations
yarn migrate --network [network name]- (optional) 'post' token bridge migrations
yarn migrate:post-token-bridge --network [network name]Scripts
Provides a set of truffle-based scripts to manage more frequent functions
- add addresses to
ServiceDestinatinWhitelistsmart contract - to allow free transactions to those addresses. Need to set up addresses first.
yarn exec:truffle:service-whitelist:add --network [network name]- remove addresses to
ServiceDestinatinWhitelistsmart contract - to forbid free transactions to those addresses (or remove addresses after new deployments). Need to set up addresses first.
yarn exec:truffle:service-whitelist: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]Token bridge tests
In case of token bridge presence it is also possible to run tests to make sure that expected addresses have valid access rights.
yarn test:dev:token-bridge --network [network name]Development
Build full package (smart contracts + typescript)
yarn buildCompile contracts
yarn contracts:compileCompile typescript sources
yarn build:tscRun ganache
yarn ganacheLoad ganache state from the archive
yarn migrate:unpackSave current state into the archive
yarn migrate:saveRun tests on ganache archive's version
yarn testRun tests (for CI)
yarn test:ci6 years ago