Skip to content

Commit

Permalink
Update deploy script
Browse files Browse the repository at this point in the history
  • Loading branch information
Anyhowclick committed Apr 18, 2021
1 parent b672d4f commit 5b92be2
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 11 deletions.
61 changes: 56 additions & 5 deletions deployment/katanaDeployment.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ require('@nomiclabs/hardhat-ethers');
const inquirer = require('inquirer');
const fs = require('fs');
const path = require('path');
const configPath = path.join(__dirname, './katana_input.json');
const configPath = path.join(__dirname, './katana_mainnet_input.json');
const configParams = JSON.parse(fs.readFileSync(configPath, 'utf8'));

let gasPrice;
Expand All @@ -19,11 +19,14 @@ async function fetchNextGasPrice(BN, message) {
gasPrice = new BN.from(gasPrice).mul(new BN.from(10).pow(new BN.from(9)));
}

async function verifyContract(hre, contractAddress, ctorArgs) {
await hre.run('verify:verify', {
async function verifyContract(hre, contractAddress, ctorArgs, contract) {
let args = {
address: contractAddress,
constructorArguments: ctorArgs,
});
constructorArguments: ctorArgs
};

if (contract != undefined) args.contract = contract;
await hre.run('verify:verify', args);
}

let kncAddress;
Expand All @@ -41,6 +44,7 @@ task('deployGovInfra', 'deploys staking, governance, voting power strategy and e
const BN = ethers.BigNumber;
const [deployer] = await ethers.getSigners();
deployerAddress = await deployer.getAddress();
console.log(`deployer: ${deployerAddress}`);

// contract deployment
await fetchNextGasPrice(BN, 'staking deployment');
Expand Down Expand Up @@ -98,15 +102,46 @@ task('deployGovInfra', 'deploys staking, governance, voting power strategy and e
await votingPowerStrategy.deployed();
console.log(`votingPowerStrategy address: ${votingPowerStrategy.address}`);

await fetchNextGasPrice(BN, 'treasury pool deployment');
const TreasuryPool = await ethers.getContractFactory('TreasuryPool');
const treasuryPool = await TreasuryPool.deploy(deployerAddress, [], {gasPrice: gasPrice});
await treasuryPool.deployed();
console.log(`treasury pool address: ${treasuryPool.address}`);

await fetchNextGasPrice(BN, 'reward distribution deployment');
const RewardDist = await ethers.getContractFactory('RewardsDistributor');
const rewardDist = await RewardDist.deploy(daoOperator, {gasPrice: gasPrice});
await rewardDist.deployed();
console.log(`reward distribution address: ${rewardDist.address}`);

await fetchNextGasPrice(BN, 'reward pool deployment');
const RewardPool = await ethers.getContractFactory('RewardPool');
const rewardPool = await RewardPool.deploy(longExecutor.address, [rewardDist.address], {gasPrice: gasPrice});
await rewardPool.deployed();
console.log(`reward pool address: ${rewardPool.address}`);

await fetchNextGasPrice(BN, 'liquidation strategy deployment');
const LiqStrat = await ethers.getContractFactory('NoSwappingLiquidationStrategy');
const liqStrat = await LiqStrat.deploy(longExecutor.address, treasuryPool.address, rewardPool.address, {gasPrice: gasPrice});
await liqStrat.deployed();
console.log(`liquidation strategy address: ${liqStrat.address}`);

// export addresses
exportAddresses({
staking: kyberStaking.address,
governance: kyberGovernance.address,
shortExecutor: shortExecutor.address,
longExecutor: longExecutor.address,
votingPowerStrategy: votingPowerStrategy.address,
treasury: treasuryPool.address,
rewardDistribution: rewardDist.address,
rewardPool: rewardPool.address,
noSwapLiqStrategy: liqStrat.address
});

await fetchNextGasPrice(BN, 'approve liq strat in treasury pool');
await treasuryPool.authorizeStrategies([liqStrat.address], {gasPrice: gasPrice});

// set executors and voting power strategy in governance
await fetchNextGasPrice(BN, 'authorizing executors in governance');
await kyberGovernance.authorizeExecutors([shortExecutor.address, longExecutor.address], {gasPrice: gasPrice});
Expand All @@ -122,6 +157,8 @@ task('deployGovInfra', 'deploys staking, governance, voting power strategy and e
await kyberStaking.transferAdminQuickly(longExecutor.address, {gasPrice: gasPrice});
await fetchNextGasPrice(BN, 'transferring governance admin to long executor');
await kyberGovernance.transferAdminQuickly(longExecutor.address, {gasPrice: gasPrice});
await fetchNextGasPrice(BN, 'transferring treasury admin to long executor');
await treasuryPool.transferAdminQuickly(longExecutor.address, {gasPrice: gasPrice});

console.log('verify contracts...');
// verify addresses
Expand Down Expand Up @@ -150,6 +187,20 @@ task('deployGovInfra', 'deploys staking, governance, voting power strategy and e
longExecutorConfig.minimumQuorum,
]);
await verifyContract(hre, votingPowerStrategy.address, [kyberGovernance.address, kyberStaking.address]);
await verifyContract(
hre,
treasuryPool.address,
[deployerAddress, []],
"contracts/treasury/TreasuryPool.sol:TreasuryPool"
);
await verifyContract(hre, rewardDist.address, [daoOperator]);
await verifyContract(
hre,
rewardPool.address,
[daoOperator, [rewardDist.address]],
"contracts/reward/RewardPool.sol:RewardPool"
);
await verifyContract(hre, liqStrat.address, [daoOperator, treasuryPool.address, rewardPool.address]);
console.log('setup completed');
process.exit(0);
}
Expand Down
27 changes: 27 additions & 0 deletions deployment/katana_mainnet_input.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"knc": "0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202",
"epochPeriod": 1209600,
"starttime": 1619507227,
"shortExecutor": {
"delay": 43200,
"gracePeriod": 345600,
"minimumDelay": 3600,
"maximumDelay": 86400,
"minVoteDuration": 345600,
"maxVotingOptions": 8,
"voteDifferential": 1,
"minimumQuorum": 400
},
"longExecutor": {
"delay": 604800,
"gracePeriod": 604800,
"minimumDelay": 86400,
"maximumDelay": 1209600,
"minVoteDuration": 604800,
"maxVotingOptions": 8,
"voteDifferential": 400,
"minimumQuorum": 1500
},
"daoOperator": "0xe6a7338cba0a1070adfb22c07115299605454713",
"outputFilename": "katana_mainnet_deployment.json"
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@
"minimumQuorum": 400
},
"daoOperator": "0xddf05698718ba8ed1c9aba198d38a825a64d69e2",
"outputFilename": "katana_ropsten_deployment.json"
}
"outputFilename": "katana_testnet_deployment.json"
}
8 changes: 4 additions & 4 deletions test/rewardDistributor.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ let maxIncrease = precisionUnits.div(new BN(5));
contract('RewardsDistributor', function (accounts) {
before('one time init', async () => {
admin = accounts[1];
tokenAmount = precisionUnits.mul(new BN(100000000));
tokenAmount = precisionUnits.mul(new BN(100000000000));
knc = await Token.new('Kyber Network Crystal', 'KNC', tokenAmount);
usdc = await Token.new('USD Coin', 'USDC', tokenAmount);
wbtc = await Token.new('Wrapped Bitcoin', 'WBTC', tokenAmount);
Expand All @@ -61,9 +61,9 @@ contract('RewardsDistributor', function (accounts) {
rewardsDistributor = await RewardsDistributor.new(admin);
await treasury.authorizeStrategies([rewardsDistributor.address], {from: admin});

// send 5M of each token and 1000 eth to treasury
tokenAmount = precisionUnits.mul(new BN(5000000));
ethAmount = precisionUnits.mul(new BN(1000));
// send 100M of each token and 2000 eth to treasury
tokenAmount = precisionUnits.mul(new BN(100000000));
ethAmount = precisionUnits.mul(new BN(2000));
await Promise.all(
tokens.map(async (token, index) => {
await token.transfer(treasury.address, tokenAmount);
Expand Down

0 comments on commit 5b92be2

Please sign in to comment.