From 265540067a28dd22a84e3e1899673bd7b9e15752 Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 11 Dec 2019 20:05:28 +0300 Subject: [PATCH] WIP --- migrationDeposits.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/migrationDeposits.js b/migrationDeposits.js index d9c82c7..73ebcbf 100644 --- a/migrationDeposits.js +++ b/migrationDeposits.js @@ -6,9 +6,6 @@ const web3Source = new Web3('https://mainnet.infura.io/v3/c7463beadf2144e68646ff const web3Target = new Web3('https://kovan.infura.io/v3/c7463beadf2144e68646ff049917b716', null, { transactionConfirmationBlocks: 1 }) const web3Ganache = new Web3('http://localhost:8545', null, { transactionConfirmationBlocks: 1 }) -const account = web3Source.eth.accounts.privateKeyToAccount('0x' + process.env.PRIVATE_KEY) -web3Source.eth.accounts.wallet.add('0x' + process.env.PRIVATE_KEY) -web3Source.eth.defaultAccount = account.address const ABI = [{ 'constant':false,'inputs':[{ 'name':'_newAccount','type':'address' }],'name':'changeOperator','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function' },{ 'constant':true,'inputs':[],'name':'filled_subtrees','outputs':[{ 'name':'','type':'uint256[]' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':true,'inputs':[{ 'name':'','type':'uint256' }],'name':'nullifierHashes','outputs':[{ 'name':'','type':'bool' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':true,'inputs':[],'name':'verifier','outputs':[{ 'name':'','type':'address' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':true,'inputs':[],'name':'transferValue','outputs':[{ 'name':'','type':'uint256' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':false,'inputs':[{ 'name':'_commitments','type':'uint256[]' },{ 'name':'_nullifierHashes','type':'uint256[]' }],'name':'migrateState','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function' },{ 'constant':true,'inputs':[],'name':'roots','outputs':[{ 'name':'','type':'uint256[]' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':false,'inputs':[{ 'name':'_verifier','type':'address' },{ 'name':'_transferValue','type':'uint256' },{ 'name':'_merkleTreeHeight','type':'uint8' },{ 'name':'_emptyElement','type':'uint256' },{ 'name':'_operator','type':'address' },{ 'name':'_filled_subtrees','type':'uint256[]' },{ 'name':'_lastRoot','type':'uint256' }],'name':'initialize','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function' },{ 'constant':true,'inputs':[{ 'name':'','type':'uint256' }],'name':'commitments','outputs':[{ 'name':'','type':'bool' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':true,'inputs':[],'name':'zeros','outputs':[{ 'name':'','type':'uint256[]' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':true,'inputs':[],'name':'levels','outputs':[{ 'name':'','type':'uint256' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':false,'inputs':[{ 'name':'a','type':'uint256[2]' },{ 'name':'b','type':'uint256[2][2]' },{ 'name':'c','type':'uint256[2]' },{ 'name':'input','type':'uint256[4]' }],'name':'withdraw','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function' },{ 'constant':true,'inputs':[],'name':'operator','outputs':[{ 'name':'','type':'address' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':true,'inputs':[],'name':'isDepositsEnabled','outputs':[{ 'name':'','type':'bool' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':true,'inputs':[{ 'name':'nullifier','type':'uint256' }],'name':'isSpent','outputs':[{ 'name':'','type':'bool' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':true,'inputs':[{ 'name':'left','type':'uint256' },{ 'name':'right','type':'uint256' }],'name':'hashLeftRight','outputs':[{ 'name':'mimc_hash','type':'uint256' }],'payable':false,'stateMutability':'pure','type':'function' },{ 'constant':true,'inputs':[],'name':'next_index','outputs':[{ 'name':'','type':'uint32' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':true,'inputs':[],'name':'current_root','outputs':[{ 'name':'','type':'uint256' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':false,'inputs':[{ 'name':'tree_levels','type':'uint256' },{ 'name':'zero_value','type':'uint256' },{ 'name':'filled_subtrees','type':'uint256[]' },{ 'name':'lastRoot','type':'uint256' }],'name':'initialize','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function' },{ 'constant':true,'inputs':[{ 'name':'root','type':'uint256' }],'name':'isKnownRoot','outputs':[{ 'name':'','type':'bool' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':false,'inputs':[{ 'name':'commitment','type':'uint256' }],'name':'deposit','outputs':[],'payable':true,'stateMutability':'payable','type':'function' },{ 'constant':true,'inputs':[],'name':'getLastRoot','outputs':[{ 'name':'','type':'uint256' }],'payable':false,'stateMutability':'view','type':'function' },{ 'constant':false,'inputs':[],'name':'toggleDeposits','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function' },{ 'constant':false,'inputs':[],'name':'stopMigration','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function' },{ 'constant':true,'inputs':[],'name':'isMigrating','outputs':[{ 'name':'','type':'bool' }],'payable':false,'stateMutability':'view','type':'function' },{ 'payable':true,'stateMutability':'payable','type':'fallback' },{ 'anonymous':false,'inputs':[{ 'indexed':true,'name':'commitment','type':'uint256' },{ 'indexed':false,'name':'leafIndex','type':'uint256' },{ 'indexed':false,'name':'timestamp','type':'uint256' }],'name':'Deposit','type':'event' },{ 'anonymous':false,'inputs':[{ 'indexed':false,'name':'to','type':'address' },{ 'indexed':false,'name':'nullifierHash','type':'uint256' },{ 'indexed':false,'name':'fee','type':'uint256' }],'name':'Withdraw','type':'event' }] const ABIv2 = require('./build/contracts/ETHMixer.json').abi const snarkjs = require('snarkjs') @@ -18,7 +15,7 @@ const { numberToHex, toWei } = require('web3-utils') // 2. edit here const PREVIOUS_MIXER = '0xb541fc07bC7619fD4062A54d96268525cBC6FfEF' const GANACHE_MIXER = '0x38e6292EAB2fD2a70A81C87a194d921988d859aB' -const NEW_MIXER = '0x0a854Cf44f87FF135e2d49d2b482001853CfD98d' +const NEW_MIXER = '0xF7b4Ec760d9B13A3c1a934Eb3486C2eCB1E62784' function toHex(number, length = 32) { let str = number instanceof Buffer ? number.toString('hex') : bigInt(number).toString(16) @@ -68,7 +65,7 @@ async function migrateState({ subtrees, lastRoot, commitments, nullifiers, newMi await newMixer.methods.initializeTreeForMigration(subtrees, lastRoot).send({ gas: numberToHex(2500000), gasPrice: toHex(toWei('10', 'gwei')), - from: account.address + from: web3Target.eth.defaultAccount }) for(let i=0; i < commitments.length / loadBy; i++) { commitmentsToLoad = commitments.slice(i*loadBy, (i+1)*loadBy) @@ -83,7 +80,7 @@ async function migrateState({ subtrees, lastRoot, commitments, nullifiers, newMi ).send({ gas: numberToHex(6500000), gasPrice: toHex(toWei('10', 'gwei')), - from: account.address + from: web3Target.eth.defaultAccount }) console.log('Gas used:', tx.gasUsed) } @@ -102,8 +99,11 @@ async function migrateState({ subtrees, lastRoot, commitments, nullifiers, newMi async function main() { const { subtrees, lastRoot, commitments, nullifiers } = await loadDeposits() const newMixer = new web3Target.eth.Contract(ABIv2, NEW_MIXER) + + const account = web3Target.eth.accounts.privateKeyToAccount('0x' + process.env.PRIVATE_KEY) web3Target.eth.accounts.wallet.add('0x' + process.env.PRIVATE_KEY) web3Target.eth.defaultAccount = account.address + console.log('commitments length ', commitments.length) console.log('nullifiers length ', nullifiers.length) await migrateState({ subtrees, lastRoot, commitments, nullifiers, newMixer })