pyth-crosschain/target_chains/ethereum/deploy/zkSyncDeployNewPythImpl.ts

49 lines
1.6 KiB
TypeScript

import { utils, Wallet } from "zksync-web3";
import { HardhatRuntimeEnvironment } from "hardhat/types";
import { Deployer } from "@matterlabs/hardhat-zksync-deploy";
import loadEnv from "../scripts/loadEnv";
import { CHAINS } from "@pythnetwork/xc-governance-sdk";
import { assert } from "chai";
import { writeFileSync } from "fs";
import { ethers } from "ethers";
loadEnv("./");
function envOrErr(name: string): string {
const res = process.env[name];
if (res === undefined) {
throw new Error(`${name} environment variable is not set.`);
}
return res;
}
export default async function (hre: HardhatRuntimeEnvironment) {
// Initialize the wallet.
const wallet = Wallet.fromMnemonic(envOrErr("MNEMONIC"));
// Create deployer object and load the artifact of the contract we want to deploy.
const deployer = new Deployer(hre, wallet);
// Deposit some funds to L2 in order to be able to perform L2 transactions. Uncomment
// this if the deployment account is unfunded.
//
// const depositAmount = ethers.utils.parseEther("0.005");
// const depositHandle = await deployer.zkWallet.deposit({
// to: deployer.zkWallet.address,
// token: utils.ETH_ADDRESS,
// amount: depositAmount,
// });
// // Wait until the deposit is processed on zkSync
// await depositHandle.wait();
const pythImplArtifact = await deployer.loadArtifact("PythUpgradable");
const pythImplContract = await deployer.deploy(pythImplArtifact);
console.log(
`Deployed Pyth implementation contract on ${pythImplContract.address}`
);
console.log(
"Please use this address as the candidate new implementation in the deployment script."
);
}