From b00406a4cf08266ec3c1a1fb8837aa1445c83642 Mon Sep 17 00:00:00 2001 From: Paul <108695806+pxrl@users.noreply.github.com> Date: Fri, 4 Aug 2023 18:07:37 +0200 Subject: [PATCH] Read deployments.json dynamically --- scripts/verifyZkSyncDeployments.ts | 37 ++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/scripts/verifyZkSyncDeployments.ts b/scripts/verifyZkSyncDeployments.ts index 425cd03ae..6092c176b 100644 --- a/scripts/verifyZkSyncDeployments.ts +++ b/scripts/verifyZkSyncDeployments.ts @@ -7,10 +7,10 @@ // yarn hardhat run --network mainnet ./scripts/verifyZkSyncDeployments.ts import { assert } from "console"; +import { promises as fs } from "fs"; import { ContractFactory } from "ethers"; import { Provider as zkProvider, utils as zkUtils } from "zksync-web3"; import { ethers, toBN, findArtifactFromPath, SignerWithAddress } from "../utils/utils"; -import deployments from "../deployments/deployments.json"; const textPadding = 30; @@ -24,19 +24,24 @@ const tokens: { [chainId: number]: { symbol: string; address: string }[] } = { 324: [{ symbol: "WETH", address: "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91" }], }; -async function verifyAdapter(signer: SignerWithAddress): Promise { - const chainId = (await signer.provider.getNetwork()).chainId; +async function verifyAdapter( + chainId: number, + signer: SignerWithAddress, + deployments: Record +): Promise { + const contractName = "ZkSync_Adapter"; assert([1, 5].includes(chainId), `Unexpected chain ID (${chainId})`); + const adapterAddress = deployments[chainId.toString()][contractName].address; + console.log(`${contractName} address:`.padEnd(textPadding) + adapterAddress); + const rpcUrl = chainId === 1 ? "https://mainnet.era.zksync.io" : "https://testnet.era.zksync.dev"; const provider = new zkProvider(rpcUrl); - const hubChainId = chainId === 1 ? 324 : 280; - const adapterAddress = deployments[hubChainId.toString()].ZkSync_Adapter.address; - - const adapterArtifact = findArtifactFromPath("ZkSync_Adapter", "./artifacts/contracts"); + const adapterArtifact = findArtifactFromPath(contractName, "./artifacts/contracts"); const adapterFactory = new ContractFactory(adapterArtifact.abi, adapterArtifact.bytecode, signer); + const adapter = await adapterFactory.attach(adapterAddress); const weth = tokens[chainId].find(({ symbol }) => symbol === "WETH")?.address; @@ -68,8 +73,12 @@ async function verifyAdapter(signer: SignerWithAddress): Promise { ); } -async function verifySpokePool(signer: SignerWithAddress): Promise { - const chainId = (await signer.provider.getNetwork()).chainId; +async function verifySpokePool( + chainId: number, + signer: SignerWithAddress, + deployments: Record +): Promise { + const contractName = "ZkSync_SpokePool"; assert([280, 324].includes(chainId), `Unexpected chain ID (${chainId})`); const hubChainId = chainId === 324 ? 1 : 5; @@ -80,7 +89,7 @@ async function verifySpokePool(signer: SignerWithAddress): Promise { const spokePoolAddress = deployments[chainId.toString()].SpokePool.address; // Initialize contracts: - const spokePoolArtifact = findArtifactFromPath("ZkSync_SpokePool", `./artifacts-zk/contracts`); + const spokePoolArtifact = findArtifactFromPath(contractName, `./artifacts-zk/contracts`); const spokePoolFactory = new ContractFactory(spokePoolArtifact.abi, spokePoolArtifact.bytecode, signer); const spokePool = await spokePoolFactory.attach(spokePoolAddress); @@ -127,12 +136,16 @@ async function main() { const [signer] = await ethers.getSigners(); const chainId = (await signer?.provider?.getNetwork())?.chainId; + // deployments.json is generated by scripts/processHardhatExport.ts + const _deployments = await fs.readFile("./deployments/deployments.json", "utf8"); + const deployments = JSON.parse(_deployments); + switch (chainId) { case 1: - await verifyAdapter(signer); + await verifyAdapter(chainId, signer, deployments); break; case 324: - await verifySpokePool(signer); + await verifySpokePool(chainId, signer, deployments); break; default: throw new Error(`Unsupported chain ID: ${chainId}`);