GitBook: [#70] Adding Nova + Smart contract addresses
This commit is contained in:
parent
da4bb406f1
commit
fadc99e839
19 changed files with 586 additions and 88 deletions
109
general/community-involvement.md
Normal file
109
general/community-involvement.md
Normal file
|
@ -0,0 +1,109 @@
|
|||
# Community Involvement
|
||||
|
||||
In a Decentralized Autonomous Organization (DAO), significant elements such as protocol parameters & token distribution are controlled by the community through governance. This governance allows the community to shape & continuously improve the protocol.
|
||||
|
||||
However, the role of a community does not stop to suggesting proposals & expressing its opinion through votes. The community can also actively contribute to the success and prosperity of their protocol through constructive debates, mutual help and specific actions.
|
||||
|
||||
You can meet Tornado.Cash community on its very own forum & on social medias. Here are useful links to join Tornado.Cash community
|
||||
|
||||
* ****[**Tornado.Cash community forum**](https://torn.community)****
|
||||
* ****[**Tornado.Cash Discord Server**](https://discord.com/invite/TFDrM8K42j)****
|
||||
* ****[**Tornado.Cash Telegram Discussions**](https://t.me/TornadoCashOfficial)****
|
||||
|
||||
_If you are interested, more information is available about_ [_Tornado.Cash governance rules & functioning._ ](governance.md)__
|
||||
|
||||
## How to Get Involved?
|
||||
|
||||
To help building future enhanced versions of Tornado.Cash, all skills & talents are well welcomed. Involvement opportunities are almost unlimited. Those opportunities involve any function or contribution that improves the protocol and its position within the blockchain ecosystem.
|
||||
|
||||
Tornado.Cash community is looking for:
|
||||
|
||||
* developers that can help continue building the protocol & its tools;
|
||||
* auditors who can review code to find bugs and vulnerabilities;
|
||||
* content creators in order to make educational or promotional content to attract new users to the protocol (videos, blogs, memes, etc.)
|
||||
* designers that can refine protocol architecture & design;
|
||||
* potential hires for the DAO;
|
||||
* ...
|
||||
|
||||
## Tornado.Cash Community Fund
|
||||
|
||||
On June 2021, Tornado.Cash community has voted the implementation of a community fund to award its key contributors ([proposal #7](https://app.tornado.cash/governance/7)). The management of this fund lies between the hand of the community. Tornado.Cash users are the one who decide whose contribution is eligible for a compensation.
|
||||
|
||||
###
|
||||
|
||||
### Fund Details
|
||||
|
||||
Tornado.Cash Community Fund has been allocated 5% of total available TORN of the governance treasury, broken down as follows:
|
||||
|
||||
* 5% of the already vested 485.3k TORN at that time, resulting on an **initial transfer of 22.9k TORN** _->_ [_Transaction Details_](https://etherscan.io/tx/0xbe95f4268df2023d9ef234c1eedbb597b99e4c6e7d396d8f521ee482a1d93d47)__\
|
||||
__
|
||||
* 5% of the monthly 91.6k that will be vested in the next 12 month, which result on **a monthly transfer of approx. 4.6k TORN** (a total of approx. 55k TORN over a year)
|
||||
|
||||
The monthly allocation of the Fund was programmed through [Sablier](https://sablier.finance), a protocol built on Ethereum that allows a live stream of remaining TORNs (second by second) over 12 months. 
|
||||
|
||||
In total, an amount of approximatively **78k TORN** was allocated to this Community Fund. As of the end of August 2021, the balance of the Community Fund is about \~12.6k TORN vested in Sablier & 15.5k TORN in the Gnosis safe. As of the beginning of 2022, the Community Fund (on Gnosis Safe) balance amounts to \~36.4k TORN.
|
||||
|
||||
Tornado.Cash Community Contract is: [0xb04E030140b30C27bcdfaafFFA98C57d80eDa7B4](https://gnosis-safe.io/app/#/safes/0xb04E030140b30C27bcdfaafFFA98C57d80eDa7B4/balances). 
|
||||
|
||||
Funds are handled through a Multi-signature Wallet on Gnosis Safe. Keys to manage this wallet were put between the hand of 5 peer-elected community members. To validate a transaction, a consensus of 4-of-5 signatures is needed.
|
||||
|
||||
Those multi-signatures key holders were chosen for their contribution & commitment to Tornado.Cash and its Community. They pledged to sign off transaction following the community instructions. Those guidelines are expressed through forum discussion and corroborated by a Snapshot vote.
|
||||
|
||||
All signers also pledged to resign if they no longer fulfill their allegiance to Tornado’s prosperity. They can also be dismissed from their role under the decision of the the community. To reward their commitment as signers & key contributors for Tornado.Cash community, a minimum of 100 TORN per month per signer has been deployed through Sablier.
|
||||
|
||||
The current 5 multi-signatures key holders are: 
|
||||
|
||||
* [0xd26BaA5F41CC7839CEdb020b6d98E1C6e1642D75](https://etherscan.io/address/0xd26BaA5F41CC7839CEdb020b6d98E1C6e1642D75)
|
||||
* [0x7c09bCa28ba3DB1CF7cd793696B161261cAC27b5](https://etherscan.io/address/0x7c09bCa28ba3DB1CF7cd793696B161261cAC27b5)
|
||||
* [0x339B45fBEed1ab46Fe9c11f484b0Ea7220e75300](https://etherscan.io/address/0x339B45fBEed1ab46Fe9c11f484b0Ea7220e75300)
|
||||
* [0x647e9e26DA82C29AAFbbFB1C3f45d916AA9b300d](https://etherscan.io/address/0x647e9e26DA82C29AAFbbFB1C3f45d916AA9b300d)
|
||||
* [0xEA27752f7D6687CB3Be2F180B997713b784c9911](https://etherscan.io/address/0xEA27752f7D6687CB3Be2F180B997713b784c9911)
|
||||
|
||||
|
||||
|
||||
### How to Claim a Reward?
|
||||
|
||||
Each member has the ability to ask the community for a compensation from this fund to reward his/her contribution to Tornado.Cash. Each member also has the ability to request a compensation on behalf of another member to reward him/her for his/her work.
|
||||
|
||||
To this extent, a new category titled **« Funding »** has been created on Tornado.Cash discussion forum. By creating a new post in the category, all members can open a funding request to use the Community Fund. Discussions regarding terms & conditions of such a request are discussed on this post. 
|
||||
|
||||
Once those terms & conditions are fixed, a vote is conducted on Snapshot to validate (or not) such a funding request.
|
||||
|
||||
Here is Tornado.Cash Snapshot space:[ https://snapshot.org/#/torn-community.eth](https://snapshot.org/#/torn-community.eth).
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
### How to Vote on Snapshot?
|
||||
|
||||
Each specific funding request is accompanied by a Snapshot vote, where TORN holders can explicitly express their position. The result of this Snapshot vote provides the final instruction to multi-signature key holders on wether to transfer the decided reward amount to the concerned member.
|
||||
|
||||
Each snapshot vote has a `window of 3 days` to accumulate TORN holders votes. When the end date is reached, the Snapshot status goes from`Active` to `Closed`. Community members can no longer vote. 
|
||||
|
||||

|
||||
|
||||
Multi-signature key holders consider that the funding request is validated by the community if:
|
||||
|
||||
* The majority of TORN holders have voted `Accept` rather than `Refuse`.
|
||||
* The `5,000` TORN quorum has been reached.
|
||||
|
||||
All Snapshot funding request are designed the same way: a s**ingle choice voting system** where users decide wether they are **For or Against** the given proposition.
|
||||
|
||||
Steps to vote on Snapshot are quite intuitive. The community member needs to:
|
||||
|
||||
* Connect the wallet holding TORNs thanks to either MetaMask, WalletConnect or Torus;
|
||||
|
||||

|
||||
|
||||
* Cast the vote, by either clicking on `Accept` or `Refuse`;
|
||||
|
||||

|
||||
|
||||
* Confirm the vote.
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
_Written by_ [_@ayefda_](https://torn.community/u/ayefda)__
|
96
general/governance.md
Normal file
96
general/governance.md
Normal file
|
@ -0,0 +1,96 @@
|
|||
# Governance
|
||||
|
||||
The following governance rules apply to all Tornado Cash pools (including Tornado Cash Nova).
|
||||
|
||||
### How to suggest a proposal ?
|
||||
|
||||
In order to participate in Tornado.Cash governance, users first need to lock tokens in the governance contract. If a user votes or creates a proposal, the tokens cannot be unlocked before the proposal execution period ends (8.25 days from proposal creation). The locked tokens can also be delegated to another address.
|
||||
|
||||
To create a proposal, a user needs to have at least `1,000 TORN`. All proposals must be smart contracts with verified code that are executed from the [governance contract ](https://etherscan.io/address/0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce)(using `delegatecall`). This way, it’s easy to audit and test any governance changes.
|
||||
|
||||
The voting period for a proposal is 3 days. A proposal will succeed if it receives a simple majority of votes and there are at least `25,000 TORN` total votes (if turnout is too low, the proposal automatically fails).
|
||||
|
||||
After a proposal succeeds, it is subject for a timelock of 2 days. After the timelock, any user is able to execute the proposal (which initiates the changes). If proposal is not executed for 3 days after that, it is considered _expired_ and can no longer be executed.
|
||||
|
||||
All of these initial parameters are relatively small, since there won’t be many TORN tokens in circulation early on. But as the circulating supply increases, governance may adjust these thresholds.
|
||||
|
||||
A proposal can be of the following nature:
|
||||
|
||||
* Adding a new Tornado Cash pool in the proxy
|
||||
* Changing the AP reward rates parameters
|
||||
* Unpause/Pause the TORN token
|
||||
* Change some core mining contracts such as the `TornadoTrees` contract
|
||||
* A combination of all of the above
|
||||
|
||||
And many more can be done. To find out exactly what can be changed through governance in the protocol, look for the functions with the modifier `onlyGovernance` in the smart contracts.
|
||||
|
||||
The governance functions are represented by a red arrow in [this architecture diagram.](https://viewer.diagrams.net/?highlight=0000ff\&edit=\_blank\&layers=1\&nav=1\&title=tornado-cash-contract-overview.drawio#Uhttps%3A%2F%2Fraw.githubusercontent.com%2FRezan-vm%2Ftornado-cash-edu%2Fmain%2Ftornado-cash-contract-overview.drawio)
|
||||
|
||||
NOTE: Parts of this article was taken from [this medium post.](https://tornado-cash.medium.com/tornado-cash-governance-proposal-a55c5c7d0703) Credits goes to the Tornado cash team.
|
||||
|
||||
### How to vote ?
|
||||
|
||||
You first need to deposit (or lock) TORN tokens into the governance contract.
|
||||
|
||||
Go to: [https://app.tornado.cash/governance](https://app.tornado.cash/governance)
|
||||
|
||||
Click `Manage` -> `Lock Tab`
|
||||
|
||||
Approve the governance contract to transfer your TORN tokens by clicking on the `Approve` button. Once the approve is confirmed, chose the amount you want to deposit and click `Lock`. Confirm the transaction in your wallet and wait for the confirmation.
|
||||
|
||||

|
||||
|
||||
Before the vote, the next crucial step is to review the proposal.\
|
||||
 Legitimate proposals should have a dedicated post on [Torn.community ](https://torn.community)under the category “Proposal”. The forum post will provide additional context and arguments on the proposal. Read the thread and make your own mind on the issue.
|
||||
|
||||
Once a proposal was submitted it should appear on:\
|
||||
[https://app.tornado.cash/governance](https://app.tornado.cash/governance)\
|
||||
 Proposal are implemented in the form of a smart contract making changes to the system. It is therefore important to verify the address of the smart-contract and review its code. Find the address of the proposal contract here:
|
||||
|
||||

|
||||
|
||||
Look for the contract address on Etherscan and make sure that the source code is verified and readable.
|
||||
|
||||

|
||||
|
||||
Read the source code and make sure that it matches what is described in the forum post.
|
||||
|
||||
If you are not technical or not comfortable to read Solidity code, get someone you trust to review the contract for you.
|
||||
|
||||
If you agree (or disagree) with the proposal code, it time to vote!
|
||||
|
||||
A proposal have a voting windows of 3 days. This means that we have 3 days to reach the vote quorum of 25k TORN.
|
||||
|
||||
Important: Once you voted, your tokens will be locked for 8.25 days from the moment the proposal was submitted (the start of the 3 days voting period). After the 8.25 you can withdraw your tokens from the governance contract. Note that you can vote on 2 proposal at the same time without incurring additional lockup period (Only the most recently submitted proposal will matter for the 8.25 lockup).
|
||||
|
||||
To vote, simply click on the Green check mark or the the red cross depending whether you accept or reject the proposal. Confirm the transaction with Metamask and your vote is in!
|
||||
|
||||
### How to delegate the vote ?
|
||||
|
||||
If you are a TORN token holder, you can delegate your voting power to someone else without having to send him the tokens.
|
||||
|
||||
IMPORTANT: If you delegate your tokens and that your delegate votes or initiate a proposal, your tokens will be locked for 8.25 days from the moment the proposal that the delegate voted on started. Note that that you can always undelegate at any time.
|
||||
|
||||
To achieve delegation, go to: [https://app.tornado.cash/governance](https://app.tornado.cash/governance)
|
||||
|
||||
You first need to lock your tokens in the governance contract. Click **`Manage`** -> **`Lock`** tab
|
||||
|
||||
Approve the governance contract to transfer your TORN tokens by clicking on the **`Approve`** button. Once the approve is confirmed, chose the amount you want to delegate and click **`Lock`**. Confirm the transaction in your wallet and wait for the confirmation.
|
||||
|
||||
.png>)
|
||||
|
||||
The last step, is to make the actual delegation. Go again to [https://app.tornado.cash/governance](https://app.tornado.cash/governance)
|
||||
|
||||
Click **`Manage`** -> **`Delegate`** tab
|
||||
|
||||
Fill-in the address to which you want to delegate and click **`Delegate`**. Approve the transaction in your wallet and wait for confirmation.
|
||||
|
||||

|
||||
|
||||
The totality of your locked balance will be delegated.
|
||||
|
||||
You can undelegate at anytime. To undelegate simply use the `Undelegate` Button in `Manage` -> `Undelegate` Tab.
|
||||
|
||||
|
||||
|
||||
_Written by_ [_@rezan_](https://torn.community/u/Rezan/summary)__
|
44
general/how-does-tornado.cash-work.md
Normal file
44
general/how-does-tornado.cash-work.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# How Does Tornado Cash Work?
|
||||
|
||||
Before diving in tutorials explaining & easing the use of Tornado.Cash, here is an overall overview of the protocol global functioning.
|
||||
|
||||
### Global overview of Tornado.Cash functioning
|
||||
|
||||
To achieve privacy, Tornado.Cash **uses smart contracts that accept tokens deposits from one address and enable their withdrawal from a different address**. Those smart contracts work as pools that mix all deposited assets. 
|
||||
|
||||
Once the funds are withdrawn by a complete new address from those pools, the on-chain link between the source & the destination is broken. The withdrawn crypto-assets are therefore anonymized. 
|
||||
|
||||
While tokens are in a Tornado Cash pool, the custody remains in users’ hands. Users, therefore, have a complete control over their tokens.
|
||||
|
||||
**For traditional Tornado Cash fixed amount pools**:
|
||||
|
||||
* When a user puts funds into a pool (a.k.a. the deposit), a private note is generated. This private note works as a private key for the user to access those funds later. To withdraw them, the same user can use a different address - an old or a new one - and recover his/her funds thanks to this private key.
|
||||
|
||||
**For Tornado Cash Nova, the new ETH pool with arbitrary amounts & shielded transfers**:
|
||||
|
||||
* Funds are directly linked to a given wallet address. There is no private note or key. Users can access their funds by connecting to the pool with the appropriate address.
|
||||
* Custody is either acquired by the act of depositing tokens into the pool or by registering to the pool & receiving shielded transfers from another address.
|
||||
|
||||
The strength of such a protocol comes naturally from its number of users and the size of its pool. The more users deposit into the pool the merrier. However, to preserve privacy & anonymity, the user must keep some basic rules in mind such as:
|
||||
|
||||
* Using a relayer to pay gas at withdrawal;
|
||||
* Leaving a lapse of time between the deposit & the withdrawal action;
|
||||
* Mixing its funds with the crowd by waiting for several transactions before recovering its assets.
|
||||
|
||||
_More recommendations are provided on:_ [_Tips to remain anonymous_](tips-to-remain-anonymous.md)_._
|
||||
|
||||
### Contribution of zk-SNARK & hashing process
|
||||
|
||||
Tornado.Cash use Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (also called zk-SNARK) to verify & allow transactions.
|
||||
|
||||
To process a deposit, Tornado.Cash generates a random area of bytes, computes it through the [Pederson Hash](https://iden3-docs.readthedocs.io/en/latest/iden3\_repos/research/publications/zkproof-standards-workshop-2/pedersen-hash/pedersen.html) (as it is friendlier with zk-SNARK), then send the token & the 20 mimc hash to the smart contract. The contract will then insert it into the Merkle tree.
|
||||
|
||||
To process a withdrawal, the same area of bytes is split into two separate parts: the **secret** on one side & the **nullifier** on the other side. The nullifier is hashed. This nullifier is a public input that is sent on-chain to get checked with the smart contrat & the Merkle tree data. It avoids double spending for instance.
|
||||
|
||||
Thanks to zk-SNARK, it is possible to prove the 20 mimc hash of the initial commitment and of the nullifier without revealing any information. Even if the nullifier is public, privacy is sustained as there is no way to link the hashed nullifier to the initial commitment. Besides, even if the information that the transaction is present in the Merkle root, the information about the exact Merkle path, thus the location of the transaction, is still kept private.
|
||||
|
||||
Deposits are simple on a technological point of view, but expensive in terms of gas as they need to compute the 20 mimc hash & update the Merkle tree. At the opposite, the withdrawal process is complex, but cheaper as gas is only needed for the nullifier hash and the zero-knowledge proof.
|
||||
|
||||
|
||||
|
||||
_Written & edited by_ [_@ayefda_](https://torn.community/u/ayefda)__
|
69
general/minified-ui-hosted-locally.md
Normal file
69
general/minified-ui-hosted-locally.md
Normal file
|
@ -0,0 +1,69 @@
|
|||
# Minified UI Hosted Locally
|
||||
|
||||
Tornado Cash protocol can be launched locally on your computer through a minified User Interface version made available by the core developers team.
|
||||
|
||||
{% embed url="https://github.com/tornadocash/ui-minified" %}
|
||||
|
||||
### Step #1: Clone the Github repository on your computer
|
||||
|
||||
By opening your Command Line Interface, you can run the following commands to, first, clone the repository, then go inside the newly copied folder:
|
||||
|
||||
```
|
||||
git clone https://github.com/tornadocash/ui-minified.git
|
||||
cd ui-minified
|
||||
```
|
||||
|
||||
### Step #2: Serve the Folder with Your Favorite HTTP Server
|
||||
|
||||
```
|
||||
python -m SimpleHTTPServer 8080
|
||||
```
|
||||
|
||||
You can obviously use any other http web server, such as[ npmjs.com/package/http-server](https://www.npmjs.com/package/http-server).
|
||||
|
||||
### Step #3: Run the UI on Localhost on your Favorite Web Browser
|
||||
|
||||
To finish, you just need to run [http://localhost:8080](http://localhost:8080) on your Web Browser & let the magic happens 🪄
|
||||
|
||||
## Running a TOR service
|
||||
|
||||
If you wish to serve tornado cash UI on an .onion domain, there is an easy way to do it using docker-compose.
|
||||
|
||||
* You need to paste the following into `docker-compose.yml`
|
||||
|
||||
```
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
tornado_ui:
|
||||
image: tornadocash/ui
|
||||
restart: always
|
||||
container_name: tornado_ui
|
||||
watchtower:
|
||||
image: v2tec/watchtower
|
||||
restart: always
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
command: --interval 60 tornado_ui
|
||||
tor:
|
||||
image: strm/tor
|
||||
restart: always
|
||||
depends_on: [ tornado_ui ]
|
||||
environment:
|
||||
LISTEN_PORT: 80
|
||||
REDIRECT: tornado_ui:80
|
||||
# Generate a new key with
|
||||
# docker run --rm --entrypoint shallot strm/tor-hiddenservice-nginx ^torn
|
||||
PRIVATE_KEY: |
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
...
|
||||
-----END RSA PRIVATE KEY-----
|
||||
```
|
||||
|
||||
* Then, just run the following command:`docker-compose up -d`
|
||||
|
||||
Enjoy your Tornado Cash UI 🌪
|
||||
|
||||
|
||||
|
||||
_This tutorial is inspired from the_[ _README.md document_](https://github.com/tornadocash/ui-minified/blob/gh-pages/README.md) _present in the Github repository._
|
31
general/tips-to-remain-anonymous.md
Normal file
31
general/tips-to-remain-anonymous.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Tips to Remain Anonymous
|
||||
|
||||
The Tornado Cash tool allows you to remain anonymous on-chain. However, if the tool is used without protecting oneself upstream and downstream, there is no point and the anonymity would only be partial. There are practices to avoid this.
|
||||
|
||||
### Use a VPN
|
||||
|
||||
Your internet service provider (ISP) identifies you with an IP address. To prevent third parties from knowing that you are using Tornado.cash, you should consider using TOR and/or a VPN for your transfers. Avoid using free VPNs, they tend to keep or even sell your data. There are several VPNs on the market boasting a "no-log policy".
|
||||
|
||||
### Save your note in a safe place <a href="#save-your-note-in-a-safe-place" id="save-your-note-in-a-safe-place"></a>
|
||||
|
||||
Your note provides a record of your original transaction. Anyone who has it can withdraw the funds deposited, but also know the deposit address. Be sure to keep this note away from prying eyes and store it in a secure environment.
|
||||
|
||||
### Delete data <a href="#delete-data" id="delete-data"></a>
|
||||
|
||||
Your browser is a real source of information for the extensions you use. Delete your data after each deposit or withdrawal. If two transfers are made with the same cookies, the extension you are using will be able to link these two transactions.
|
||||
|
||||
### Avoid using the same API token <a href="#avoid-using-the-same-api-token" id="avoid-using-the-same-api-token"></a>
|
||||
|
||||
If you use the same API token for two transactions, you will be easily recognized by your extension. For Metamask users, be aware that this extension will use the same token for each of your transactions. To avoid this problem, don't hesitate to uninstall and reinstall Metamask for each transfer, making sure to create a new account each time.
|
||||
|
||||
### Be patient <a href="#be-patient" id="be-patient"></a>
|
||||
|
||||

|
||||
|
||||
Your anonymity also depends on the number of transactions after your deposit (cf. Statistics tab above). If you withdraw your funds immediately after depositing them, it is possible to link your deposit to your transfer using correlation probabilities. The longer you wait, the greater your anonymity set will be.
|
||||
|
||||
### Use multiple addresses
|
||||
|
||||
A 7 x 10eth deposit from one address and a 7 x 10eth withdrawal to a single address can also be linked. Remember to multiply your withdrawal addresses.
|
||||
|
||||
_Written by_ [_**@bt11ba**_](https://torn.community/u/bt11ba/)
|
42
general/torn.md
Normal file
42
general/torn.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
# TORN
|
||||
|
||||
## Token
|
||||
|
||||
TORN is an ERC20-compatible token with a fixed supply that governs [Tornado.Cash](https://tornado.cash). TORN holders can make proposals and vote to change the protocol via governance.
|
||||
|
||||
**TORN is not a fundraising device or investment opportunity.**
|
||||
|
||||
**Here’s how the initial distribution of TORN would break down:**
|
||||
|
||||
* **5% (500,000 TORN):** Airdrop to early users of [Tornado.Cash](https://tornado.cash) ETH pools
|
||||
* **10% (1,000,000 TORN):** Anonymity mining for [Tornado.Cash](https://tornado.cash) ETH pools, distributed linearly over 1 year
|
||||
* **55% (5,500,000 TORN):** DAO treasury, will be unlocked linearly over 5 years with 3 month cliff
|
||||
* **30% (3,000,000 TORN):** Founding developers and early supporters, will be unlocked linearly over 3 years with 1 year cliff
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Airdrop <a href="#f04d" id="f04d"></a>
|
||||
|
||||
Users who have believed in [Tornado.Cash](https://tornado.cash) from early on should have a say in governing the protocol. For this reason, early adopters of the protocol did receive an airdrop of TORN.
|
||||
|
||||
TORN has been airdropped to [all addresses](https://github.com/tornadocash/airdrop/blob/master/airdrop.csv) that made deposits into [Tornado.Cash](https://tornado.cash) ETH pools before block `11400000`. TORN were airdropped in the form of a non-transferable TORN voucher (vTORN) that can be redeemed 1:1 to TORN within 1 year, from December 18, 2020, to December 18, 2021. TORN that aren’t redeemed will be swept into the governance contract after 1 year and become part of the DAO Treasury. Redeemed TORN will be available immediately.
|
||||
|
||||
The airdropped amount depends on users’ deposit size and age — larger deposits and older deposits will receive more TORN. Multipliers for deposit size are logarithmic:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
So a 100 ETH deposit get twice as many tokens as a 1 ETH deposit. The multiplier allows large and small users of [Tornado.Cash](https://tornado.cash) to both have a say in governance.
|
||||
|
||||
The exact curve for the time multiplier looks like this:
|
||||
|
||||

|
||||
|
||||
The exact airdrop formula is the following:
|
||||
|
||||

|
||||
|
||||
_Written by_ [_**Tornado Team**_](https://tornado-cash.medium.com/tornado-cash-governance-proposal-a55c5c7d0703)
|
184
general/tornado-cash-smart-contracts.md
Normal file
184
general/tornado-cash-smart-contracts.md
Normal file
|
@ -0,0 +1,184 @@
|
|||
# Tornado Cash Smart Contracts
|
||||
|
||||
[Codes behind Tornado.Cash functioning](https://github.com/tornadocash) - smart contacts, circuits & toolchain - are fully **open sourced.** This page regroups all information regarding Tornado Cash smart contracts.
|
||||
|
||||
## Smart Contracts Adresses
|
||||
|
||||
### Pools Contracts
|
||||
|
||||
* ETH pools:
|
||||
|
||||
* 0.1 ETH: [0x12d66f87a04a9e220743712ce6d9bb1b5616b8fc](https://etherscan.io/address/0x12d66f87a04a9e220743712ce6d9bb1b5616b8fc)
|
||||
* 1 ETH: [0x47ce0c6ed5b0ce3d3a51fdb1c52dc66a7c3c2936](https://etherscan.io/address/0x47ce0c6ed5b0ce3d3a51fdb1c52dc66a7c3c2936)
|
||||
* 10 ETH: [0x910cbd523d972eb0a6f4cae4618ad62622b39dbf](https://etherscan.io/address/0x910cbd523d972eb0a6f4cae4618ad62622b39dbf)
|
||||
* 100 ETH: [0xa160cdab225685da1d56aa342ad8841c3b53f291](https://etherscan.io/address/0xa160cdab225685da1d56aa342ad8841c3b53f291)
|
||||
|
||||
|
||||
* DAI pools:
|
||||
* 100 DAI: [0xd4b88df4d29f5cedd6857912842cff3b20c8cfa3](https://etherscan.io/address/0xd4b88df4d29f5cedd6857912842cff3b20c8cfa3)
|
||||
* 1,000 DAI: [0xfd8610d20aa15b7b2e3be39b396a1bc3516c7144](https://etherscan.io/address/0xfd8610d20aa15b7b2e3be39b396a1bc3516c7144)
|
||||
* 10,000 DAI: [0](https://etherscan.io/address/0x07687e702b410Fa43f4cB4Af7FA097918ffD2730)[x](https://etherscan.io/address/0xfd8610d20aa15b7b2e3be39b396a1bc3516c7144)[07687e702b410Fa43f4cB4Af7FA097918ffD2730](https://etherscan.io/address/0x07687e702b410Fa43f4cB4Af7FA097918ffD2730)
|
||||
* 100,000 DAI: [0](https://etherscan.io/address/0x23773E65ed146A459791799d01336DB287f25334)[x](https://etherscan.io/address/0xfd8610d20aa15b7b2e3be39b396a1bc3516c7144)[23773E65ed146A459791799d01336DB287f25334](https://etherscan.io/address/0x23773E65ed146A459791799d01336DB287f25334)\
|
||||
|
||||
* cDAI pools:
|
||||
* 5,000 cDAI: [0x22aaA7720ddd5388A3c0A3333430953C68f1849b](https://etherscan.io/address/0x22aaA7720ddd5388A3c0A3333430953C68f1849b)
|
||||
* 50,000 cDAI: [0x03893a7c7463AE47D46bc7f091665f1893656003](https://etherscan.io/address/0x03893a7c7463AE47D46bc7f091665f1893656003)
|
||||
* 500,000 cDAI: [0x2717c5e28cf931547B621a5dddb772Ab6A35B701](https://etherscan.io/address/0x2717c5e28cf931547B621a5dddb772Ab6A35B701)
|
||||
* 5,000,000 cDAI: [0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af](https://etherscan.io/address/0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af)\
|
||||
|
||||
* USDC pools:
|
||||
* 100 USDC: [0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D](https://etherscan.io/address/0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D)
|
||||
* 1,000 USDC: [0xd96f2B1c14Db8458374d9Aca76E26c3D18364307](https://etherscan.io/address/0xd96f2B1c14Db8458374d9Aca76E26c3D18364307)\
|
||||
|
||||
* USDT pools:
|
||||
* 100 USDT: [0x169AD27A470D064DEDE56a2D3ff727986b15D52B](https://etherscan.io/address/0x169AD27A470D064DEDE56a2D3ff727986b15D52B)
|
||||
* 1,000 USDT: [0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f](https://etherscan.io/address/0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f)\
|
||||
|
||||
* WBTC pools: 
|
||||
* 0.1 WBTC: [0x178169B423a011fff22B9e3F3abeA13414dDD0F1](https://etherscan.io/address/0x178169B423a011fff22B9e3F3abeA13414dDD0F1)
|
||||
* 1 WBTC: [0x610B717796ad172B316836AC95a2ffad065CeaB4](https://etherscan.io/address/0x610B717796ad172B316836AC95a2ffad065CeaB4)
|
||||
* 10 WBTC: [0xbB93e510BbCD0B7beb5A853875f9eC60275CF498](https://etherscan.io/address/0xbB93e510BbCD0B7beb5A853875f9eC60275CF498)\
|
||||
|
||||
* BNB pools:
|
||||
* 0.1 BNB: [0x84443CFd09A48AF6eF360C6976C5392aC5023a1F](https://bscscan.com/address/0x84443CFd09A48AF6eF360C6976C5392aC5023a1F)
|
||||
* 1 BNB: [0xd47438C816c9E7f2E2888E060936a499Af9582b3](https://bscscan.com/address/0xd47438C816c9E7f2E2888E060936a499Af9582b3)
|
||||
* 10 BNB: [0x330bdFADE01eE9bF63C209Ee33102DD334618e0a](https://bscscan.com/address/0x330bdFADE01eE9bF63C209Ee33102DD334618e0a)
|
||||
* 100 BNB: [0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD](https://bscscan.com/address/0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD)\
|
||||
|
||||
* xDAI pools:
|
||||
* 100 xDAI: [0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD](https://blockscout.com/xdai/mainnet/address/0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD/transactions)
|
||||
* 1,000 xDAI: [0xdf231d99Ff8b6c6CBF4E9B9a945CBAcEF9339178](https://blockscout.com/xdai/mainnet/address/0xdf231d99Ff8b6c6CBF4E9B9a945CBAcEF9339178/transactions)
|
||||
* 10,000 xDAI: [0xaf4c0B70B2Ea9FB7487C7CbB37aDa259579fe040](https://blockscout.com/xdai/mainnet/address/0xaf4c0B70B2Ea9FB7487C7CbB37aDa259579fe040/transactions)
|
||||
* 100,000 xDAI: [0xa5C2254e4253490C54cef0a4347fddb8f75A4998](https://blockscout.com/xdai/mainnet/address/0xa5C2254e4253490C54cef0a4347fddb8f75A4998/transactions)\
|
||||
|
||||
* MATIC pools:
|
||||
* 100 MATIC: [0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD](https://polygonscan.com/address/0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD)
|
||||
* 1,000 MATIC: [0xdf231d99Ff8b6c6CBF4E9B9a945CBAcEF9339178](https://polygonscan.com/address/0xdf231d99Ff8b6c6CBF4E9B9a945CBAcEF9339178)
|
||||
* 10,000 MATIC: [0xaf4c0B70B2Ea9FB7487C7CbB37aDa259579fe040](https://polygonscan.com/address/0xaf4c0B70B2Ea9FB7487C7CbB37aDa259579fe040)
|
||||
* 100,000 MATIC: [0xa5C2254e4253490C54cef0a4347fddb8f75A4998](https://polygonscan.com/address/0xa5C2254e4253490C54cef0a4347fddb8f75A4998)\
|
||||
|
||||
* AVAX pools:
|
||||
* 10 AVAX: [0x330bdFADE01eE9bF63C209Ee33102DD334618e0a](https://snowtrace.io/address/0x330bdFADE01eE9bF63C209Ee33102DD334618e0a)
|
||||
* 100 AVAX: [0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD](https://snowtrace.io/address/0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD)
|
||||
* 500 AVAX: [0xaf8d1839c3c67cf571aa74B5c12398d4901147B3](https://snowtrace.io/address/0xaf8d1839c3c67cf571aa74B5c12398d4901147B3)\
|
||||
|
||||
* ETH pools on Arbitrum:
|
||||
|
||||
* 0.1 ETH: [0x84443CFd09A48AF6eF360C6976C5392aC5023a1F](https://arbiscan.io/address/0x84443CFd09A48AF6eF360C6976C5392aC5023a1F)
|
||||
* 1 ETH: [0xd47438C816c9E7f2E2888E060936a499Af9582b3](https://arbiscan.io/address/0xd47438C816c9E7f2E2888E060936a499Af9582b3)
|
||||
* 10 ETH: [0x330bdFADE01eE9bF63C209Ee33102DD334618e0a](https://arbiscan.io/address/0x330bdFADE01eE9bF63C209Ee33102DD334618e0a)
|
||||
* 100 ETH: [0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD](https://arbiscan.io/address/0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD)
|
||||
|
||||
|
||||
* ETH pools on Optimism:
|
||||
* 0.1 ETH: [0x84443CFd09A48AF6eF360C6976C5392aC5023a1F](https://optimistic.etherscan.io/address/0x84443CFd09A48AF6eF360C6976C5392aC5023a1F)
|
||||
* 1 ETH: [0xd47438C816c9E7f2E2888E060936a499Af9582b3](https://optimistic.etherscan.io/address/0xd47438C816c9E7f2E2888E060936a499Af9582b3)
|
||||
* 10 ETH: [0x330bdFADE01eE9bF63C209Ee33102DD334618e0a](https://optimistic.etherscan.io/address/0x330bdFADE01eE9bF63C209Ee33102DD334618e0a)
|
||||
* 100 ETH: [0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD](https://optimistic.etherscan.io/address/0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD)\
|
||||
|
||||
|
||||
### Tornado Cash Nova Pool (bêta version)
|
||||
|
||||
* Contract: [0xD692Fd2D0b2Fbd2e52CFa5B5b9424bC981C30696](https://blockscout.com/xdai/mainnet/address/0xD692Fd2D0b2Fbd2e52CFa5B5b9424bC981C30696/transactions)
|
||||
* L1 Omnibridge Helper: [0xca0840578f57fe71599d29375e16783424023357](https://etherscan.io/address/0xca0840578f57fe71599d29375e16783424023357)
|
||||
* Verifier 2: [0xDF3A408c53E5078af6e8fb2A85088D46Ee09A61b](https://blockscout.com/xdai/mainnet/address/0xDF3A408c53E5078af6e8fb2A85088D46Ee09A61b/transactions)
|
||||
* Verifier 16: [0x743494b60097A2230018079c02fe21a7B687EAA5](https://blockscout.com/xdai/mainnet/address/0x743494b60097A2230018079c02fe21a7B687EAA5/transactions)
|
||||
* Hasher: [0x94C92F096437ab9958fC0A37F09348f30389Ae79](https://blockscout.com/xdai/mainnet/address/0x94C92F096437ab9958fC0A37F09348f30389Ae79/transactions)
|
||||
|
||||
### Pools on Goerli Network (for testing):
|
||||
|
||||
* ETH pools:
|
||||
|
||||
* 0.1 ETH: [0x6Bf694a291DF3FeC1f7e69701E3ab6c592435Ae7](https://goerli.etherscan.io/address/0x6Bf694a291DF3FeC1f7e69701E3ab6c592435Ae7)
|
||||
* 1 ETH: [0x3aac1cC67c2ec5Db4eA850957b967Ba153aD6279](https://goerli.etherscan.io/address/0x3aac1cC67c2ec5Db4eA850957b967Ba153aD6279)
|
||||
* 10 ETH: [0x723B78e67497E85279CB204544566F4dC5d2acA0](https://goerli.etherscan.io/address/0x723B78e67497E85279CB204544566F4dC5d2acA0)
|
||||
* 100 ETH: [0x0E3A09dDA6B20aFbB34aC7cD4A6881493f3E7bf7](https://goerli.etherscan.io/address/0x0E3A09dDA6B20aFbB34aC7cD4A6881493f3E7bf7)
|
||||
|
||||
|
||||
* DAI pools:
|
||||
* 100 DAI: [0x76D85B4C0Fc497EeCc38902397aC608000A06607](https://goerli.etherscan.io/address/0x76D85B4C0Fc497EeCc38902397aC608000A06607)
|
||||
* 1,000 DAI: [0xCC84179FFD19A1627E79F8648d09e095252Bc418](https://goerli.etherscan.io/address/0xCC84179FFD19A1627E79F8648d09e095252Bc418)
|
||||
* 10,000 DAI: [0xD5d6f8D9e784d0e26222ad3834500801a68D027D](https://goerli.etherscan.io/address/0xD5d6f8D9e784d0e26222ad3834500801a68D027D)
|
||||
* 100,000 DAI: [0x407CcEeaA7c95d2FE2250Bf9F2c105aA7AAFB512](https://goerli.etherscan.io/address/0x407CcEeaA7c95d2FE2250Bf9F2c105aA7AAFB512)\
|
||||
|
||||
* cDAI pools:
|
||||
* 5,000 cDAI: [0x833481186f16Cece3f1Eeea1a694c42034c3a0dB](https://goerli.etherscan.io/address/0x833481186f16Cece3f1Eeea1a694c42034c3a0dB)
|
||||
* 50,000 cDAI: [0xd8D7DE3349ccaA0Fde6298fe6D7b7d0d34586193](https://goerli.etherscan.io/address/0xd8D7DE3349ccaA0Fde6298fe6D7b7d0d34586193)
|
||||
* 500,000 cDAI: [0x8281Aa6795aDE17C8973e1aedcA380258Bc124F9](https://goerli.etherscan.io/address/0x8281Aa6795aDE17C8973e1aedcA380258Bc124F9)
|
||||
* 5,000,000 cDAI: [0x57b2B8c82F065de8Ef5573f9730fC1449B403C9f](https://goerli.etherscan.io/address/0x57b2B8c82F065de8Ef5573f9730fC1449B403C9f)\
|
||||
|
||||
* USDC pools:
|
||||
* 100 USDC: [0x05E0b5B40B7b66098C2161A5EE11C5740A3A7C45](https://goerli.etherscan.io/address/0x05E0b5B40B7b66098C2161A5EE11C5740A3A7C45)
|
||||
* 1,000 USDC: [0x23173fE8b96A4Ad8d2E17fB83EA5dcccdCa1Ae52](https://goerli.etherscan.io/address/0x23173fE8b96A4Ad8d2E17fB83EA5dcccdCa1Ae52)
|
||||
* USDT pools:
|
||||
* 100 USDT: [0x538Ab61E8A9fc1b2f93b3dd9011d662d89bE6FE6](https://goerli.etherscan.io/address/0x538Ab61E8A9fc1b2f93b3dd9011d662d89bE6FE6)
|
||||
* 1,000 USDT: [0x94Be88213a387E992Dd87DE56950a9aef34b9448](https://goerli.etherscan.io/address/0x94Be88213a387E992Dd87DE56950a9aef34b9448)\
|
||||
|
||||
* WBTC pools:
|
||||
* 0.1 WBTC: [0x242654336ca2205714071898f67E254EB49ACdCe](https://goerli.etherscan.io/address/0x242654336ca2205714071898f67E254EB49ACdCe)
|
||||
* 1 WBTC: [0x776198CCF446DFa168347089d7338879273172cF](https://goerli.etherscan.io/address/0x776198CCF446DFa168347089d7338879273172cF)
|
||||
* 10 WBTC: [0xeDC5d01286f99A066559F60a585406f3878a033e](https://goerli.etherscan.io/address/0xeDC5d01286f99A066559F60a585406f3878a033e)
|
||||
|
||||
### Governance Contracts:
|
||||
|
||||
* Governance Contract: [0x5efda50f22d34f262c29268506c5fa42cb56a1ce](https://etherscan.io/address/0x5efda50f22d34f262c29268506c5fa42cb56a1ce)
|
||||
* Governance Vault (for locked TORN): [0x2f50508a8a3d323b91336fa3ea6ae50e55f32185](https://etherscan.io/address/0x2f50508a8a3d323b91336fa3ea6ae50e55f32185#tokentxns)
|
||||
* Governance Impl: [0xffbac21a641dcfe4552920138d90f3638b3c9fba](https://etherscan.io/address/0xffbac21a641dcfe4552920138d90f3638b3c9fba)
|
||||
* Governance Vesting: [0x179f48c78f57a3a78f0608cc9197b8972921d1d2](https://etherscan.io/address/0x179f48c78f57a3a78f0608cc9197b8972921d1d2)
|
||||
* TORN token:[0x77777feddddffc19ff86db637967013e6c6a116c](https://etherscan.io/address/0x77777feddddffc19ff86db637967013e6c6a116c)
|
||||
* vTORN token: [0x3efa30704d2b8bbac821307230376556cf8cc39e](https://etherscan.io/address/0x3efa30704d2b8bbac821307230376556cf8cc39e)
|
||||
* Mining v2: [0x746aebc06d2ae31b71ac51429a19d54e797878e9](https://etherscan.io/address/0x746aebc06d2ae31b71ac51429a19d54e797878e9)
|
||||
|
||||
### Team Vesting Contracts:
|
||||
|
||||
* [0x5f48c2a71b2cc96e3f0ccae4e39318ff0dc375b2](https://etherscan.io/address/0x5f48c2a71b2cc96e3f0ccae4e39318ff0dc375b2)
|
||||
* [0x00d5ec4cdf59374b2a47e842b799027356eac02b](https://etherscan.io/address/0x00d5ec4cdf59374b2a47e842b799027356eac02b)
|
||||
* [0x77c08248c93ab53ff734ac555c932f8b9089d4c9](https://etherscan.io/address/0x77c08248c93ab53ff734ac555c932f8b9089d4c9)
|
||||
* [0xc3877028655ebe90b9447dd33de391c955ead267](https://etherscan.io/address/0xc3877028655ebe90b9447dd33de391c955ead267)
|
||||
* [0xb43432ec23e228fb7cb0fa52968949458b509f4f](https://etherscan.io/address/0xb43432ec23e228fb7cb0fa52968949458b509f4f)\
|
||||
|
||||
|
||||
### Other Contracts:
|
||||
|
||||
* Tornado.Cash Trees: [0x527653ea119f3e6a1f5bd18fbf4714081d7b31ce](https://etherscan.io/address/0x527653ea119f3e6a1f5bd18fbf4714081d7b31ce)
|
||||
* Tree Update Verifier: [0x653477c392c16b0765603074f157314cc4f40c32](https://etherscan.io/address/0x653477c392c16b0765603074f157314cc4f40c32)
|
||||
* Withdraw Verifier: [0x09193888b3f38c82dedfda55259a82c0e7de875e](https://etherscan.io/address/0x09193888b3f38c82dedfda55259a82c0e7de875e)
|
||||
* Reward Verifier: [0x88fd245fedec4a936e700f9173454d1931b4c307](https://etherscan.io/address/0x88fd245fedec4a936e700f9173454d1931b4c307)
|
||||
* Reward Swap: [0x5cab7692d4e94096462119ab7bf57319726eed2a](https://etherscan.io/address/0x5cab7692d4e94096462119ab7bf57319726eed2a)
|
||||
* Echoer: [0x756c4628e57f7e7f8a459ec2752968360cf4d1aa](https://etherscan.io/address/0x756c4628e57f7e7f8a459ec2752968360cf4d1aa)
|
||||
* Proxy: [0x722122df12d4e14e13ac3b6895a86e84145b6967](https://etherscan.io/address/0x722122df12d4e14e13ac3b6895a86e84145b6967)
|
||||
* Mixer 1: [0x94a1b5cdb22c43faab4abeb5c74999895464ddaf](https://etherscan.io/address/0x94a1b5cdb22c43faab4abeb5c74999895464ddaf)
|
||||
* Mixer 2: [0xb541fc07bc7619fd4062a54d96268525cbc6ffef](https://etherscan.io/address/0xb541fc07bc7619fd4062a54d96268525cbc6ffef)
|
||||
* Poseidon 2: [0x94c92f096437ab9958fc0a37f09348f30389ae79](https://etherscan.io/address/0x94c92f096437ab9958fc0a37f09348f30389ae79)
|
||||
* Poseidon 3: [0xd82ed8786d7c69dc7e052f7a542ab047971e73d2](https://etherscan.io/address/0xd82ed8786d7c69dc7e052f7a542ab047971e73d2)
|
||||
* Gitcoin Grants: [0xdd4c48c0b24039969fc16d1cdf626eab821d3384](https://etherscan.io/address/0xdd4c48c0b24039969fc16d1cdf626eab821d3384)
|
||||
|
||||
## GitHub links
|
||||
|
||||
* Tornado Cash core code:
|
||||
|
||||
{% embed url="https://github.com/tornadocash/tornado-core" %}
|
||||
|
||||
* Tornado Cash Command Line to make transactions in the protocol:
|
||||
|
||||
{% embed url="https://github.com/tornadocash/tornado-cli" %}
|
||||
|
||||
* To become a relayer for Tornado Cash:
|
||||
|
||||
{% embed url="https://github.com/tornadocash/tornado-relayer" %}
|
||||
|
||||
* Minified web UI for Tornado Cash protocol:
|
||||
|
||||
{% embed url="https://github.com/tornadocash/ui-minified" %}
|
||||
|
||||
* All about the TORN token:
|
||||
|
||||
{% embed url="https://github.com/tornadocash/torn-token" %}
|
||||
|
||||
* All about the anonymity mining program (this program has ended mid-December 2021):
|
||||
|
||||
{% embed url="https://github.com/tornadocash/tornado-anonymity-mining" %}
|
||||
|
||||
|
||||
|
||||
_Written by_ [_@ayefda_](https://torn.community/u/ayefda)__
|
Loading…
Add table
Add a link
Reference in a new issue