UNPKG

l1-lottery-contracts

Version:

This repo contains smart contracts and related scripts for ZkNoid L1 Lottery proposed [here](https://forums.minaprotocol.com/t/zknoid-l1-lottery/6269)

49 lines (35 loc) 1.34 kB
import { AccountUpdate, fetchAccount, Mina, PrivateKey, Cache } from 'o1js'; import { configDefaultInstance } from './utils.js'; import { PlotteryFactory } from '../src/Factory.js'; import * as fs from 'fs'; import { RandomManager } from '../src/Random/RandomManager.js'; import { treasury } from '../src/constants.js' const { transactionFee } = configDefaultInstance(); const networkId = Mina.activeInstance.getNetworkId().toString(); let deployerKey = PrivateKey.fromBase58(process.env.DEPLOYER_KEY!); let deployer = deployerKey.toPublicKey(); console.log(`Deploying with ${deployer.toBase58()}`); console.log(`Compiling Random manager`); await RandomManager.compile({ cache: Cache.FileSystem(`cache`), }); await fetchAccount({ publicKey: treasury, }); let rmKey = PrivateKey.random(); let rmAddress = rmKey.toPublicKey(); let rm = new RandomManager(rmAddress); console.log(`Preparing transaction`); let tx = Mina.transaction( { sender: deployer, fee: transactionFee }, async () => { AccountUpdate.fundNewAccount(deployer); rm.deploy(); } ); await tx.prove(); let txInfo = await tx.sign([deployerKey, rmKey]).send(); console.log(`Transaction hash: ${txInfo.hash}`); console.log(`Rm address: ${rmAddress.toBase58()}`); console.log('Waiting for transaction to be included in block'); await txInfo.wait();