From 4d853a28c78e2f2b9f6e4c527da20222b12a31fa Mon Sep 17 00:00:00 2001 From: samepant Date: Mon, 16 Sep 2024 14:59:49 -0400 Subject: [PATCH 1/2] deploy public libraries if they don't exist on network --- packages/evm/deploy/deploy.ts | 43 ++++++++++++++++++++++++++++++---- packages/evm/hardhat.config.ts | 6 ++--- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/packages/evm/deploy/deploy.ts b/packages/evm/deploy/deploy.ts index 35b99935..bde42ba0 100644 --- a/packages/evm/deploy/deploy.ts +++ b/packages/evm/deploy/deploy.ts @@ -1,5 +1,6 @@ import { DeployFunction } from "hardhat-deploy/types"; import { HardhatRuntimeEnvironment } from "hardhat/types"; +import { PoseidonT3, proxy } from "poseidon-solidity"; const THIRTY_DAYS_IN_SECONDS = 60 * 60 * 24 * 30; const addressOne = "0x0000000000000000000000000000000000000001"; @@ -8,26 +9,58 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const { deployer } = await hre.getNamedAccounts(); const { deploy } = hre.deployments; + // First check if the proxy exists + if ((await hre.ethers.provider.getCode(proxy.address)) === "0x") { + // probably on the hardhat network + // fund the keyless account + const [sender] = await hre.ethers.getSigners(); + await sender.sendTransaction({ + to: proxy.from, + value: proxy.gas, + }); + + // then send the presigned transaction deploying the proxy + await hre.ethers.provider.broadcastTransaction(proxy.tx); + console.log(`Proxy deployed to: ${proxy.address}`); + } + + // Then deploy the hasher, if needed + if ((await hre.ethers.provider.getCode(PoseidonT3.address)) === "0x") { + const [sender] = await hre.ethers.getSigners(); + await sender.sendTransaction({ + to: proxy.address, + data: PoseidonT3.data, + }); + + console.log(`PoseidonT3 deployed to: ${PoseidonT3.address}`); + } + // Deploy Enclave contract const enclave = await deploy("Enclave", { from: deployer, args: [deployer, addressOne, THIRTY_DAYS_IN_SECONDS], log: true, + libraries: { + PoseidonT3: PoseidonT3.address, + }, }); console.log(`Enclave contract: `, enclave.address); - // Deploy CyphernodeRegistryOwnable contract + // Deploy CiphernodeRegistryOwnable contract - const cypherNodeRegistry = await deploy("CyphernodeRegistryOwnable", { + const cypherNodeRegistry = await deploy("CiphernodeRegistryOwnable", { from: deployer, args: [deployer, enclave.address], log: true, + libraries: { + PoseidonT3: PoseidonT3.address, + }, }); console.log( - `CyphernodeRegistryOwnable contract: `, + `CiphernodeRegistryOwnable contract: `, cypherNodeRegistry.address, ); @@ -47,14 +80,14 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { enclave.address, ); - const registryAddress = await enclaveContract.cyphernodeRegistry(); + const registryAddress = await enclaveContract.ciphernodeRegistry(); if (registryAddress === cypherNodeRegistry.address) { console.log(`Enclave contract already has registry`); return; } - const result = await enclaveContract.setCyphernodeRegistry( + const result = await enclaveContract.setCiphernodeRegistry( cypherNodeRegistry.address, ); await result.wait(); diff --git a/packages/evm/hardhat.config.ts b/packages/evm/hardhat.config.ts index 7cfa0ea3..4777a1d1 100644 --- a/packages/evm/hardhat.config.ts +++ b/packages/evm/hardhat.config.ts @@ -69,18 +69,17 @@ const config: HardhatUserConfig = { arbitrumOne: vars.get("ARBISCAN_API_KEY", ""), avalanche: vars.get("SNOWTRACE_API_KEY", ""), bsc: vars.get("BSCSCAN_API_KEY", ""), - mainnet: ETHERSCAN_API_KEY, + mainnet: ETHERSCAN_API_KEY || "", optimisticEthereum: vars.get("OPTIMISM_API_KEY", ""), polygon: vars.get("POLYGONSCAN_API_KEY", ""), polygonMumbai: vars.get("POLYGONSCAN_API_KEY", ""), - sepolia: ETHERSCAN_API_KEY, + sepolia: ETHERSCAN_API_KEY || "", }, }, gasReporter: { currency: "USD", enabled: process.env.REPORT_GAS ? true : false, excludeContracts: [], - src: "./contracts", }, networks: { hardhat: { @@ -130,6 +129,7 @@ const config: HardhatUserConfig = { }, overrides: { "node_modules/poseidon-solidity/PoseidonT3.sol": { + version: "0.8.27", settings: { optimizer: { enabled: true, From 4a3458fc11066141a98db0b86503c4056e64eb1b Mon Sep 17 00:00:00 2001 From: samepant Date: Mon, 16 Sep 2024 15:02:14 -0400 Subject: [PATCH 2/2] use correct version for poseidon contract --- packages/evm/hardhat.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/evm/hardhat.config.ts b/packages/evm/hardhat.config.ts index 4777a1d1..6dd7c4e4 100644 --- a/packages/evm/hardhat.config.ts +++ b/packages/evm/hardhat.config.ts @@ -129,7 +129,7 @@ const config: HardhatUserConfig = { }, overrides: { "node_modules/poseidon-solidity/PoseidonT3.sol": { - version: "0.8.27", + version: "0.7.0", settings: { optimizer: { enabled: true,