Skip to content

Commit

Permalink
chore: add deploy for harmony (#419)
Browse files Browse the repository at this point in the history
* add deploy for harmony
* centralize network details on chain
  • Loading branch information
joequant authored and fforbeck committed Oct 29, 2021
1 parent 09acc24 commit a327bbc
Show file tree
Hide file tree
Showing 7 changed files with 218 additions and 885 deletions.
119 changes: 119 additions & 0 deletions migrations/2_deploy_contracts.js
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,109 @@ const deployTestDao = async (
});
};

async function deployHarmonyDao(
deployFunction,
network,
truffleImports,
contractConfigs
) {
if (!process.env.DAO_NAME) throw Error("Missing env var: DAO_NAME");
if (!process.env.DAO_OWNER_ADDR)
throw Error("Missing env var: DAO_OWNER_ADDR");
if (!process.env.ERC20_TOKEN_NAME)
throw Error("Missing env var: ERC20_TOKEN_NAME");
if (!process.env.ERC20_TOKEN_SYMBOL)
throw Error("Missing env var: ERC20_TOKEN_SYMBOL");
if (!process.env.ERC20_TOKEN_DECIMALS)
throw Error("Missing env var: ERC20_TOKEN_DECIMALS");
if (!process.env.COUPON_CREATOR_ADDR)
throw Error("Missing env var: COUPON_CREATOR_ADDR");
if (!process.env.OFFCHAIN_ADMIN_ADDR)
throw Error("Missing env var: OFFCHAIN_ADMIN_ADDR");
if (!process.env.VOTING_PERIOD_SECONDS)
throw Error("Missing env var: VOTING_PERIOD_SECONDS");
if (!process.env.GRACE_PERIOD_SECONDS)
throw Error("Missing env var: GRACE_PERIOD_SECONDS");

return await deployDao({
...truffleImports,
contractConfigs,
deployFunction,
maxAmount,
unitPrice: toBN(toWei("100", "finney")),
nbUnits: toBN("100000"),
tokenAddr: ETH_TOKEN,
erc20TokenName: process.env.ERC20_TOKEN_NAME,
erc20TokenSymbol: process.env.ERC20_TOKEN_SYMBOL,
erc20TokenDecimals: process.env.ERC20_TOKEN_DECIMALS,
erc20TokenAddress: UNITS,
maxChunks: toBN("100000"),
votingPeriod: parseInt(process.env.VOTING_PERIOD_SECONDS),
gracePeriod: parseInt(process.env.GRACE_PERIOD_SECONDS),
offchainVoting: true,
chainId: getNetworkDetails(network).chainId,
deployTestTokens: false,
finalize: false,
maxExternalTokens: 100,
couponCreatorAddress: process.env.COUPON_CREATOR_ADDR,
daoName: process.env.DAO_NAME,
owner: process.env.DAO_OWNER_ADDR,
offchainAdmin: process.env.OFFCHAIN_ADMIN_ADDR,
});
}

async function deployHarmonyTestDao(
deployFunction,
network,
truffleImports,
contractConfigs
) {
if (!process.env.DAO_NAME) throw Error("Missing env var: DAO_NAME");
if (!process.env.DAO_OWNER_ADDR)
throw Error("Missing env var: DAO_OWNER_ADDR");
if (!process.env.ERC20_TOKEN_NAME)
throw Error("Missing env var: ERC20_TOKEN_NAME");
if (!process.env.ERC20_TOKEN_SYMBOL)
throw Error("Missing env var: ERC20_TOKEN_SYMBOL");
if (!process.env.ERC20_TOKEN_DECIMALS)
throw Error("Missing env var: ERC20_TOKEN_DECIMALS");
if (!process.env.COUPON_CREATOR_ADDR)
throw Error("Missing env var: COUPON_CREATOR_ADDR");

return await deployDao({
...truffleImports,
contractConfigs,
deployFunction,
maxAmount,
unitPrice: toBN(toWei("100", "finney")),
nbUnits: toBN("100000"),
tokenAddr: ETH_TOKEN,
erc20TokenName: process.env.ERC20_TOKEN_NAME,
erc20TokenSymbol: process.env.ERC20_TOKEN_SYMBOL,
erc20TokenDecimals: process.env.ERC20_TOKEN_DECIMALS,
erc20TokenAddress: UNITS,
erc1155TestTokenUri: "1155 test token",
maxChunks: toBN("100000"),
votingPeriod: process.env.VOTING_PERIOD_SECONDS
? parseInt(process.env.VOTING_PERIOD_SECONDS)
: 600, // 600 secs = 10 mins
gracePeriod: process.env.GRACE_PERIOD_SECONDS
? parseInt(process.env.GRACE_PERIOD_SECONDS)
: 600, // 600 secs = 10 min
offchainVoting: true,
chainId: getNetworkDetails(network).chainId,
deployTestTokens: true,
finalize: false,
maxExternalTokens: 100,
couponCreatorAddress: process.env.COUPON_CREATOR_ADDR,
daoName: process.env.DAO_NAME,
owner: process.env.DAO_OWNER_ADDR,
offchainAdmin: process.env.OFFCHAIN_ADMIN_ADDR
? process.env.OFFCHAIN_ADMIN_ADDR
: "0xedC10CFA90A135C41538325DD57FDB4c7b88faf7",
});
}

