Skip to content

Commit

Permalink
[WIP] Apply separating logic
Browse files Browse the repository at this point in the history
  • Loading branch information
LikoIlya committed May 31, 2024
1 parent 5e4d7d4 commit 8902179
Show file tree
Hide file tree
Showing 18 changed files with 263 additions and 32 deletions.
105 changes: 105 additions & 0 deletions deployments/30746_v2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
{
"MasterMultisig": {
"address": "0x910d930e8c631913a28e9c761fc441f9C512c515",
"abi": [
"constructor(address[] _signers, bool[] isInitiatorFlags, uint256 _threshold)",
"event Confirmation(address indexed sender, uint256 indexed txId)",
"event Execution(uint256 indexed txId)",
"event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)",
"event Revocation(address indexed sender, uint256 indexed txId)",
"event SignerAddition(address indexed signer, bool isInitiator)",
"event SignerRemoval(address indexed signer)",
"event Submission(uint256 indexed txId)",
"event ThresholdChange(uint256 required)",
"function changeOwners(address[] multisigs, address newOwner)",
"function changeSigners(address[] signersToRemove, address[] signersToAdd, bool[] isInitiatorFlags)",
"function changeSignersMaster(tuple(address contract_, address[] signersToRemove, address[] signersToAdd, bool[] isInitiatorFlags)[] changes)",
"function changeThreshold(uint256 _threshold)",
"function checkBeforeSubmitTransaction(address destination, uint256 value, bytes data) payable",
"function confirmTransaction(uint256 txId)",
"function confirmations(uint256, address) view returns (bool)",
"function getAllSigners(address[] multisigs) view returns (tuple(address[] signers, bool[] isInitiatorFlags, uint256 threshold)[])",
"function getConfirmations(uint256 txId) view returns (address[])",
"function getInitiatorsCount() view returns (uint256)",
"function getRequiredSignersCount() view returns (uint256)",
"function getSigners() view returns (address[], bool[])",
"function getTransactionData(uint256 txId) view returns (tuple(address destination, uint256 value, bytes data, bool executed), address[])",
"function getTransactionIds(uint256 from, uint256 to, bool pending, bool executed) view returns (uint256[] result)",
"function isConfirmed(uint256 txId) view returns (bool)",
"function isInitiator(address) view returns (bool)",
"function isSigner(address) view returns (bool)",
"function owner() view returns (address)",
"function renounceOwnership()",
"function revokeConfirmation(uint256 txId)",
"function signers(uint256) view returns (address)",
"function submitTransaction(address destination, uint256 value, bytes data) payable returns (uint256 txId)",
"function threshold() view returns (uint256)",
"function transactionCount() view returns (uint256)",
"function transactions(uint256) view returns (address destination, uint256 value, bytes data, bool executed)",
"function transferOwnership(address newOwner)",
"function withdraw(address to, uint256 amount)"
],
"deployTx": "0xdcbca41afa7d633eb0635253ee48de5f0d54e8712ed6359e872db5812b544d9e",
"fullyQualifiedName": "contracts/multisig/MasterMultisig.sol:MasterMultisig"
},
"BondMarketplace_Multisig": {
"address": "0x8a8ba89cb042A22C77e9Aa67C49A2d1FC7147726",
"abi": [
"constructor(address[] _signers, bool[] isInitiatorFlags, uint256 _threshold, address owner)",
"event Confirmation(address indexed sender, uint256 indexed txId)",
"event Execution(uint256 indexed txId)",
"event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)",
"event Revocation(address indexed sender, uint256 indexed txId)",
"event SignerAddition(address indexed signer, bool isInitiator)",
"event SignerRemoval(address indexed signer)",
"event Submission(uint256 indexed txId)",
"event ThresholdChange(uint256 required)",
"function changeSigners(address[] signersToRemove, address[] signersToAdd, bool[] isInitiatorFlags)",
"function changeThreshold(uint256 _threshold)",
"function checkBeforeSubmitTransaction(address destination, uint256 value, bytes data) payable",
"function confirmTransaction(uint256 txId)",
"function confirmations(uint256, address) view returns (bool)",
"function getConfirmations(uint256 txId) view returns (address[])",
"function getInitiatorsCount() view returns (uint256)",
"function getRequiredSignersCount() view returns (uint256)",
"function getSigners() view returns (address[], bool[])",
"function getTransactionData(uint256 txId) view returns (tuple(address destination, uint256 value, bytes data, bool executed), address[])",
"function getTransactionIds(uint256 from, uint256 to, bool pending, bool executed) view returns (uint256[] result)",
"function isConfirmed(uint256 txId) view returns (bool)",
"function isInitiator(address) view returns (bool)",
"function isSigner(address) view returns (bool)",
"function owner() view returns (address)",
"function renounceOwnership()",
"function revokeConfirmation(uint256 txId)",
"function signers(uint256) view returns (address)",
"function submitTransaction(address destination, uint256 value, bytes data) payable returns (uint256 txId)",
"function threshold() view returns (uint256)",
"function transactionCount() view returns (uint256)",
"function transactions(uint256) view returns (address destination, uint256 value, bytes data, bool executed)",
"function transferOwnership(address newOwner)",
"function withdraw(address to, uint256 amount)"
],
"deployTx": "0x0c742b18952946d39cd2aafe704609f07cdbcd685b1db2e4f40339f52b324bc3",
"fullyQualifiedName": "contracts/multisig/Multisig.sol:Multisig"
},
"BondMarketplace_RewardsBank": {
"address": "0x46f21E8D94B1d53F3F97E3a8392FbE372ec1b87d",
"abi": [
"constructor()",
"event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)",
"event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)",
"event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)",
"function DEFAULT_ADMIN_ROLE() view returns (bytes32)",
"function getRoleAdmin(bytes32 role) view returns (bytes32)",
"function grantRole(bytes32 role, address account)",
"function hasRole(bytes32 role, address account) view returns (bool)",
"function renounceRole(bytes32 role, address account)",
"function revokeRole(bytes32 role, address account)",
"function supportsInterface(bytes4 interfaceId) view returns (bool)",
"function withdrawAmb(address addressTo, uint256 amount)",
"function withdrawErc20(address tokenAddress, address addressTo, uint256 amount)"
],
"deployTx": "0x28a86187af348de0c9317d901cabe571a98fafbe44730f146b419b053f593017",
"fullyQualifiedName": "contracts/funds/RewardsBank.sol:RewardsBank"
}
}
21 changes: 17 additions & 4 deletions hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import "@openzeppelin/hardhat-upgrades";

