UNPKG

@ieigen/zkzru

Version:

An implementation of [ZK-ZKRollup](https://github.com/ieigen/ZKZRU) in which the relayer **does not** publish transaction data to the main chain, but only publishes the new Merkle root at every update. This provides gas savings but not data availability g

50 lines (40 loc) 1.79 kB
const {BigNumber, ContractFactory} = require("ethers"); const hre = require('hardhat') const assert = require('assert'); const cls = require("circomlibjs"); async function main() { accounts = await hre.ethers.getSigners() console.log("account address:", accounts[0].address) const SEED = "mimc"; let abi = cls.mimc7Contract.abi let createCode = cls.mimc7Contract.createCode let factory = new ContractFactory( abi, createCode(SEED, 91), accounts[0] ) mimc = await factory.deploy() factory = await ethers.getContractFactory("MiMCMerkle"); miMCMerkle = await factory.deploy(mimc.address) await miMCMerkle.deployed() factory = await ethers.getContractFactory("TokenRegistry"); tokenRegistry = await factory.deploy(accounts[0].address) await tokenRegistry.deployed() console.log("tokenRegistry address:", tokenRegistry.address) factory = await ethers.getContractFactory("RollupNCV2"); rollupNC = await factory.deploy(mimc.address, miMCMerkle.address, tokenRegistry.address) await rollupNC.deployed() console.log("rollupNCV2 address:", rollupNC.address) factory = await ethers.getContractFactory("TestToken"); testToken = await factory.connect(accounts[0]).deploy() await testToken.deployed() console.log("testToken address:", testToken.address) let setRollupNC = await tokenRegistry.connect(accounts[0]).setRollupNC(rollupNC.address); let registerToken = await rollupNC.connect(accounts[0]).registerToken(testToken.address); let approveToken = await rollupNC.connect(accounts[0]).approveToken(testToken.address); let approve = await testToken.connect(accounts[0]).approve(rollupNC.address, 1700); } main() .then(() => process.exit(0)) .catch((error) => { console.error(error) process.exit(1) })