const deploy = async ({
network,
deployFunction,
Expand Down Expand Up @@ -310,6 +413,22 @@ const deploy = async ({
contracts
);
break;
case "harmony":
res = await deployHarmonyDao(
deployFunction,
network,
truffleImports,
contracts
);
break;
case "harmonytest":
res = await deployHarmonyTestDao(
deployFunction,
network,
truffleImports,
contracts
);
break;
default:
throw new Error(`Unsupported operation ${network}`);
}
Expand Down
43 changes: 43 additions & 0 deletions migrations/configs/harmony.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { adaptersIdsMap } from "../../utils/dao-ids-util";
import {
contracts as defaultContracts,
} from "./contracts.config";
import { getNetworkDetails } from "../../utils/deployment-util";

const disabled: Array<String> = [
// Utility & Test Contracts disabled by default
"OLToken",
"TestToken1",
"TestToken2",
"TestFairShareCalc",
"PixelNFT",
"ProxToken",
"ERC20Minter",
"MockDao",
// Adapters disabled for Muse0 DAO Deployment
"RagequitContract",
"FinancingContract",
"OnboardingContract",
"TributeContract",
"DistributeContract",
];

export const contracts = defaultContracts
.map((c) => {
if (disabled.find((e) => e === c.name)) {
return { ...c, enabled: false };
}
return c;
})
.map((c) => {
if (adaptersIdsMap.COUPON_MANAGER_ADAPTER === c.id) {
const chainDetails = getNetworkDetails("harmony");
return {
...c,
deploymentArgs: {
chainId: chainDetails?.chainId,
},
};
}
return c;
});
35 changes: 35 additions & 0 deletions migrations/configs/harmonytest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { adaptersIdsMap } from "../../utils/dao-ids-util";
import { contracts as defaultContracts } from "./contracts.config";
import { getNetworkDetails } from "../../utils/deployment-util";

const disabled: Array<string> = [
// Utility & Test Contracts disabled by default
"OLToken",
"TestToken1",
"TestToken2",
"TestFairShareCalc",
"PixelNFT",
"ProxToken",
"ERC20Minter",
"MockDao",
];

export const contracts = defaultContracts
.map((c) => {
if (disabled.find((e) => e === c.name)) {
return { ...c, enabled: false };
}
return c;
})
.map((c) => {
if (adaptersIdsMap.COUPON_MANAGER_ADAPTER === c.id) {
const chainDetails = getNetworkDetails("harmonytest");
return {
...c,
deploymentArgs: {
chainId: chainDetails?.chainId,
},
};
}
return c;
});
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@
"deploy:ganache": "truffle deploy --network ganache --reset 2>&1 | tee logs/ganache-deploy_`date '+%F_%T'`.log",
"deploy:rinkeby": "truffle deploy --network rinkeby --reset 2>&1 | tee logs/rinkeby-deploy_`date '+%F_%T'`.log",
"deploy:goerli": "truffle deploy --network goerli --reset 2>&1 | tee logs/goerli-deploy_`date '+%F_%T'`.log",
"deploy:harmonytest": "truffle deploy --network harmonytest --reset 2>&1 | tee logs/harmonytest-deploy_`date '+%F_%T'`.log",
"deploy:harmony": "truffle deploy --network harmony --reset 2>&1 | tee logs/harmony-deploy_`date '+%F_%T'`.log",
"deploy:mainnet": "truffle deploy --network mainnet --reset 2>&1 | tee logs/mainnet-deploy_`date '+%F_%T'`.log",
"ganache": "ganache-cli --deterministic -p 7545 --networkId 1337",
"lint": "prettier --list-different 'contracts/**/*.sol' '**/*.js' '**/*.md'",
Expand Down
10 changes: 10 additions & 0 deletions truffle-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,16 @@ module.exports = {
network_id: 1,
skipDryRun: true,
},
harmony: {
provider: getNetworkProvider,
network_id: 1666600000,
skipDryRun: true,
},
harmonytest: {
provider: getNetworkProvider,
network_id: 1666700000,
skipDryRun: true,
},
coverage: {
host: "localhost",
network_id: "*",
Expand Down
Loading

0 comments on commit a327bbc

Please sign in to comment.