Skip to content

Commit

Permalink
Read deployments.json dynamically
Browse files Browse the repository at this point in the history
  • Loading branch information
pxrl committed Aug 4, 2023
1 parent b1659bd commit b00406a
Showing 1 changed file with 25 additions and 12 deletions.
37 changes: 25 additions & 12 deletions scripts/verifyZkSyncDeployments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -24,19 +24,24 @@ const tokens: { [chainId: number]: { symbol: string; address: string }[] } = {
324: [{ symbol: "WETH", address: "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91" }],
};

async function verifyAdapter(signer: SignerWithAddress): Promise<void> {
const chainId = (await signer.provider.getNetwork()).chainId;
async function verifyAdapter(
chainId: number,
signer: SignerWithAddress,
deployments: Record<string, any>
): Promise<void> {
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;
Expand Down Expand Up @@ -68,8 +73,12 @@ async function verifyAdapter(signer: SignerWithAddress): Promise<void> {
);
}

async function verifySpokePool(signer: SignerWithAddress): Promise<void> {
const chainId = (await signer.provider.getNetwork()).chainId;
async function verifySpokePool(
chainId: number,
signer: SignerWithAddress,
deployments: Record<string, any>
): Promise<void> {
const contractName = "ZkSync_SpokePool";
assert([280, 324].includes(chainId), `Unexpected chain ID (${chainId})`);

const hubChainId = chainId === 324 ? 1 : 5;
Expand All @@ -80,7 +89,7 @@ async function verifySpokePool(signer: SignerWithAddress): Promise<void> {
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);

Expand Down Expand Up @@ -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}`);
Expand Down

0 comments on commit b00406a

Please sign in to comment.