diff --git a/README.md b/README.md index 4eabc90..53bfd63 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,8 @@ Command line tool to interact with [Tornado Cash](https://tornado.ws). -### Warning! -Current cli version doesn't support [Anonymity Mining](https://tornado-cash.medium.com/tornado-cash-governance-proposal-a55c5c7d0703) - ### How to install tornado cli + Download and install [node.js](https://nodejs.org/en/download/). You also need to install C++ build tools in order to do 'npm install', for more information please checkout https://github.com/nodejs/node-gyp#on-unix. @@ -36,6 +34,7 @@ If you want to use Tor connection to conceal ip address, install [Tor Browser](h Note that you should reset your tor connection by restarting the browser every time when you deposit & withdraw otherwise you will have the same exit node used for connection. ### Goerli, Mainnet, Binance Smart Chain, Gnosis Chain, Polygon Network, Arbitrum, Avalanche + 1. `node cli.js --help` 2. If you want to use secure, anonymous tor connection add `--tor ` behind the command. 3. Add `PRIVATE_KEY` to `.env` file (optional, only if you want to use it for many operations) - open `.env.example` file, add private key after `PRIVATE_KEY=` and rename file to `.env`. @@ -51,6 +50,7 @@ Note that `--tor ` is optional, and use `--private-key ` o For RPC nodes please refer to the list of public RPC nodes below. ##### Example: + ```bash $ node cli.js deposit ETH 0.1 --rpc https://mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607 --tor 9150 @@ -91,6 +91,7 @@ Done ``` ### (Optional) Creating Deposit Notes & Invoices offline + One of the main features of tornado-cli is that it supports creating deposit notes & invoices inside the offline computing environment. After the private-key like notes are backed up somewhere safe, you can copy the created deposit invoices and use them to create new deposit transaction on online environment. @@ -144,348 +145,348 @@ Sender account balance is x.xxxxxxx ETH ```json { - "netId1":{ - "rpcUrls":{ - "publicRpc1":{ - "name":"1RPC", - "url":"https://1rpc.io/eth" - }, - "Chainnodes":{ - "name": "Chainnodes", - "url": "https://mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607" - } + "netId1": { + "rpcUrls": { + "publicRpc1": { + "name": "1RPC", + "url": "https://1rpc.io/eth" }, - "relayers": { - "0xproxy.eth": { - "url": "0xproxy.eth", - "name": "0xproxy.eth", - "cachedUrl": "http://mainnet.0x0relayer.xyz/" - }, - "0xtornadocash.eth": { - "url": "0xtornadocash.eth", - "name": "0xtornadocash.eth", - "cachedUrl": "http://mainnet-tornado-0xtornadocash-eth.crypto-bot.exchange/" - }, - "available-reliable-relayer.eth": { - "url": "available-reliable-relayer.eth", - "name": "available-reliable-relayer.eth", - "cachedUrl": "http://mainnet-tornado-arr-eth.crypto-bot.exchange/" - }, - "bitah.eth": { - "url": "bitah.eth", - "name": "bitah.eth", - "cachedUrl": "http://tornado.bitah.link/" - }, - "cheap-relayer.eth": { - "url": "cheap-relayer.eth", - "name": "cheap-relayer.eth", - "cachedUrl": "http://mainnet-tornado.cheap-relayer.xyz/" - }, - "em3tornado.eth": { - "url": "em3tornado.eth", - "name": "em3tornado.eth", - "cachedUrl": "http://em3torn.com/" - }, - "lowcost.eth": { - "url": "lowcost.eth", - "name": "lowcost.eth", - "cachedUrl": "http://mainnet-tornado.low-fee.xyz/" - }, - "relayer007.eth": { - "url": "relayer007.eth", - "name": "relayer007.eth", - "cachedUrl": "http://torn.relayersdao.finance/" - }, - "reltor.eth": { - "url": "reltor.eth", - "name": "reltor.eth", - "cachedUrl": "http://reltor.su/" - }, - "shadow-out.eth": { - "url": "shadow-out.eth", - "name": "shadow-out.eth", - "cachedUrl": "http://torn-relayer.shadowninjas.xyz/" - }, - "thornadope.eth": { - "url": "thornadope.eth", - "name": "thornadope.eth", - "cachedUrl": "http://thornadope.xyz/" - }, - "torn-eth.eth": { - "url": "torn-eth.eth", - "name": "torn-eth.eth", - "cachedUrl": "http://mainnet-tornado.50swap.com/" - }, - "torn-relayers.eth": { - "url": "torn-relayers.eth", - "name": "torn-relayers.eth", - "cachedUrl": "http://mainnet.tornrelayers.com/" - }, - "torn-secure.eth": { - "url": "torn-secure.eth", - "name": "torn-secure.eth", - "cachedUrl": "http://mainnet-tornado.secure-relays.site/" - }, - "torn69.eth": { - "url": "torn69.eth", - "name": "torn69.eth", - "cachedUrl": "http://m2.torn69.gq/" - }, - "tornado-crypto-bot-exchange.eth": { - "url": "tornado-crypto-bot-exchange.eth", - "name": "tornado-crypto-bot-exchange.eth", - "cachedUrl": "http://tornado.crypto-bot.exchange/" - }, - "torndao.eth": { - "url": "torndao.eth", - "name": "torndao.eth", - "cachedUrl": "http://eth-tornado.zkany.com/" - }, - "tornrelayers.eth": { - "url": "tornrelayers.eth", - "name": "tornrelayers.eth", - "cachedUrl": "http://mainnet-tornado-tornrelayer-eth.crypto-bot.exchange/" - } - } - }, - "netId56":{ - "rpcUrls":{ - "publicRpc1":{ - "name":"BSC Public RPC 1", - "url":"https://1rpc.io/bnb" - }, - "publicRpc2":{ - "name":"BSC Public RPC 2", - "url":"https://bsc-dataseed1.defibit.io" - }, - "publicRpc3":{ - "name":"BSC Public RPC 3", - "url":"https://bsc-dataseed1.ninicoin.io" - }, - }, - "relayers": { - "0xproxy.eth": { - "url": "0xproxy.eth", - "name": "0xproxy.eth", - "cachedUrl": "http://bsc.0x0relayer.xyz/" - }, - "bitah.eth": { - "url": "bitah.eth", - "name": "bitah.eth", - "cachedUrl": "http://bsc-tornado.bitah.link/" - }, - "cheap-relayer.eth": { - "url": "cheap-relayer.eth", - "name": "cheap-relayer.eth", - "cachedUrl": "http://bsc-tornado.cheap-relayer.xyz/" - }, - "em3tornado.eth": { - "url": "em3tornado.eth", - "name": "em3tornado.eth", - "cachedUrl": "http://bsc.em3torn.com/" - }, - "lowcost.eth": { - "url": "lowcost.eth", - "name": "lowcost.eth", - "cachedUrl": "http://bsc-tornado.low-fee.xyz/" - }, - "relayer007.eth": { - "url": "relayer007.eth", - "name": "relayer007.eth", - "cachedUrl": "http://bsc.relayersdao.finance/" - }, - "reltor.eth": { - "url": "reltor.eth", - "name": "reltor.eth", - "cachedUrl": "http://bsc.reltor.su/" - }, - "thornadope.eth": { - "url": "thornadope.eth", - "name": "thornadope.eth", - "cachedUrl": "http://tornado-bsc.thornadope.xyz/" - }, - "torn-relay.eth": { - "url": "torn-relay.eth", - "name": "torn-relay.eth", - "cachedUrl": "http://bsc.torn-relay.com/" - }, - "torn-relayers.eth": { - "url": "torn-relayers.eth", - "name": "torn-relayers.eth", - "cachedUrl": "http://bsc.tornrelayers.com/" - }, - "torn-secure.eth": { - "url": "torn-secure.eth", - "name": "torn-secure.eth", - "cachedUrl": "http://bsc-v0.secure-relays.site/" - }, - "torn69.eth": { - "url": "torn69.eth", - "name": "torn69.eth", - "cachedUrl": "http://bsc.0x111111.xyz/" - }, - "tornado-crypto-bot-exchange.eth": { - "url": "tornado-crypto-bot-exchange.eth", - "name": "tornado-crypto-bot-exchange.eth", - "cachedUrl": "http://tornado-bsc.crypto-bot.exchange/" - }, - "torndao.eth": { - "url": "torndao.eth", - "name": "torndao.eth", - "cachedUrl": "http://bsc-tornado.zkany.com/" - } - } - }, - "netId100":{ - "rpcUrls":{ - "publicRpc":{ - "name":"Gnosis Chain RPC", - "url":"https://rpc.gnosischain.com" - } - }, - "relayers":{ - "torndao.eth": { - "url": "torndao.eth", - "name": "torndao.eth", - "cachedUrl": "http://gnosis-tornado.zkany.com/" - } + "Chainnodes": { + "name": "Chainnodes", + "url": "https://mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607" } - }, - "netId137":{ - "rpcUrls":{ - "publicRpc1":{ - "name":"1RPC", - "url":"https://1rpc.io/matic" - }, - "Chainnodes":{ - "name": "Chainnodes", - "url": "https://polygon-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607" - } + }, + "relayers": { + "0xproxy.eth": { + "url": "0xproxy.eth", + "name": "0xproxy.eth", + "cachedUrl": "http://mainnet.0x0relayer.xyz/" }, - "relayers": { - "cheap-relayer.eth": { - "url": "cheap-relayer.eth", - "name": "cheap-relayer.eth", - "cachedUrl": "http://polygon-tornado.cheap-relayer.xyz/" - }, - "lowcost.eth": { - "url": "lowcost.eth", - "name": "lowcost.eth", - "cachedUrl": "http://polygon-tornado.low-fee.xyz/" - }, - "relayer007.eth": { - "url": "relayer007.eth", - "name": "relayer007.eth", - "cachedUrl": "http://matic.relayersdao.finance/" - }, - "reltor.eth": { - "url": "reltor.eth", - "name": "reltor.eth", - "cachedUrl": "http://polygon.reltor.su/" - }, - "thornadope.eth": { - "url": "thornadope.eth", - "name": "thornadope.eth", - "cachedUrl": "http://tornado-polygon.thornadope.xyz/" - }, - "torn-secure.eth": { - "url": "torn-secure.eth", - "name": "torn-secure.eth", - "cachedUrl": "http://poly-v0.secure-relays.site/" - }, - "tornado-crypto-bot-exchange.eth": { - "url": "tornado-crypto-bot-exchange.eth", - "name": "tornado-crypto-bot-exchange.eth", - "cachedUrl": "http://tornado-polygon.crypto-bot.exchange/" - }, - "torndao.eth": { - "url": "torndao.eth", - "name": "torndao.eth", - "cachedUrl": "http://polygon-tornado.zkany.com/" - } + "0xtornadocash.eth": { + "url": "0xtornadocash.eth", + "name": "0xtornadocash.eth", + "cachedUrl": "http://mainnet-tornado-0xtornadocash-eth.crypto-bot.exchange/" + }, + "available-reliable-relayer.eth": { + "url": "available-reliable-relayer.eth", + "name": "available-reliable-relayer.eth", + "cachedUrl": "http://mainnet-tornado-arr-eth.crypto-bot.exchange/" + }, + "bitah.eth": { + "url": "bitah.eth", + "name": "bitah.eth", + "cachedUrl": "http://tornado.bitah.link/" + }, + "cheap-relayer.eth": { + "url": "cheap-relayer.eth", + "name": "cheap-relayer.eth", + "cachedUrl": "http://mainnet-tornado.cheap-relayer.xyz/" + }, + "em3tornado.eth": { + "url": "em3tornado.eth", + "name": "em3tornado.eth", + "cachedUrl": "http://em3torn.com/" + }, + "lowcost.eth": { + "url": "lowcost.eth", + "name": "lowcost.eth", + "cachedUrl": "http://mainnet-tornado.low-fee.xyz/" + }, + "relayer007.eth": { + "url": "relayer007.eth", + "name": "relayer007.eth", + "cachedUrl": "http://torn.relayersdao.finance/" + }, + "reltor.eth": { + "url": "reltor.eth", + "name": "reltor.eth", + "cachedUrl": "http://reltor.su/" + }, + "shadow-out.eth": { + "url": "shadow-out.eth", + "name": "shadow-out.eth", + "cachedUrl": "http://torn-relayer.shadowninjas.xyz/" + }, + "thornadope.eth": { + "url": "thornadope.eth", + "name": "thornadope.eth", + "cachedUrl": "http://thornadope.xyz/" + }, + "torn-eth.eth": { + "url": "torn-eth.eth", + "name": "torn-eth.eth", + "cachedUrl": "http://mainnet-tornado.50swap.com/" + }, + "torn-relayers.eth": { + "url": "torn-relayers.eth", + "name": "torn-relayers.eth", + "cachedUrl": "http://mainnet.tornrelayers.com/" + }, + "torn-secure.eth": { + "url": "torn-secure.eth", + "name": "torn-secure.eth", + "cachedUrl": "http://mainnet-tornado.secure-relays.site/" + }, + "torn69.eth": { + "url": "torn69.eth", + "name": "torn69.eth", + "cachedUrl": "http://m2.torn69.gq/" + }, + "tornado-crypto-bot-exchange.eth": { + "url": "tornado-crypto-bot-exchange.eth", + "name": "tornado-crypto-bot-exchange.eth", + "cachedUrl": "http://tornado.crypto-bot.exchange/" + }, + "torndao.eth": { + "url": "torndao.eth", + "name": "torndao.eth", + "cachedUrl": "http://eth-tornado.zkany.com/" + }, + "tornrelayers.eth": { + "url": "tornrelayers.eth", + "name": "tornrelayers.eth", + "cachedUrl": "http://mainnet-tornado-tornrelayer-eth.crypto-bot.exchange/" } - }, - "netId42161":{ - "rpcUrls":{ - "publicRpc1":{ - "name":"Arbitrum Public RPC", - "url":"https://arb1.arbitrum.io/rpc" - }, - "publicRpc2":{ - "name": "ChainnodesRPC", - "url": "https://arbitrum-one.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607" - } + } + }, + "netId56": { + "rpcUrls": { + "publicRpc1": { + "name": "BSC Public RPC 1", + "url": "https://1rpc.io/bnb" }, - "relayers":{ - "tornado-crypto-bot-exchange.eth": { - "url": "tornado-crypto-bot-exchange.eth", - "name": "tornado-crypto-bot-exchange.eth", - "cachedUrl": "http://tornado-arbitrum.crypto-bot.exchange/" - }, - "torndao.eth": { - "url": "torndao.eth", - "name": "torndao.eth", - "cachedUrl": "http://arbitrum-tornado.zkany.com/" - } + "publicRpc2": { + "name": "BSC Public RPC 2", + "url": "https://bsc-dataseed1.defibit.io" + }, + "publicRpc3": { + "name": "BSC Public RPC 3", + "url": "https://bsc-dataseed1.ninicoin.io" } - }, - "netId43114":{ - "rpcUrls":{ - "publicRpc":{ - "name":"1RPC", - "url":"https://1rpc.io/avax/c" - } + }, + "relayers": { + "0xproxy.eth": { + "url": "0xproxy.eth", + "name": "0xproxy.eth", + "cachedUrl": "http://bsc.0x0relayer.xyz/" }, - "relayers":{ - "cheap-relayer.eth": { - "url": "cheap-relayer.eth", - "name": "cheap-relayer.eth", - "cachedUrl": "http://avalanche-tornado.cheap-relayer.xyz/" - }, - "lowcost.eth": { - "url": "lowcost.eth", - "name": "lowcost.eth", - "cachedUrl": "http://avalanche-tornado.low-fee.xyz/" - }, - "thornadope.eth": { - "url": "thornadope.eth", - "name": "thornadope.eth", - "cachedUrl": "http://tornado-avalanche.thornadope.xyz/" - }, - "tornado-crypto-bot-exchange.eth": { - "url": "tornado-crypto-bot-exchange.eth", - "name": "tornado-crypto-bot-exchange.eth", - "cachedUrl": "http://tornado-avalanche.crypto-bot.exchange/" - } + "bitah.eth": { + "url": "bitah.eth", + "name": "bitah.eth", + "cachedUrl": "http://bsc-tornado.bitah.link/" + }, + "cheap-relayer.eth": { + "url": "cheap-relayer.eth", + "name": "cheap-relayer.eth", + "cachedUrl": "http://bsc-tornado.cheap-relayer.xyz/" + }, + "em3tornado.eth": { + "url": "em3tornado.eth", + "name": "em3tornado.eth", + "cachedUrl": "http://bsc.em3torn.com/" + }, + "lowcost.eth": { + "url": "lowcost.eth", + "name": "lowcost.eth", + "cachedUrl": "http://bsc-tornado.low-fee.xyz/" + }, + "relayer007.eth": { + "url": "relayer007.eth", + "name": "relayer007.eth", + "cachedUrl": "http://bsc.relayersdao.finance/" + }, + "reltor.eth": { + "url": "reltor.eth", + "name": "reltor.eth", + "cachedUrl": "http://bsc.reltor.su/" + }, + "thornadope.eth": { + "url": "thornadope.eth", + "name": "thornadope.eth", + "cachedUrl": "http://tornado-bsc.thornadope.xyz/" + }, + "torn-relay.eth": { + "url": "torn-relay.eth", + "name": "torn-relay.eth", + "cachedUrl": "http://bsc.torn-relay.com/" + }, + "torn-relayers.eth": { + "url": "torn-relayers.eth", + "name": "torn-relayers.eth", + "cachedUrl": "http://bsc.tornrelayers.com/" + }, + "torn-secure.eth": { + "url": "torn-secure.eth", + "name": "torn-secure.eth", + "cachedUrl": "http://bsc-v0.secure-relays.site/" + }, + "torn69.eth": { + "url": "torn69.eth", + "name": "torn69.eth", + "cachedUrl": "http://bsc.0x111111.xyz/" + }, + "tornado-crypto-bot-exchange.eth": { + "url": "tornado-crypto-bot-exchange.eth", + "name": "tornado-crypto-bot-exchange.eth", + "cachedUrl": "http://tornado-bsc.crypto-bot.exchange/" + }, + "torndao.eth": { + "url": "torndao.eth", + "name": "torndao.eth", + "cachedUrl": "http://bsc-tornado.zkany.com/" } - }, - "netId10":{ - "rpcUrls":{ - "publicRpc1":{ - "name":"1RPC", - "url":"https://1rpc.io/op" - }, - "Chainnodes":{ - "name": "Chainnodes", - "url": "https://optimism-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607" - } - }, - "relayers":{ - "tornado-crypto-bot-exchange.eth": { - "url": "tornado-crypto-bot-exchange.eth", - "name": "tornado-crypto-bot-exchange.eth", - "cachedUrl": "http://tornado-optimism.crypto-bot.exchange/" - } + } + }, + "netId100": { + "rpcUrls": { + "publicRpc": { + "name": "Gnosis Chain RPC", + "url": "https://rpc.gnosischain.com" } - }, - "netId5":{ - "rpcUrls":{ - "Chainnodes":{ - "name":"Chainnodes RPC", - "url":"https://goerli.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607" - } + }, + "relayers": { + "torndao.eth": { + "url": "torndao.eth", + "name": "torndao.eth", + "cachedUrl": "http://gnosis-tornado.zkany.com/" + } + } + }, + "netId137": { + "rpcUrls": { + "publicRpc1": { + "name": "1RPC", + "url": "https://1rpc.io/matic" }, - "relayers":{} - } + "Chainnodes": { + "name": "Chainnodes", + "url": "https://polygon-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607" + } + }, + "relayers": { + "cheap-relayer.eth": { + "url": "cheap-relayer.eth", + "name": "cheap-relayer.eth", + "cachedUrl": "http://polygon-tornado.cheap-relayer.xyz/" + }, + "lowcost.eth": { + "url": "lowcost.eth", + "name": "lowcost.eth", + "cachedUrl": "http://polygon-tornado.low-fee.xyz/" + }, + "relayer007.eth": { + "url": "relayer007.eth", + "name": "relayer007.eth", + "cachedUrl": "http://matic.relayersdao.finance/" + }, + "reltor.eth": { + "url": "reltor.eth", + "name": "reltor.eth", + "cachedUrl": "http://polygon.reltor.su/" + }, + "thornadope.eth": { + "url": "thornadope.eth", + "name": "thornadope.eth", + "cachedUrl": "http://tornado-polygon.thornadope.xyz/" + }, + "torn-secure.eth": { + "url": "torn-secure.eth", + "name": "torn-secure.eth", + "cachedUrl": "http://poly-v0.secure-relays.site/" + }, + "tornado-crypto-bot-exchange.eth": { + "url": "tornado-crypto-bot-exchange.eth", + "name": "tornado-crypto-bot-exchange.eth", + "cachedUrl": "http://tornado-polygon.crypto-bot.exchange/" + }, + "torndao.eth": { + "url": "torndao.eth", + "name": "torndao.eth", + "cachedUrl": "http://polygon-tornado.zkany.com/" + } + } + }, + "netId42161": { + "rpcUrls": { + "publicRpc1": { + "name": "Arbitrum Public RPC", + "url": "https://arb1.arbitrum.io/rpc" + }, + "publicRpc2": { + "name": "ChainnodesRPC", + "url": "https://arbitrum-one.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607" + } + }, + "relayers": { + "tornado-crypto-bot-exchange.eth": { + "url": "tornado-crypto-bot-exchange.eth", + "name": "tornado-crypto-bot-exchange.eth", + "cachedUrl": "http://tornado-arbitrum.crypto-bot.exchange/" + }, + "torndao.eth": { + "url": "torndao.eth", + "name": "torndao.eth", + "cachedUrl": "http://arbitrum-tornado.zkany.com/" + } + } + }, + "netId43114": { + "rpcUrls": { + "publicRpc": { + "name": "1RPC", + "url": "https://1rpc.io/avax/c" + } + }, + "relayers": { + "cheap-relayer.eth": { + "url": "cheap-relayer.eth", + "name": "cheap-relayer.eth", + "cachedUrl": "http://avalanche-tornado.cheap-relayer.xyz/" + }, + "lowcost.eth": { + "url": "lowcost.eth", + "name": "lowcost.eth", + "cachedUrl": "http://avalanche-tornado.low-fee.xyz/" + }, + "thornadope.eth": { + "url": "thornadope.eth", + "name": "thornadope.eth", + "cachedUrl": "http://tornado-avalanche.thornadope.xyz/" + }, + "tornado-crypto-bot-exchange.eth": { + "url": "tornado-crypto-bot-exchange.eth", + "name": "tornado-crypto-bot-exchange.eth", + "cachedUrl": "http://tornado-avalanche.crypto-bot.exchange/" + } + } + }, + "netId10": { + "rpcUrls": { + "publicRpc1": { + "name": "1RPC", + "url": "https://1rpc.io/op" + }, + "Chainnodes": { + "name": "Chainnodes", + "url": "https://optimism-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607" + } + }, + "relayers": { + "tornado-crypto-bot-exchange.eth": { + "url": "tornado-crypto-bot-exchange.eth", + "name": "tornado-crypto-bot-exchange.eth", + "cachedUrl": "http://tornado-optimism.crypto-bot.exchange/" + } + } + }, + "netId5": { + "rpcUrls": { + "Chainnodes": { + "name": "Chainnodes RPC", + "url": "https://goerli.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607" + } + }, + "relayers": {} + } } ```