import { ethers } from "ethers";
import * as dotenv from "dotenv";
import { sourcifyAll } from "@airdao/deployments/deploying";
import { sourcifyOne, loadAllDeployments } from "@airdao/deployments/deploying";
import { HardhatRuntimeEnvironment } from "hardhat/types";

dotenv.config();
Expand All @@ -31,8 +31,8 @@ const config: HardhatUserConfig = {
gasPrice: 0,
accounts: [
process.env.PRIVATEKEY_OWNER_AMB || ethers.constants.HashZero,
process.env.PRIVATEKEY_TEST_MULTISIG1 || ethers.constants.HashZero,
process.env.PRIVATEKEY_TEST_MULTISIG2 || ethers.constants.HashZero,
// process.env.PRIVATEKEY_TEST_MULTISIG1 || ethers.constants.HashZero,
// process.env.PRIVATEKEY_TEST_MULTISIG2 || ethers.constants.HashZero,
],
},
test: {
Expand Down Expand Up @@ -75,7 +75,20 @@ const config: HardhatUserConfig = {

task("sourcify", "verify contracts using sourcify").setAction(async (args: any, hre: HardhatRuntimeEnvironment) => {
await hre.run("compile"); // compile contract first
await sourcifyAll(hre);
// @ts-ignore
let { chainId } = await hre.ethers.provider.getNetwork();
if (process.env.MULTISIGS && process.env.MULTISIGS !== "v1") {
chainId = (chainId.toString() + `_${process.env.MULTISIGS}`) as any;
}
const deployments = require(`./deployments/${chainId}.json`) as Record<string, any>;

for (const [contractName, deployment] of Object.entries(deployments))
if (deployment.proxy) {
await sourcifyOne(hre, deployment.proxy.fullyQualifiedName, deployment.address, chainId, contractName + " Proxy");
await sourcifyOne(hre, deployment.fullyQualifiedName, deployment.proxy.implementation, chainId, contractName);
} else {
await sourcifyOne(hre, deployment.fullyQualifiedName, deployment.address, chainId, contractName);
}
});

export default config;
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@
"deploy_fees": "hardhat run scripts/fees/deploy_fees.ts --network dev",
"deploy_bond": "hardhat run scripts/bond-marketplace/deploy_rewards_bank.ts --network dev",
"deploy_all": "npm run deploy_multisig && npm run deploy_finance && npm run deploy_airdrop && npm run deploy_staking && npm run deploy_fees && npm run deploy_bond",
"deploy_multisig:v2": "MULTISIGS=v2 npm run deploy_multisig",
"deploy_bond:v2": "MULTISIGS=v2 npm run deploy_bond",
"deploy_all:v2": "npm run deploy_multisig:v2 && npm run deploy_bond:v2",
"migration_to_new_staking": "hardhat run scripts/staking/migrate_to_new_staking.ts --network dev",
"test_script": "hardhat run scripts/test.ts --network test",
"integration_test_script": "hardhat run scripts/staking/new_validatorset_integration_test.ts --network local",
Expand Down
8 changes: 6 additions & 2 deletions scripts/bond-marketplace/deploy_rewards_bank.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ import {
} from "../addresses";

export async function main() {
const { chainId } = await ethers.provider.getNetwork();

let { chainId } = await ethers.provider.getNetwork();
if (process.env.MULTISIGS && process.env.MULTISIGS !== "v1") {
chainId = (chainId.toString() + `_${process.env.MULTISIGS}`) as any;
}
const [deployer] = await ethers.getSigners();

const masterMultisig = loadDeployment(ContractNames.MasterMultisig, chainId).address;
Expand All @@ -34,6 +36,7 @@ export async function main() {

const multisig = await deploy<Multisig__factory>({
contractName: ContractNames.BondMarketplaceMultisig,
networkId: chainId,
artifactName: "Multisig",
deployArgs: [...multisigSettings, masterMultisig],
signer: deployer,
Expand All @@ -42,6 +45,7 @@ export async function main() {

const rewardsBank = await deploy<RewardsBank__factory>({
contractName: ContractNames.BondMarketplaceRewardsBank,
networkId: chainId,
artifactName: "RewardsBank",
deployArgs: [],
signer: deployer,
Expand Down
8 changes: 7 additions & 1 deletion scripts/fees/deploy_fees.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@ import {ContractNames} from "../../src";
import {Roadmap2023MultisigSettings} from "../addresses";

export async function main() {
const { chainId } = await ethers.provider.getNetwork();
let { chainId } = await ethers.provider.getNetwork();
if (process.env.MULTISIGS && process.env.MULTISIGS !== "v1") {
chainId = (chainId.toString() + `_${process.env.MULTISIGS}`) as any;
}

const [deployer] = await ethers.getSigners();
const masterMultisig = loadDeployment(ContractNames.MasterMultisig, chainId).address;

const multisig = await deploy<Multisig__factory>({
contractName: ContractNames.FeesMultisig,
networkId: chainId,
artifactName: "Multisig",
deployArgs: [...Roadmap2023MultisigSettings, masterMultisig],
signer: deployer,
Expand All @@ -20,6 +24,7 @@ export async function main() {

const treasure = await deploy<Finance__factory>({
contractName: ContractNames.FeesTreasure,
networkId: chainId,
artifactName: "Finance",
deployArgs: [multisig.address],
signer: deployer,
Expand All @@ -31,6 +36,7 @@ export async function main() {

const fees = await deploy<Fees__factory>({
contractName: ContractNames.Fees,
networkId: chainId,
artifactName: "Fees",
deployArgs: [gasPrice, payAddress, feePercent],
signer: deployer,
Expand Down
8 changes: 8 additions & 0 deletions scripts/finance/deploy_airdrop.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import { deploy } from "@airdao/deployments/deploying";
import { AirBond__factory, AirDrop__factory } from "../../typechain-types";

async function main() {
let { chainId } = await ethers.provider.getNetwork();
if (process.env.MULTISIGS && process.env.MULTISIGS !== "v1") {
chainId = (chainId.toString() + `_${process.env.MULTISIGS}`) as any;
}
const [deployer] = await ethers.getSigners();

if (network.name == "main") {
Expand All @@ -15,13 +19,15 @@ async function main() {
// const financeInvestorsMultisig = loadDeployment(ContractNames.FinanceInvestorsMultisig, networkName).address;
const airBond = await deploy<AirBond__factory>({
contractName: ContractNames.AirBond,
networkId: chainId,
artifactName: "AirBond",
deployArgs: [deployer.address],
signer: deployer,
loadIfAlreadyDeployed: true,
});
const airDrop = await deploy<AirDrop__factory>({
contractName: ContractNames.AirDrop,
networkId: chainId,
artifactName: "AirDrop",
deployArgs: [airBond.address, BACKEND_ADDRESS, ethers.utils.parseEther("999"), []],
signer: deployer,
Expand All @@ -35,13 +41,15 @@ async function main() {
} else {
const airBond = await deploy<AirBond__factory>({
contractName: ContractNames.AirBond,
networkId: chainId,
artifactName: "AirBond",
deployArgs: [deployer.address],
signer: deployer,
loadIfAlreadyDeployed: true,
});
const airDrop = await deploy<AirDrop__factory>({
contractName: ContractNames.AirDrop,
networkId: chainId,
artifactName: "AirDrop",
deployArgs: [airBond.address, deployer.address, ethers.utils.parseEther("999"), []],
signer: deployer,
Expand Down
9 changes: 8 additions & 1 deletion scripts/finance/deploy_finance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ import {
import {Finance__factory, MasterFinance__factory, Multisig__factory} from "../../typechain-types";

async function main() {
const {chainId} = await ethers.provider.getNetwork();
let { chainId } = await ethers.provider.getNetwork();
if (process.env.MULTISIGS && process.env.MULTISIGS !== "v1") {
chainId = (chainId.toString() + `_${process.env.MULTISIGS}`) as any;
}

const [deployer] = await ethers.getSigners();

Expand All @@ -34,13 +37,15 @@ async function main() {

const multisig = await deploy<Multisig__factory>({
contractName: multisigName,
networkId: chainId,
artifactName: "Multisig",
signer: deployer,
deployArgs: [signers, isInitiator, threshold, masterMultisig],
loadIfAlreadyDeployed: true,
});
await deploy<Finance__factory>({
contractName: financeName,
networkId: chainId,
artifactName: "Finance",
signer: deployer,
deployArgs: [multisig.address],
Expand All @@ -59,13 +64,15 @@ async function main() {
// finance master
const multisig = await deploy<Multisig__factory>({
contractName: ContractNames.FinanceMasterMultisig,
networkId: chainId,
artifactName: "Multisig",
deployArgs: [...multisigSettings, masterMultisig],
signer: deployer,
loadIfAlreadyDeployed: true,
});
await deploy<MasterFinance__factory>({
contractName: ContractNames.FinanceMaster,
networkId: chainId,
artifactName: "MasterFinance",
deployArgs: [multisig.address, bankCount, maxBankBalance],
signer: deployer,
Expand Down
6 changes: 6 additions & 0 deletions scripts/multisig/deploy_multisig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,26 @@ import { deploy } from "@airdao/deployments/deploying";
import { MasterMultisig__factory } from "../../typechain-types";

export async function main() {
let { chainId } = await ethers.provider.getNetwork();
if (process.env.MULTISIGS && process.env.MULTISIGS !== "v1") {
chainId = (chainId.toString() + `_${process.env.MULTISIGS}`) as any;
}
const [deployer] = await ethers.getSigners();

if (network.name == "main") {
console.log("--- MAINNET DEPLOYMENT ---");

await deploy<MasterMultisig__factory>({
contractName: ContractNames.MasterMultisig,
networkId: chainId,
artifactName: "MasterMultisig",
deployArgs: [[Lang, Igor, Rory, Kevin, Andrii], [true, true, true, false, false], 51],
signer: deployer,
});
} else {
await deploy<MasterMultisig__factory>({
contractName: ContractNames.MasterMultisig,
networkId: chainId,
artifactName: "MasterMultisig",
deployArgs: [[SharedDev, DimaTest, AndriiTest], [true, true, true], 51],
signer: deployer,
Expand Down
10 changes: 6 additions & 4 deletions scripts/redeploy/genChainspec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ async function main() {
}

async function getChainspec(time_before_transition: number, chainId: number) {
const chainIdNumber = chainId;
if (process.env.MULTISIGS && process.env.MULTISIGS !== "v1") {
chainId = (chainId.toString() + `_${process.env.MULTISIGS}`) as any;
}
const validatorSet = loadDeployment(ContractNames.ValidatorSet, chainId) as ValidatorSet;

const fees = loadDeployment(ContractNames.Fees, chainId);
Expand All @@ -19,10 +23,8 @@ async function getChainspec(time_before_transition: number, chainId: number) {
const transitionBlockRounded = Math.ceil(transitionBlock / 1000) * 1000;

const params = getParams(transitionBlockRounded, validatorSet.address, fees.address);
if (chainId === 30746)
return devnet(params);
if (chainId === 22040)
return testnet(params);
if (chainIdNumber === 30746) return devnet(params);
if (chainIdNumber === 22040) return testnet(params);
throw new Error(`Unsupported chainId ${chainId}`);


Expand Down
7 changes: 6 additions & 1 deletion scripts/staking/deploy_basenodes_manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ import {
import {Roadmap2023MultisigSettings} from "../addresses";

export async function main() {
const { chainId } = await ethers.provider.getNetwork();
let { chainId } = await ethers.provider.getNetwork();
if (process.env.MULTISIGS && process.env.MULTISIGS !== "v1") {
chainId = (chainId.toString() + `_${process.env.MULTISIGS}`) as any;
}

const [deployer] = await ethers.getSigners();

Expand All @@ -20,6 +23,7 @@ export async function main() {

const multisig = await deploy<Multisig__factory>({
contractName: ContractNames.BaseNodesManagerMultisig,
networkId: chainId,
artifactName: "Multisig",
deployArgs: [...Roadmap2023MultisigSettings, masterMultisig],
signer: deployer,
Expand All @@ -28,6 +32,7 @@ export async function main() {

const rewardsBank = await deploy<RewardsBank__factory>({
contractName: ContractNames.BaseNodesManagerRewardsBank,
networkId: chainId,
artifactName: "RewardsBank",
deployArgs: [],
signer: deployer,
Expand Down
Loading

0 comments on commit 8902179

Please sign in to comment.