mirror of
https://github.com/tornadocash/tornado-core.git
synced 2024-11-22 09:47:13 +01:00
fix minimal example
This commit is contained in:
parent
30b07f76a5
commit
cfaf325c47
@ -10,11 +10,12 @@ const websnarkUtils = require('websnark/src/utils')
|
|||||||
const { toWei } = require('web3-utils')
|
const { toWei } = require('web3-utils')
|
||||||
|
|
||||||
let web3, contract, netId, circuit, proving_key, groth16
|
let web3, contract, netId, circuit, proving_key, groth16
|
||||||
const RPC_URL = 'http://localhost:8545'
|
|
||||||
const CONTRACT_ADDRESS = '0x9561C133DD8580860B6b7E504bC5Aa500f0f06a7'
|
|
||||||
const MERKLE_TREE_HEIGHT = 20
|
const MERKLE_TREE_HEIGHT = 20
|
||||||
const AMOUNT = '0.1'
|
const RPC_URL = 'https://kovan.infura.io/v3/0279e3bdf3ee49d0b547c643c2ef78ef'
|
||||||
const DEPLOYED_BLOCK = 0
|
const PRIVATE_KEY = 'ad5b6eb7ee88173fa43dedcff8b1d9024d03f6307a1143ecf04bea8ed40f283f' // 0x94462e71A887756704f0fb1c0905264d487972fE
|
||||||
|
const CONTRACT_ADDRESS = '0xD6a6AC46d02253c938B96D12BE439F570227aE8E'
|
||||||
|
const AMOUNT = '1'
|
||||||
|
// CURRENCY = 'ETH'
|
||||||
|
|
||||||
/** Generate random number of specified byte length */
|
/** Generate random number of specified byte length */
|
||||||
const rbigint = nbytes => bigInt.leBuff2int(crypto.randomBytes(nbytes))
|
const rbigint = nbytes => bigInt.leBuff2int(crypto.randomBytes(nbytes))
|
||||||
@ -42,7 +43,8 @@ function createDeposit(nullifier, secret) {
|
|||||||
async function deposit() {
|
async function deposit() {
|
||||||
const deposit = createDeposit(rbigint(31), rbigint(31))
|
const deposit = createDeposit(rbigint(31), rbigint(31))
|
||||||
console.log('Sending deposit transaction...')
|
console.log('Sending deposit transaction...')
|
||||||
await contract.methods.deposit(toHex(deposit.commitment)).send({ value: toWei(AMOUNT), from: web3.eth.defaultAccount, gas:2e6 })
|
const tx = await contract.methods.deposit(toHex(deposit.commitment)).send({ value: toWei(AMOUNT), from: web3.eth.defaultAccount, gas:2e6 })
|
||||||
|
console.log(`https://kovan.etherscan.io/tx/${tx.transactionHash}`)
|
||||||
return `tornado-eth-${AMOUNT}-${netId}-${toHex(deposit.preimage, 62)}`
|
return `tornado-eth-${AMOUNT}-${netId}-${toHex(deposit.preimage, 62)}`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +57,8 @@ async function withdraw(note, recipient) {
|
|||||||
const deposit = parseNote(note)
|
const deposit = parseNote(note)
|
||||||
const { proof, args } = await generateSnarkProof(deposit, recipient)
|
const { proof, args } = await generateSnarkProof(deposit, recipient)
|
||||||
console.log('Sending withdrawal transaction...')
|
console.log('Sending withdrawal transaction...')
|
||||||
await contract.methods.withdraw(proof, ...args).send({ from: web3.eth.defaultAccount, gas: 1e6 })
|
const tx = await contract.methods.withdraw(proof, ...args).send({ from: web3.eth.defaultAccount, gas: 1e6 })
|
||||||
|
console.log(`https://kovan.etherscan.io/tx/${tx.transactionHash}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -81,7 +84,7 @@ function parseNote(noteString) {
|
|||||||
*/
|
*/
|
||||||
async function generateMerkleProof(deposit) {
|
async function generateMerkleProof(deposit) {
|
||||||
console.log('Getting contract state...')
|
console.log('Getting contract state...')
|
||||||
const events = await contract.getPastEvents('Deposit', { fromBlock: DEPLOYED_BLOCK, toBlock: 'latest' })
|
const events = await contract.getPastEvents('Deposit', { fromBlock: 0, toBlock: 'latest' })
|
||||||
const leaves = events
|
const leaves = events
|
||||||
.sort((a, b) => a.returnValues.leafIndex - b.returnValues.leafIndex) // Sort events in chronological order
|
.sort((a, b) => a.returnValues.leafIndex - b.returnValues.leafIndex) // Sort events in chronological order
|
||||||
.map(e => e.returnValues.commitment)
|
.map(e => e.returnValues.commitment)
|
||||||
@ -151,7 +154,9 @@ async function main() {
|
|||||||
groth16 = await buildGroth16()
|
groth16 = await buildGroth16()
|
||||||
netId = await web3.eth.net.getId()
|
netId = await web3.eth.net.getId()
|
||||||
contract = new web3.eth.Contract(require('./build/contracts/ETHTornado.json').abi, CONTRACT_ADDRESS)
|
contract = new web3.eth.Contract(require('./build/contracts/ETHTornado.json').abi, CONTRACT_ADDRESS)
|
||||||
web3.eth.defaultAccount = (await web3.eth.getAccounts())[0]
|
const account = web3.eth.accounts.privateKeyToAccount('0x' + PRIVATE_KEY)
|
||||||
|
web3.eth.accounts.wallet.add('0x' + PRIVATE_KEY)
|
||||||
|
web3.eth.defaultAccount = account.address
|
||||||
|
|
||||||
const note = await deposit()
|
const note = await deposit()
|
||||||
console.log('Deposited note:', note)
|
console.log('Deposited note:', note)
|
||||||
|
Loading…
Reference in New Issue
Block a user