Deployment Procedure
Below mentioned script used to build, deploy and Verify the PERI Finance Source code to a Different testnet and mainnet Network.
1. Build
This will compile bytecode and ABIs for all .sol files found in node_modules and the contratcs folder. It will output them in a compiled folder in the given build path mentioned below, along with the flattened source files under the folder flattened
2. Deploy
This will deploy (or reuse) all of the contracts listed in the contract-flags input file, as well as perform initial connections between the contracts.
CLI Options
-a, --add-new-pynths
Whether or not any new pynths in the pynths.json file should be deployed if there is no entry in the config file.-b, --build-path [value]
Path for built files to go. (default of./build
- relative to the root of this repo). The folderscompiled
andflattened
will be made under this path and the respective files will go in there.-c, --contract-deployment-gas-limit <value>
Contract deployment gas limit (default: 7000000 (7m))-d, --deployment-path <value>
Path to a folder that has your input configuration file (config.json
), the synths list (synths.json
) and where yourdeployment.json
file will be written (and read from if it currently exists).-g, --gas-price <value>
Gas price in GWEI (default: "1")-m, --method-call-gas-limit <value>
Method call gas limit (default: 150000)-n, --network <value>
The network to run off. One of mainnet, kovan. (default: "kovan")-o, --oracle <value>
The address of the oracle to use.-f, --fee-auth <value>
The address of the fee Authority to use for feePool. --oracle-gas-limit
Examples
3. Verify
To verify the contracts on Etherscan (by uploading the flattened source files and ABIs).
4. Nominate New Owner
For all given contracts, will invoke nominateNewOwner for the given new owner;
5. Owner Actions
It assist owner take ownership of nominated contracts and run any deployment tasks deferred to them.
6. Remove Pynths
This script attempt to remove all given synths from the PERI finance contract (as long as they have total supply of 0 and update config.json and pynths.json for the deployment folder.
7. Replace Pynths
This will attempt to replace all given synths with a new given subclass It does this by disconnecting the existing TokenState for the Pynth and attaching it to the new one.
7. Purge Pynths
Will attempt purge the given synth with all token holders it can find. Uses the list of holders from mainnet, and as such won't do anything for other networks.
8. Release
Will initiate the PeriFinance release process, publishing the PeriFinance npm
module and updating all dependent projects in GitHub and npm
.
9. Staking Rewards
Will deploy an instance of StakingRewards.sol with the configured stakingToken and rewardsToken in rewards.json. Then run node publish verify
Branching
For PeriFinance
repo, we are using the following branch mapping:
alpha
isKOVAN
beta
isRINKEBY
rc
isROPSTEN
master
isMAINNET
PRs should start being merged into develop
then deployed onto KOVAN
, then merged into staging
once deployed for releasing onto rinkeby
and ropsten
for staging into a mainnet
release. These can be done multiple times for each branch, as long as we keep these up to date.
Versioning
Using semantic versioning (semver): v[MAJOR].[MINOR].[PATCH]-[ADDITIONAL]
MAJOR
stipulates an overhaul of the Solidity contractsMINOR
are any changes to the underlying Solidity contractsPATCH
are for any JavaScript or deployed contract JSON changesADDITIONAL
are for testnet deployments-alpha
is forKovan
-beta
follows alpha, and containsRinkeby
.-rc[N]
follows beta, and contrainsRopsten
.N
starts at0
and can be incremented until we are ready to release without the suffix.
When adding new pynths
In the environment folder you are deploying to, add the synth key to the
pynths.json
file. If you want the synth to be purgeable, addsubclass: "PurgeablePynth"
to the object.[Optional] Run
build
if you've changed any source files, if not you can skip this step.Run
deploy
as usual but add the--add-new-pynths
flagRun
verify
as usual.
Last updated