Proposal #31: Finalize sources decentralization

Context

This proposal is a logical continuation and addition to the recently executed proposal 30, expanding the possibilities for interaction with the decentralized sources of Tornado Cash. Currently, users who are not familiar with the previous proposal are practically unaware of source decentralization, and also cannot support it in any way - today’s change is intended to correct this.

If this proposal is accepted, any user who has a Linux server (the characteristics are not important, even the weakest one will do), with one command will be able to install an IPFS node and “pin” all the Tornado sources and sites on it (this will take about 2GB of free space). Even if all third-party resources (Filebase, Pinata) stop hosting Tornado Cash IPFS content and the developer’s servers are stopped, even one person running this script will be enough for every user to have access to sites via IPFS and any developer can download the latest version of the Tornado sources and restore the current state of git.

In addition, this proposal also implements @ButterflyEffect idea of recovering ~1500 USDT from the TORN token contract and using it for the needs of the project - since this doesn’t use any Governance funds, I see no point in making it a separate proposal.

Changes description

  1. Created script to automatically deploy an IPFS node, download the necessary dependencies and then save a copy of all Tornado Cash IPFS content and IPFS peering;
  2. All information about decentralized sources has been added to the current project documentation, and the IPFS contenthash of the documentation itself has been updated;
  3. Updated guide for decentralized sources usage;
  4. Changes made to the relayer software due to the recent attack have been added to the sources on IPFS. Also, the software for Classic and Nova relayers is now combined into one repository and can be easily installed and launched with one script.
Full list of other ENS subdomains with IPFS hashes (click to open)
  • sources.tornadocash.eth
    • IPFS: bafybeia2s5em2xypmtdifuyj62xwgveujygs4vzoqhbqd2um45wbdxxb6u
  • download.sources.tornadocash.eth
    • IPFS: bafybeiepown476yzjs2zcymrn3t7d4oseuaw6a2rjnkdbu73jrp3evfdxm
  • help.sources.tornadocash.eth
    • IPFS: bafybeiamry2yocpde5lnuflghguk5w7wsuajbvhhhqw4nyoacl7fw6he5e
  • relayers-ui.tornadocash.eth
    • IPFS: bafybeicsuuzr6l7vpttvwl5urbyof4pqouwq3iva2yjbaqbizzmtbf3k3m
  • relayers-network.tornadocash.eth
    • IPFS: bafybeicsuuzr6l7vpttvwl5urbyof4pqouwq3iva2yjbaqbizzmtbf3k3m
  • relayers-ui.sources.tornadocash.eth
    • IPFS: bafybeids3v76bc6jqqcmhixealnmqf2wfmsthksutrdv5dufxgrgnpcqpq
  • relayer.sources.tornadocash.eth
    • IPFS: bafybeic5khiolneygd2z7epwunxejrannfdua6gf4w2b4dpu6i753we3cm
  • docs.tornadocash.eth
    • IPFS: bafybeidbkei7sleaq6sguol7o4cg3dao5vl3e753siq6jutqgb7q7myxuq
  • docs.sources.tornadocash.eth
    • IPFS: bafybeifafnwfqrtrlsxhbuhxu7pqts6jfg227f6trxitb76ujkqk34q5vi

Proposal

Verified contract code: 0x87477dD2D9cb84112021E77dB85bC7eb2dfB1160

Tests and verification

In general, everything is similar to proposal 30 - all IPFS hashes and ENS domain nodes are generated by scripts and anyone can run in the repository proposal-31 from the link above and check it out.

You can also check the download script or see with your own hands what will happen if the proposal is accepted, on the ENS domain tornadotest.eth in the Goerli network. However, since the site by default shows domains on the Ethereum Mainnet network, you first need to connect MetaMask and change the network to Goerli Testnet.