mirror of
https://github.com/tornadocash/tornado-core.git
synced 2024-12-22 09:13:28 +01:00
change dir structure
This commit is contained in:
parent
0c6e638852
commit
23543683f3
28
lib/utils.js
28
lib/utils.js
@ -1,28 +0,0 @@
|
||||
const MiMC = require('./MiMC')
|
||||
const snarkjs = require('snarkjs')
|
||||
|
||||
const hasher = new MiMC()
|
||||
const bigInt = snarkjs.bigInt
|
||||
|
||||
const toHex = (number, length = 32) =>
|
||||
'0x' +
|
||||
(number instanceof Buffer ? number.toString('hex') : bigInt(number).toString(16)).padStart(length * 2, '0')
|
||||
|
||||
function zeros(
|
||||
levels,
|
||||
defaultZero = '21663839004416932945382355908790599225266501822907911457504978515578255421292',
|
||||
) {
|
||||
const zeros = []
|
||||
|
||||
let currentZero = defaultZero
|
||||
for (let i = 0; i < levels; i++) {
|
||||
zeros.push(toHex(currentZero))
|
||||
currentZero = hasher.hash(levels, currentZero, currentZero)
|
||||
}
|
||||
|
||||
return zeros
|
||||
}
|
||||
|
||||
// console.log(zeros(32))
|
||||
|
||||
module.exports = { zeros, toHex }
|
@ -10,7 +10,7 @@
|
||||
"build:circuit:contract": "npx snarkjs generateverifier -v build/circuits/Verifier.sol --vk build/circuits/withdraw_verification_key.json",
|
||||
"build:circuit": "mkdir -p build/circuits && npm run build:circuit:compile && npm run build:circuit:setup && npm run build:circuit:bin && npm run build:circuit:contract",
|
||||
"build:contract": "npx truffle compile",
|
||||
"build:browserify": "npx browserify cli.js -o index.js --exclude worker_threads",
|
||||
"build:browserify": "npx browserify src/cli.js -o index.js --exclude worker_threads",
|
||||
"build": "npm run build:circuit && npm run build:contract && npm run build:browserify",
|
||||
"browserify": "npm run build:browserify",
|
||||
"test": "npx truffle test",
|
||||
@ -24,7 +24,7 @@
|
||||
"prettier:fix": "prettier --write . --config .prettierrc",
|
||||
"lint": "yarn eslint && yarn prettier:check",
|
||||
"flat": "npx truffle-flattener contracts/ETHTornado.sol > ETHTornado_flat.sol && npx truffle-flattener contracts/ERC20Tornado.sol > ERC20Tornado_flat.sol",
|
||||
"download": "node downloadKeys.js"
|
||||
"download": "node scripts/downloadKeys.js"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
|
@ -6,7 +6,7 @@ const genContract = require('circomlib/src/mimcsponge_gencontract.js')
|
||||
|
||||
// where Truffle will expect to find the results of the external compiler
|
||||
// command
|
||||
const outputPath = path.join(__dirname, 'build', 'Hasher.json')
|
||||
const outputPath = path.join(__dirname, '..', 'build', 'Hasher.json')
|
||||
|
||||
function main() {
|
||||
const contract = {
|
@ -2,8 +2,8 @@ const axios = require('axios')
|
||||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
const files = ['withdraw.json', 'withdraw_proving_key.bin', 'Verifier.sol', 'withdraw_verification_key.json']
|
||||
const circuitsPath = 'build/circuits'
|
||||
const contractsPath = 'build/contracts'
|
||||
const circuitsPath = __dirname + '/../build/circuits'
|
||||
const contractsPath = __dirname + '/../build/contracts'
|
||||
|
||||
async function downloadFile({ url, path }) {
|
||||
const writer = fs.createWriteStream(path)
|
@ -134,7 +134,8 @@ async function generateMerkleProof(deposit) {
|
||||
assert(leafIndex >= 0, 'The deposit is not found in the tree')
|
||||
|
||||
// Compute merkle proof of our commitment
|
||||
return tree.path(leafIndex)
|
||||
const { pathElements, pathIndices } = tree.path(leafIndex)
|
||||
return { pathElements, pathIndices, root: tree.root() }
|
||||
}
|
||||
|
||||
/**
|
||||
@ -439,7 +440,7 @@ async function loadDepositData({ deposit }) {
|
||||
}
|
||||
async function loadWithdrawalData({ amount, currency, deposit }) {
|
||||
try {
|
||||
const events = await await tornado.getPastEvents('Withdrawal', {
|
||||
const events = await tornado.getPastEvents('Withdrawal', {
|
||||
fromBlock: 0,
|
||||
toBlock: 'latest',
|
||||
})
|
||||
@ -487,9 +488,9 @@ async function init({ rpc, noteNetId, currency = 'dai', amount = '100' }) {
|
||||
} else {
|
||||
// Initialize from local node
|
||||
web3 = new Web3(rpc, null, { transactionConfirmationBlocks: 1 })
|
||||
contractJson = require('./build/contracts/ETHTornado.json')
|
||||
circuit = require('./build/circuits/withdraw.json')
|
||||
proving_key = fs.readFileSync('build/circuits/withdraw_proving_key.bin').buffer
|
||||
contractJson = require(__dirname + '/../build/contracts/ETHTornado.json')
|
||||
circuit = require(__dirname + '/../build/circuits/withdraw.json')
|
||||
proving_key = fs.readFileSync(__dirname + '/../build/circuits/withdraw_proving_key.bin').buffer
|
||||
MERKLE_TREE_HEIGHT = process.env.MERKLE_TREE_HEIGHT || 20
|
||||
ETH_AMOUNT = process.env.ETH_AMOUNT
|
||||
TOKEN_AMOUNT = process.env.TOKEN_AMOUNT
|
||||
@ -502,8 +503,8 @@ async function init({ rpc, noteNetId, currency = 'dai', amount = '100' }) {
|
||||
} else {
|
||||
console.log('Warning! PRIVATE_KEY not found. Please provide PRIVATE_KEY in .env file if you deposit')
|
||||
}
|
||||
erc20ContractJson = require('./build/contracts/ERC20Mock.json')
|
||||
erc20tornadoJson = require('./build/contracts/ERC20Tornado.json')
|
||||
erc20ContractJson = require(__dirname + '/../build/contracts/ERC20Mock.json')
|
||||
erc20tornadoJson = require(__dirname + '/../build/contracts/ERC20Tornado.json')
|
||||
}
|
||||
// groth16 initialises a lot of Promises that will never be resolved, that's why we need to use process.exit to terminate the CLI
|
||||
groth16 = await buildGroth16()
|
@ -106,7 +106,8 @@ async function generateMerkleProof(deposit) {
|
||||
assert(leafIndex >= 0, 'The deposit is not found in the tree')
|
||||
|
||||
// Compute merkle proof of our commitment
|
||||
return tree.path(leafIndex)
|
||||
const { pathElements, pathIndices } = tree.path(leafIndex)
|
||||
return { pathElements, pathIndices, root: tree.root() }
|
||||
}
|
||||
|
||||
/**
|
||||
@ -116,7 +117,7 @@ async function generateMerkleProof(deposit) {
|
||||
*/
|
||||
async function generateSnarkProof(deposit, recipient) {
|
||||
// Compute merkle proof of our commitment
|
||||
const { root, pathElements, pathIndices } = generateMerkleProof(deposit)
|
||||
const { root, pathElements, pathIndices } = await generateMerkleProof(deposit)
|
||||
|
||||
// Prepare circuit input
|
||||
const input = {
|
||||
@ -155,11 +156,11 @@ async function main() {
|
||||
web3 = new Web3(new Web3.providers.HttpProvider(RPC_URL, { timeout: 5 * 60 * 1000 }), null, {
|
||||
transactionConfirmationBlocks: 1,
|
||||
})
|
||||
circuit = require('./build/circuits/withdraw.json')
|
||||
proving_key = fs.readFileSync('build/circuits/withdraw_proving_key.bin').buffer
|
||||
circuit = require(__dirname + '/../build/circuits/withdraw.json')
|
||||
proving_key = fs.readFileSync(__dirname + '/../build/circuits/withdraw_proving_key.bin').buffer
|
||||
groth16 = await buildGroth16()
|
||||
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)
|
||||
const account = web3.eth.accounts.privateKeyToAccount('0x' + PRIVATE_KEY)
|
||||
web3.eth.accounts.wallet.add('0x' + PRIVATE_KEY)
|
||||
// eslint-disable-next-line require-atomic-updates
|
@ -3,7 +3,7 @@ require('chai').use(require('bn-chai')(web3.utils.BN)).use(require('chai-as-prom
|
||||
const fs = require('fs')
|
||||
|
||||
const { toBN } = require('web3-utils')
|
||||
const { takeSnapshot, revertSnapshot } = require('../lib/ganacheHelper')
|
||||
const { takeSnapshot, revertSnapshot } = require('../scripts/ganacheHelper')
|
||||
|
||||
const Tornado = artifacts.require('./ERC20Tornado.sol')
|
||||
const BadRecipient = artifacts.require('./BadRecipient.sol')
|
||||
|
@ -3,7 +3,7 @@ require('chai').use(require('bn-chai')(web3.utils.BN)).use(require('chai-as-prom
|
||||
const fs = require('fs')
|
||||
|
||||
const { toBN, randomHex } = require('web3-utils')
|
||||
const { takeSnapshot, revertSnapshot } = require('../lib/ganacheHelper')
|
||||
const { takeSnapshot, revertSnapshot } = require('../scripts/ganacheHelper')
|
||||
|
||||
const Tornado = artifacts.require('./ETHTornado.sol')
|
||||
const { ETH_AMOUNT, MERKLE_TREE_HEIGHT } = process.env
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* global artifacts, web3, contract */
|
||||
require('chai').use(require('bn-chai')(web3.utils.BN)).use(require('chai-as-promised')).should()
|
||||
|
||||
const { takeSnapshot, revertSnapshot } = require('../lib/ganacheHelper')
|
||||
const { takeSnapshot, revertSnapshot } = require('../scripts/ganacheHelper')
|
||||
|
||||
const MerkleTreeWithHistory = artifacts.require('./MerkleTreeWithHistoryMock.sol')
|
||||
const hasherContract = artifacts.require('./Hasher.sol')
|
||||
|
@ -1,10 +1,6 @@
|
||||
require('dotenv').config()
|
||||
const HDWalletProvider = require('@truffle/hdwallet-provider')
|
||||
const utils = require('web3-utils')
|
||||
// const infuraKey = "fj4jll3k.....";
|
||||
//
|
||||
// const fs = require('fs');
|
||||
// const mnemonic = fs.readFileSync(".secret").toString().trim();
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
@ -18,30 +14,11 @@ module.exports = {
|
||||
*/
|
||||
|
||||
networks: {
|
||||
// Useful for testing. The `development` name is special - truffle uses it by default
|
||||
// if it's defined here and no other network is specified at the command line.
|
||||
// You should run a client (like ganache-cli, geth or parity) in a separate terminal
|
||||
// tab if you use this network and you must also set the `host`, `port` and `network_id`
|
||||
// options below to some value.
|
||||
|
||||
development: {
|
||||
host: '127.0.0.1', // Localhost (default: none)
|
||||
port: 8545, // Standard Ethereum port (default: none)
|
||||
network_id: '*', // Any network (default: none)
|
||||
},
|
||||
|
||||
// Another network with more advanced options...
|
||||
// advanced: {
|
||||
// port: 8777, // Custom port
|
||||
// network_id: 1342, // Custom network
|
||||
// gas: 8500000, // Gas sent with each transaction (default: ~6700000)
|
||||
// gasPrice: 20000000000, // 20 gwei (in wei) (default: 100 gwei)
|
||||
// from: <address>, // Account to send txs from (default: accounts[0])
|
||||
// websockets: true // Enable EventEmitter interface for web3 (default: false)
|
||||
// },
|
||||
|
||||
// Useful for deploying to a public network.
|
||||
// NB: It's important to wrap the provider as a function.
|
||||
kovan: {
|
||||
provider: () =>
|
||||
new HDWalletProvider(
|
||||
@ -90,16 +67,8 @@ module.exports = {
|
||||
// timeoutBlocks: 200,
|
||||
skipDryRun: true,
|
||||
},
|
||||
|
||||
// Useful for private networks
|
||||
// private: {
|
||||
// provider: () => new HDWalletProvider(mnemonic, `https://network.io`),
|
||||
// network_id: 2111, // This network is yours, in the cloud.
|
||||
// production: true // Treats this network as if it was a public net. (default: false)
|
||||
// }
|
||||
},
|
||||
|
||||
// Set default mocha options here, use special reporters etc.
|
||||
mocha: {
|
||||
// timeout: 100000
|
||||
},
|
||||
@ -107,19 +76,16 @@ module.exports = {
|
||||
// Configure your compilers
|
||||
compilers: {
|
||||
solc: {
|
||||
version: '0.7.6', // Fetch exact version from solc-bin (default: truffle's version)
|
||||
// docker: true, // Use "0.5.1" you've installed locally with docker (default: false)
|
||||
version: '0.7.6',
|
||||
settings: {
|
||||
// See the solidity docs for advice about optimization and evmVersion
|
||||
optimizer: {
|
||||
enabled: true,
|
||||
runs: 200,
|
||||
},
|
||||
// evmVersion: "byzantium"
|
||||
},
|
||||
},
|
||||
external: {
|
||||
command: 'node ./compileHasher.js',
|
||||
command: 'node ./scripts/compileHasher.js',
|
||||
targets: [
|
||||
{
|
||||
path: './build/Hasher.json',
|
||||
|
Loading…
Reference in New Issue
Block a user