/tornado-root-updater

Primary LanguageJavaScriptMIT LicenseMIT

Root updater Build Status Docker Image Version (latest semver)

For Tornado Cash to enable mining, it needs more metadata than is currently available: it needs to know the block number for each Tornado Cash deposit and withdrawal. Since the current version of Tornado cash is immutable the mining system uses a special proxy to collect this data. When users make deposits and withdrawal all necessary data is recorded to the proxy contract. In order to be used in zkSnark proof, this data should be added to the special Merkle trees (deposits Merkle tree and withdrawals Merkle tree). So long as someone out there does this, the system works smoothly and trustlessly.

This software helps to upload deposit and withdrawal metadata from Tornado Cash anonymity mining proxy into the TornadoTrees contract that handles the Merkle trees.

Keep in mind, it could cost some ether to do so.

Usage with docker

wget https://raw.githubusercontent.com/tornadocash/tornado-root-updater/master/docker-compose.yml
wget https://raw.githubusercontent.com/tornadocash/tornado-root-updater/master/.env.example -O .env
vi .env # update env vars
docker-compose up -d

Usage for development

brew install redis
redis-server

yarn
cp .env.example .env
vi .env
# download and unzip snark keys from https://tornado-trees-circuit.s3-eu-west-1.amazonaws.com/tornado-trees-circuit.tar.gz to `snarks` directory
yarn start

Caches events from both mining and tornado cash instances