Skip to content

Commit

Permalink
Merge pull request #218 from 67P/feature/217-rsk_deployment
Browse files Browse the repository at this point in the history
Refactor deployment script, add error handling
  • Loading branch information
raucao authored Jul 16, 2022
2 parents f6c302d + 42a2945 commit 1d1f2bb
Showing 1 changed file with 96 additions and 61 deletions.
157 changes: 96 additions & 61 deletions scripts/create-proxy.js
Original file line number Diff line number Diff line change
@@ -1,72 +1,107 @@
const { ethers, upgrades } = require("hardhat");
const path = require("path");
const fileInject = require("./helpers/file_inject.js");
const { ethers, upgrades } = require("hardhat"); const path = require("path"); const fileInject = require("./helpers/file_inject.js");

function handleError(error) {
console.error(error.message);
process.exit(1);
}

async function main() {
const network = await hre.ethers.provider.getNetwork();
const networkId = network.chainId;
console.log(`Deploying to network #${networkId}`);

const Contributor = await ethers.getContractFactory("Contributor");
const Contribution = await ethers.getContractFactory("Contribution");
const Token = await ethers.getContractFactory("Token");
const Reimbursement = await ethers.getContractFactory("Reimbursement");

const contributor = await upgrades.deployProxy(Contributor, []);
await contributor.deployed();
console.log("Contributor deployed to:", contributor.address);
console.log("...waiting for 1 confirmation");
await contributor.deployTransaction.wait();

const blocksToWait = 40320; // 7 days; 15 seconds block time
const contribution = await upgrades.deployProxy(Contribution, [blocksToWait]);
await contribution.deployed();
console.log("Contribution deployed to:", contribution.address);
console.log("...waiting for 1 confirmation");
await contribution.deployTransaction.wait();

const token = await upgrades.deployProxy(Token, []);
await token.deployed();
console.log("Token deployed to:", token.address);
console.log("...waiting for 1 confirmation");
await token.deployTransaction.wait();

const reimbursement = await upgrades.deployProxy(Reimbursement, []);
await reimbursement.deployed();
console.log("Reimbursement deployed to:", reimbursement.address);
console.log("...waiting for 1 confirmation");
await reimbursement.deployTransaction.wait();

await contributor
.setTokenContract(token.address)
.then((response) => response.wait());
await contributor
.setContributionContract(contribution.address)
.then((response) => response.wait());

await contribution
.setTokenContract(token.address)
.then((response) => response.wait());
await contribution
.setContributorContract(contributor.address)
.then((response) => response.wait());

await token
.setContributionContract(contribution.address)
.then((response) => response.wait());
await token
.setContributorContract(contributor.address)
.then((response) => response.wait());

await reimbursement
.setContributorContract(contributor.address)
.then((response) => response.wait());
const contractFactories = {};
const contracts = {};

contractFactories.Contributor = await ethers.getContractFactory("Contributor");
contractFactories.Contribution = await ethers.getContractFactory("Contribution");
contractFactories.Token = await ethers.getContractFactory("Token");
contractFactories.Reimbursement = await ethers.getContractFactory("Reimbursement");

async function deployContractProxy (contractName, params=[]) {
let contract = await upgrades.deployProxy(contractFactories[contractName], params)
.catch(handleError);

contracts[contractName] = contract;

await contract.deployed().then(() => {
console.log(`${contractName} deployed to:`, contract.address);
console.log("...waiting for 1 confirmation");
}).catch(handleError);

await contract.deployTransaction.wait().catch(handleError);
}

const blocksVetoPeriod = 40320; // 7 days; 15 seconds block time

await deployContractProxy('Contributor');
await deployContractProxy('Contribution', [ blocksVetoPeriod ]);
await deployContractProxy('Token');
await deployContractProxy('Reimbursement');

console.log('Calling Contributor#setTokenContract')
await contracts.Contributor.functions
.setTokenContract(contracts.Token.address)
.then(res => {
console.log(`...transaction published: ${res.hash}`);
return res.wait();
}).catch(handleError);

console.log('Calling Contributor#setContributionContract')
await contracts.Contributor.functions
.setContributionContract(contracts.Contribution.address)
.then(res => {
console.log(`...transaction published: ${res.hash}`);
return res.wait();
}).catch(handleError);


console.log('Calling Contribution#setTokenContract')
await contracts.Contribution.functions
.setTokenContract(contracts.Token.address)
.then(res => {
console.log(`...transaction published: ${res.hash}`);
return res.wait();
}).catch(handleError);


console.log('Calling Contribution#setContributorContract')
await contracts.Contribution.functions
.setContributorContract(contracts.Contributor.address)
.then(res => {
console.log(`...transaction published: ${res.hash}`);
return res.wait();
}).catch(handleError);

console.log('Calling Token#setContributionContract')
await contracts.Token.functions
.setContributionContract(contracts.Contribution.address)
.then(res => {
console.log(`...transaction published: ${res.hash}`);
return res.wait();
}).catch(handleError);

console.log('Calling Token#setContributorContract')
await contracts.Token.functions
.setContributorContract(contracts.Contributor.address)
.then(res => {
console.log(`...transaction published: ${res.hash}`);
return res.wait();
}).catch(handleError);

console.log('Calling Reimbursement#setContributorContract')
await contracts.Reimbursement.functions
.setContributorContract(contracts.Contributor.address)
.then(res => {
console.log(`...transaction published: ${res.hash}`);
return res.wait();
}).catch(handleError);

const addresses = {
Contributor: contributor.address,
Contribution: contribution.address,
Token: token.address,
Reimbursement: reimbursement.address,
Contributor: contracts.Contributor.address,
Contribution: contracts.Contribution.address,
Token: contracts.Token.address,
Reimbursement: contracts.Reimbursement.address,
};

console.log("Writing addresses.json");
Expand Down

0 comments on commit 1d1f2bb

Please sign in to comment.