general updates

This commit is contained in:
gozzy 2023-01-28 16:55:19 +00:00
parent 5a4eccba86
commit 9a91dcbbe4
21 changed files with 138 additions and 184 deletions

@ -2,6 +2,10 @@
![](/.gitbook/assets/image.png)
{% hint style="danger" %}
*Tornado Cash was sanctioned by the US Treasury on 08/08/2022, making it illegal for US citizens to interact with the core and governance contracts*
{% endhint %}
Tornado Cash is a **non-custodial** **privacy protocol** allowing **permissionless** shielded transactions on Ethereum and derivative networks. Tornado Cash is not a mixer, as assets are never commingled due to the presence of zero knowledge cryptography.
The core of the protocol is ungovernable and immutable, given Ethereum's distributed state and the provenance of the contracts, they can neither be changed nor tampered with. Therefore, nobody - including the original developers - can modify or inhibit the protocol. All governance and associated smart contracts are deployed by the community.
@ -20,8 +24,6 @@ Since its inception in 2019, Tornado Cash has been mainly operating **on the Eth
Since June 2021, the smart contracts **have also been deployed on other side-chains & blockchains**. These deployments enabled network agnostic functionality, allowing for faster and cheaper transactions.
Nework deployments:
* **Ethereum**
* **ETH** (Ethereum)
* **DAI** (Dai)
@ -66,8 +68,8 @@ Tornado Cash is represented by it's community, collaboration is facilitated thro
All protocol related code is open-source and is published to two independent git instances:
* [Community git](https://development.tornadocash.community): store of the latest community maintained repositories.
* [Github](https://github.com/tornadocash): public archive after the OFAC sanctions.
* [Community git](https://development.tornadocash.community): store of the latest community maintained repositories
* [Github](https://github.com/tornadocash): public archive after the OFAC sanctions
The existence of zero knowledge in the protocol was based **on open-source research authored by ZCash**. To implement a zero knowledge scheme, [a trusted setup is required](https://tornado-cash.medium.com/tornado-cash-trusted-setup-ceremony-b846e1e00be1), which is essentially a store of random data from various sources defining robustness in generation of proving and verifying keys. Which successfully occured for the protocol on [May 2020 with 1114 contributions](https://tornado-cash.medium.com/the-biggest-trusted-setup-ceremony-in-the-world-3c6ab9c8fffa). This significant number of contributors makes it implausible to compromise the protocol by faking zero-knowledge proofs.

@ -1,8 +1,8 @@
# Anonymity Mining
# Anonymity mining
The anonymity mining protocol underpins the [Anonymity Mining Program](../../anonymity-mining.md), which rewards users according to the block duration that they wait before withdrawing their deposits.
The anonymity mining protocol underpins the [Anonymity Mining Program](../../general/token/anonymity-mining.md), which rewards users according to the block duration that they wait before withdrawing their deposits.
Anonymity Mining uses a Tornado Trees contract as a ZK-efficient register of deposit and withdrawal transactions, which enables users to make efficient proofs regarding their usage.
Anonymity Mining uses a Tornado trees contract as a ZK-efficient register of deposit and withdrawal transactions, which enables users to make efficient proofs regarding their usage.
[tornado-trees.md](tornado-trees.md)

@ -1,23 +1,16 @@
---
description: >-
Anonymity Mining rewards are claimed using ZK proofs showing the block
duration that notes were left deposited. Anonymity Points are kept in shielded
accounts until swapped for TORN.
---
# Reward claim
# Reward Claim
## Account Tree
## Account tsree
Anonymity Points claimed as rewards for anonymity mining are stored in "shielded" accounts within a Merkle Tree, using many of the same patterns as in the core deposit contract and Tornado Trees.
### Shielded Balance
### Shielded balance
The special property that the accounts tree brings to the table is that only the owner of the account knows its balance. Each time that an account's balance is updated by claiming additional rewards, or withdrawing from it, a new account is created, and the old account is nullified.
The balance of an account is stored as a component of the commitment hash that is inserted into the tree. The balance of an account can only by known by having the private key used to produce an encrypted backup of its commitment inputs.
### Account Commitment
### Account commitment
An account commitment consists of three components:
@ -27,9 +20,9 @@ An account commitment consists of three components:
An account commitment hash is the Poseidon hash of these three components
## Claiming a Reward
## Claiming a reward
### Inputs to a Reward Proof
### Inputs to a reward proof
#### The total set of public inputs for a reward proof are:
@ -64,7 +57,7 @@ An account commitment hash is the Poseidon hash of these three components
14. The path indices to the withdrawal in the Tornado Trees withdrawal tree, as an integer, left-padded with zeroes
15. An array of path elements to the withdrawal in the Tornado Trees withdrawal tree
### Proven Claims
### Proven claims
Rewards are claimed by proving that:
@ -74,13 +67,13 @@ Rewards are claimed by proving that:
4. The amount you're claiming is then a multiple of the agreed-upon reward rate, times the specified block duration
5. The disclosed "reward nullifier" is the Poseidon hash of the original note nullifier
### Sanity Checks
### Sanity checks
An invariant constraint is first created showing that the amount that is coming from an existing account, plus the block reward rate times the block duration, is equal to the new account's balance plus the relayer fee.
An overflow check is then performed on the input, output, and block duration values to ensure that they fit within 248 bits, 248 bits, and 32 bits, respectively, without overflowing.
### Input Account Validation
### Input account validation
The input account balance, secret, and nullifier are hashed to obtain the input account commitment, and then the path elements and path indices are used to verify that such a commitment exists within the specified input root, but in such a way that if the input account balance is 0, the check passes regardless.
@ -88,13 +81,13 @@ This scheme allows for new accounts to be created without publicly disclosing th
The public input nullifier hash is checked against the input account's nullifier component.
### Output Account Validation
### Output account validation
The output account balance, secret, and nullifier are hashed to obtain the output account commitment, and are checked against the public output commitment hash.
The account tree update is validated using the input root, output root, output commitment as a new leaf, and the specified output path elements and indices.
### Tornado Trees Validation
### Tornado trees validation
The Tornado Commitment used for the note being claimed is computed using the note secret and nullifier, and then the corresponding commitment in the Tornado Trees deposit tree is computed using the Tornado instance address, note commitment, and deposit block number as components.
@ -102,15 +95,15 @@ The deposit commitment is then verified to exist at the specified deposit path b
The withdrawal commitment in the Tornado Trees withdrawal tree is then computed using the Tornado instance address, note nullifier hash, and withdrawal block number as components. The withdrawal commitment is verified to exist at the specified withdrawal path beneat the withdrawal tree root.
### Reward Nullifier
### Reward nullifier
The reward nullifier for the provided note is then computed by generating the Poseidon hash of the note's nullifier. This is compared to the reward nullifier specified as a public input.
### Args Hash Square
### Args hash square
As a last step, the args hash is squared into a public output, to ensure that the reward transaction parameters cannot be tampered with relative to the proof.
## Completing the Reward Transaction
## Completing the reward transaction
Using the generated proof, we can now call the `reward` method of the Miner contract.
@ -133,7 +126,7 @@ If these preconditions are met, then:
4. If applicable, the relayer is rewarded TORN using the fee AP at the current AMM rate
5. A New Account event is emitted
#### Batch Rewards
#### Batch bewards
There is an alternate method in the Miner contract which deals with "batch rewards". While most transactions claim rewards individually, batch reward transactions claim multiple rewards at once. This avoids having to wait for the next block for each reward claim, since each claim has to insert a new leaf from the last account root.

@ -1,19 +1,12 @@
---
description: >-
The Tornado Trees contract and circuit acts as an ZK-efficient register of
deposit and withdrawal transactions that the Anonymity Mining functions can
use to validate claims made by users about their
---
# Tornado trees
# Tornado Trees
## Tornado Proxy
## Tornado proxy
When accessing the Tornado.cash deposit contracts using the official UI, all transactions execute through a proxy contract called the [Tornado Proxy](https://github.com/tornadocash/tornado-trees/blob/master/contracts/TornadoTrees.sol). Since the deposit contracts themselves are immutable, and many features of Tornado.cash were added well after the original deposit contracts were deployed, the Tornado Proxy provides a way to inject additional functionality without replacing the battle-tested deposit contract instances.
The two most noteworthy functions of the Tornado Proxy are its ability to back up user deposits on-chain using encrypted note accounts, and the function which queues deposits and withdrawals for processing in the Tornado Trees contract.
### Registering Deposits and Withdrawals
### Registering deposits and withdrawals
When you make a deposit through the Tornado Proxy, and when you later make a withdrawal through the same, the proxy calls corresponding methods on the [Tornado Trees](https://github.com/tornadocash/tornado-trees/blob/master/contracts/TornadoTrees.sol) contract.
@ -23,7 +16,7 @@ Registering a withdrawal is the essentially the same as registering a deposit, e
The `registerDeposit` and `registerWithdrawal` contract methods of the Tornado Trees contract each emit a corresponding event, `DepositData` and `WithdrawalData` containing the same values as were included in the computed hash, plus an additional event field indication the order in which they entered into the queue.
## Chunked Merkle Tree Update
## Chunked Merkle Tree update
Standard Merkle Trees are fairly expensive to store and update, especially if you want to commit to a large number of leaves. Depositing a note into the Tornado.cash deposit contracts can cost upwards of 1.2M gas, which can be hundreds of dollars worth of ETH if depositing on Ethereum mainnet. Most of this gas cost results from simply inserting a commitment into the deposit contract Merkle Tree.
@ -31,7 +24,7 @@ What if, instead of spending all of that gas, we could instead simply propose a
However, verifying Zero Knowledge proofs is itself quite expensive. So, instead of updating the Merkle Tree for every change, we can batch insertions together into aggregate commitments which can be verified as a whole.
### Chunked Tree Structure
### Chunked tree structure
The deposit and withdrawal trees are both fixed-size Merkle Trees 20 levels deep, but with a notable feature. The "chunk size" of the tree determines a level at which updates are computed in aggregate, instead of as individual insertions.
@ -39,13 +32,13 @@ In the case of Tornado Trees, the chunk size is 256 (2^8), so each chunk is 8 le
The hash function used to produce node labels is [Poseidon](https://www.poseidon-hash.info), which is similar to the [Pedersen](https://iden3-docs.readthedocs.io/en/latest/iden3\_repos/research/publications/zkproof-standards-workshop-2/pedersen-hash/pedersen.html) hash function used in the core deposit contract, in that it's an elliptic curve hashing algorithm. The major difference between the two is that Poseidon operates over the BN128 elliptic curve instead of Baby Jubjub, and where Pedersen uses 1.7 constraints per bit in a ZK proof, Poseidon only uses between 0.2 and 0.45 constraints per bit.
### Collecting the Events
### Collecting the events
In order to compute an update to the tree, it's necessary to know the existing structure of the tree. To obtain this, you query from the contract logs the `DepositData` or `WithdrawalData` events emitted earlier, depending on which tree you're updating.
Using the index indicated by `lastProcessedDepositLeaf` or `lastProcessedWithdrawalLeaf`, you can then split the events into two sets of leaves - "committed" and "pending". As the names would imply, the former set of leaves are the ones that are already committed within the Merkle Tree, and the latter are all of the leaves which still need to be inserted.
### Computing a Tree Update
### Computing a tree update
Using the committed events, we're able to reconstruct the current state of Merkle Tree by first computing the Poseidon hash for each of the existing leaves, using the Tornado instance address, commitment/nullifier hash, and block number as the inputs to the hashing algorithm.
@ -57,7 +50,7 @@ Now that we have the "old root", we can proceed to take a chunk of pending event
Next, we need to collect a list of path elements starting from the subtree leaf, as well as an array of `0/1` bits indicating whether each path element is to the left or right of its parent node.
### Computing the Args Hash
### Computing the args hash
The last thing that we need before we can compute a proof is a hashed list of arguments that we'll be passing into our proving circuit, with a very particular structure.
@ -73,9 +66,9 @@ Construct a message that is the concatenation of these fields:
Compute the SHA-256 hash of this message, and then modulus the hash against the BN128 group modulus found in the `SNARK_FIELD` constant of the Tornado Trees contract.
## Generating a Merkle Tree Update Witness
## Generating a Merkle Tree update witness
### Inputs to a Tree Update Witness
### Inputs to a tree update witness
The [Batch Tree Update](https://github.com/tornadocash/tornado-trees/blob/master/circuits/BatchTreeUpdate.circom) circuit takes a single public input, which is the resulting SHA-256 args hash in the BN128 field.
@ -90,25 +83,25 @@ The additional private inputs for a Tree Update witness are:
2. An array of Tornado instance addresses
3. An array of block numbers
### Proven Claim
### Prove claim
To prove that we have updated the tree correctly, we don't have to provide a proof that spans the entire tree. Instead, we can prove just that a subtree of the 8-level chunk size, with a list of specified leaves, was added in place of the left-most zero leaf of a 12-level tree.
### Proving the Args Hash
### Proving the args hash
Instead of specifying all of the inputs publicly, we can take the Args Hash that we computed earlier and compare it to the result of computing the same hash within the ZK circuit, using the private inputs. This makes for a much more efficient proof verification execution.
### Build the Subtree
### Build the subtree
Taking the three fields of each pending event in the order (instance, commitment/nullifier, block number), we compute the Poseidon hash of each leaf. We then construct the Merkle Tree just for the subtree that we're updating. Since the subtree is full, we don't need to worry about any zero leaves.
### Verify the Subtree Insertion
### Verify the subtree insertion
Lastly, we verify that inserting the subtree root at the proposed position results in the old root transforming to the new root. This works essentially the same way as for the [Merkle Tree Check](../core-deposit-circuit.md#computing-the-witness) in the core deposit circuit, except using Poseidon instead of MiMC.
The [Merkle Tree Updater](https://github.com/tornadocash/tornado-trees/blob/master/circuits/MerkleTreeUpdater.circom) first verifies that the specified path contains a zero leaf by computing what the root would be given the path elements, path indices, and a zero leaf. It compares this against the specified old root, and then repeats that process again with the proposed subtree leaf, comparing the resulting root to the new root.
## Completing the Tree Update
## Completing the tree update
With the witness generated, and the proof generated from it, we can now call the corresponding `updateDepositTree` or `updateWithdrawalTree` method on the Tornado Trees contract.

@ -9,11 +9,13 @@ The Tornado Cash community facilliates discourse for governance and more through
* [**Community Matrix**](https://matrix.tornadocash.community)
* [**Community Twitter**](https://twitter.com/TornadoCashOrg)
_For more information on_ [_how governance works._](governance.md)
_For more information see the section on_ [_Governance_](governance.md).
## How to get involved?
> *Tornado Cash was sanctioned by the US Treasury on 08/08/2022, making it illegal for US citizens to interact with the core and governance contracts. Please understand the laws in your jurastiction*
{% hint style="danger" %}
*Tornado Cash was sanctioned by the US Treasury on 08/08/2022, making it illegal for US citizens to interact with the core and governance contracts. Please understand the laws in your jurastiction*
{% endhint %}
Join the community on one or more of the social portals and start seeking where you can help make a difference, active areas of assistence required are:

@ -38,7 +38,7 @@ Individuals should take time to review the matters they are voting on, as given
To allow easy auditing of the proposals execution and ensure the highest possibility for your proposal to win consensus, bytecode should be verified on Etherscan using the contract source code.
![](.gitbook/assets/181d612b6c57964bab59c8e5b766f5247211083d.png)
![](/.gitbook/assets/181d612b6c57964bab59c8e5b766f5247211083d.png)
Look for the contract address on Etherscan and make sure that the source code is verified before voting.

@ -1,4 +1,4 @@
# Tips to Remain Anonymous
# 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.

@ -4,7 +4,7 @@ This is a guide to using Tornado Cash after the 8th August crisis, when the OFAC
-------
### LANGUAGE:&nbsp;&nbsp;&nbsp;|<ul class="langs"><li class="lang-p">ENG*</li><li class="lang-p"><a href="https://hackmd.io/@gozzy/tornado-cash-制裁后教程">ZH</a></li><li class="lang-p"><a href="https://hackmd.io/@gozzy/tornado-cash-tras-la-censura">ES</a></li><li class="lang-p"><a href="https://hackmd.io/@gozzy/tornado-cash-после-цензуры">RU</a></li></ul>
--------
-------
## Community build
@ -13,7 +13,7 @@ _The source code for the community build can be found on [the offical community
* Current build version: **ea97a39**
* Changelog: [#003](https://development.tornadocash.community/tornadocash/classic-ui/pulls/10)
**See [instructions on RPC configuration](#RPC) if transacting with sanctioned addresses**.
**See [instructions on RPC configuration](#RPC) if transacting with sanctioned addresses**
### ENS resolvers

@ -1,6 +1,6 @@
# How to become a relayer?
Following the execution of [Tornado Cash 10th governance proposal](https://tornadocash.eth.link/governance/10), anyone can become a relayer for Tornado Cash users.
Following the execution of [proposal #10](https://etherscan.io/address/0xEC2412368be52107Fa549c3fb78DE1e3e6bF18EB#code), anyone can become a relayer for Tornado Cash users.
{% hint style="success" %}
The only condition to be included on the Tornado Cash UI is to lock a min. of `300 TORN`\*. To remain listed, it is needed to keep enough TORN locked (\~`40 TORN` at the moment in April 2022) to be able to pay back the transaction fee to the staking contract.
@ -12,21 +12,21 @@ Relayers form an essential & necessary part of the Tornado Cash ecosystem. Their
Therefore, relayers act as third parties and manage the entire withdrawal. They pay for transaction fees by deducting them directly from the transferred amount. They also charge an additional fee for their services.
Since the implementation of the [Relayer Registry proposal](https://tornadocash.eth.link/governance/10), the protocol collects a fee directly from the relayers staked balance through the `StakingReward` contract for each withdrawal. This fee percentage may vary from one pool to another and is also subject to change through on-chain governance.
Since the implementation of the [relayer registry proposal](https://etherscan.io/address/0xEC2412368be52107Fa549c3fb78DE1e3e6bF18EB#code), the protocol collects a fee directly from the relayers staked balance through the `StakingReward` contract for each withdrawal. This fee percentage may vary from one pool to another and is also subject to change through on-chain governance.
Currently, it is fixed at `0.3%` . Some pools remain without fees, either because the instance is too small to assign a fee (0.1 ETH, 100 DAI/USDT, 1000 DAI/USDT), or because there is not enough liquidity on Uni v3 (all cDAI instances).
## How to Become a Relayer?
## How to become a relayer?
Anyone can become a relayer for the protocol in **6 simple steps** through a [Relayer Registry User Interface (UI)](https://relayers-network.tornadocash.eth.limo).
Anyone can become a relayer for the protocol in **6 simple steps** through the relayer registry user interface [relayers-network.tornadocash.eth](https://app.ens.domains/name/relayers-network.tornadocash.eth/details)).
Below you will find everything your need to join our relayers' club & get listed on Tornado Cash decentralized relayer registry.
### 1. Warning: Understand & Accept Potential Risks
### 1. Disclaimer
Before you commit to sharing part of your journey with Tornado Cash users as a relayer, you need to understand & accept all potential risks of being a relayer for the protocol.
#### How a Relayer is chosen by user interface
#### How a relayer is chosen by the user interface
The formula for designating a relayer is as follows:
@ -34,7 +34,7 @@ The formula for designating a relayer is as follows:
* For each relayer, calculate a score based on its staked TORN and its fee. The higher the stake, the higher the score is; the higher the fee, the lower the score is. For Ethereum mainnet, the formula used to calculate the score is `stake * [1 - 25*(fee-0.33)^2]`; for sidechains, the formula is `stake * [1 - 11.89*(fee-0.01)^2]`.
* Then randomly pick a relayer, weighted by its calculated score.
### 2. Set up Relayer
### 2. Set up relayer
The first concrete step is to run the Tornado Cash Relayer software for Ethereum Mainnet on your computer. All steps are outlined in the protocol's github. To complete this task successfully, you will have to carefully follow [these instructions](https://github.com/tornadocash/tornado-relayer#deploy-with-docker-compose).
@ -54,14 +54,14 @@ The next steps entail:
* Setting up its mainnet subdomain.
* Adding a TXT record with the Relayer URL to the mainnet subdomain according to this specific format:
#### **Ethereum Relayers (Mandatory)**
#### **Ethereum relayers (Mandatory)**
| TXT record |
| ----------------------- |
| mainnet-tornado.xxx.eth |
| goerli-tornado.xxx.eth |
#### **Sidechains Relayers (Optional)**
#### **Sidechains relayers (Optional)**
You also have the option to add subdomains with their corresponding TXT records to support chains other than Ethereum. Sidechains relayers use a different version of the Relayer software. The complete requirements with instructions are found [here](https://github.com/tornadocash/tornado-relayer/blob/light/README.md).
@ -74,7 +74,7 @@ You also have the option to add subdomains with their corresponding TXT records
| arbitrum-tornado.xxx.eth |
| avalanche-tornado.xxx.eth |
#### **Nova Relayer (Optional)**
#### **Nova relayer (Optional)**
Tornado Cash Nova uses its own version of the software. If you wish to become a relayer for Tornado Cash Nova, you will find instructions to follow [here](https://github.com/tornadocash/tornado-pool-relayer#deploy-with-docker-compose).
@ -84,7 +84,7 @@ Tornado Cash Nova uses its own version of the software. If you wish to become a
![](/.gitbook/assets/3.png)
### **4. Set Up Workers**
### **4. Set up workers**
Workers are the addresses that will allow your relayer to send ZK-proofs to users. By default, the first worker is the ENS domain owner's address.
@ -92,7 +92,7 @@ To ensure an extra level of security, we advise you to set up more than one work
Only the mainnet requires you to register workers. All other networks do not require the use of registered workers.
![](../.gitbook/assets/4.png)
![](/.gitbook/assets/4.png)
### 5. Stake
@ -102,7 +102,7 @@ The minimum staked amount is currently set by Tornado Cash governance at **`300
When a relayer is used in the Tornado Cash pool, a small amount of TORN is automatically collected from this staked balance by the `StakingReward` contract. This element is essential to keep in mind as relayers will need to keep enough TORN locked (\~`40 TORN` at the moment in April 2022) to be able to pay back the transaction fee to the staking contract.
The collected fees are subsequently distributed among DAO members with locked TORN tokens. TORN are usually locked to participate in on-chain governance (submitting & voting on proposals). You can find more information both on this [forum post](https://torn.community/t/proposal-relayer-registry-setting-parameters-after-audit/2134) & in the [Staking TORN documentation page](staking/).
The collected fees are subsequently distributed among DAO members with locked TORN tokens. TORN are usually locked to participate in on-chain governance (submitting & voting on proposals). You can find more information both on the _[Staking documentation page](../token/staking.md).
{% hint style="warning" %}
Your staked TORN amount is not claimable, and it is non-refundable.
@ -110,7 +110,7 @@ Your staked TORN amount is not claimable, and it is non-refundable.
![](/.gitbook/assets/5.png)
### 6. Summary: Final Verification & Registration
### 6. Final verification and registration
Last but not least, we advise you to **double-check all information** displayed in the Summary before registering.

@ -1,7 +1,5 @@
# How to use TOR with Tornado Cash
On-chain confidentiality is ensured by the [Tornado Cash](https://tornado.cash) tool.
However, before and after your transactions are executed, your privacy may not be ensured. That's why we advise you to use TOR when you use Tornado Cash.
Here is a quick and easy tutorial to ensure your anonymity.
@ -18,19 +16,19 @@ Then, run it.
First, search for `about:config` on your URL navigation bar.
![](../.gitbook/assets/aboutconfig.png)
![](/.gitbook/assets/aboutconfig.png)
Then, accept the caution message by clicking on `Accept the Risk and Continue`.
![](../.gitbook/assets/aboutconfig2.png)
![](/.gitbook/assets/aboutconfig2.png)
Search for `wasm` and turn `javascript.options.wasm` on true.
![](../.gitbook/assets/wasm.png)
![](/.gitbook/assets/wasm.png)
Search for `indexedDB` and turn `dom.indexedDB.logging.details` and `dom.indexedDB.logging.enabled` on true
![](../.gitbook/assets/indexeddb.png)
![](/.gitbook/assets/indexeddb.png)
### Step **#3 -** Install Metamask
@ -56,5 +54,5 @@ Then, you can add Metamask to your toolbar, by doing a right click on it and dra
![](</.gitbook/assets/metamaskicon(1).gif>)
### Step **#4 - Enjoy your privacy** :sunglasses:****
### Step **#4 - Enjoy your privacy**

@ -1,4 +1,4 @@
# How Does Tornado Cash Work?
# How does Tornado Cash work?
Before diving into the tutorials explaining & easing the use of Tornado.Cash, here is an overall overview of the protocol's global functioning.
@ -27,7 +27,7 @@ The strength of such protocol is linked directly to its number of users and the
_More recommendations are provided in:_ [_Tips to remain anonymous_](tips-to-remain-anonymous.md)_._
### Contribution of zk-SNARK & hashing process
### Contribution of zk-SNARK and hashing process
Tornado.Cash uses Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (also called zk-SNARK) to verify & allow transactions.

@ -6,21 +6,21 @@ However, maintaining privacy and preserving financial freedom should never come
To this extent, **Tornado.Cash Compliance Tool enables users to prove the origin of their funds.** Thanks to the Note generated after each deposit, **this tool will issue a cryptographically verified proof of transactional history** using the Ethereum addresses used to deposit & withdraw assets.
You can visit the Medium post related to this tool to learn more about its development and launch: [**Tornado.Cash compliance Medium Post**](https://tornado-cash.medium.com/tornado-cash-compliance-9abbf254a370).
You can visit the Medium post related to this tool to learn more about its development and launch: [**compliance tool Medium post announcement**](https://tornado-cash.medium.com/tornado-cash-compliance-9abbf254a370).
Therefore, if you are ever in need to prove the origin of held assets withdrawn from one of Tornado.Cash pools, we invite you to use the following [Compliance Tool](https://tornadocash.eth.link/compliance):
Therefore, if you are ever in need to prove the origin of held assets withdrawn from one of Tornado.Cash pools, we invite you to use the compliance tool.
![https://app.tornado.cash/compliance/](/.gitbook/assets/capture-de-cran-2021-09-02-a-14.57.11.png)
![](/.gitbook/assets/capture-de-cran-2021-09-02-a-14.57.11.png)
## How To Use the Compliance Tool?
## How to use the compliance tool?
With each deposit made through the [Tornado.Cash app](https://tornadocash.eth.link), a new Note is generated by the protocol. This Note is necessary to withdraw the deposited assets later on any withdrawal address. It is this same Note that, if needed, allow users to generate a Compliance Report to prove the origin of their assets.
With each deposit made through the application, a new Note is generated by the protocol. This Note is necessary to withdraw the deposited assets later on any withdrawal address. It is this same Note that, if needed, allow users to generate a Compliance Report to prove the origin of their assets.
_More information about how to deposit & withdraw assets on Tornado.Cash are available on:_ [_Deposit & Withdraw_](deposit-withdraw.md)_._
_More information see section on_ [_Deposit / Withdraw_](deposit-withdraw.md)_._
To get a Compliance Report, the user solely need to copy the Note, generated after the deposit, in the dedicated box.
To get a compliance report, the user solely need to copy the Note, generated after the deposit, in the dedicated box.
### Before Withdrawal
### Before withdrawal
If the Note wasn't spent yet (i.e. assets have still not been withdrawn), the Compliance tool will only provide you with information about the deposit:
@ -30,13 +30,13 @@ If the Note wasn't spent yet (i.e. assets have still not been withdrawn), the Co
The commitment is the hashed random area of bytes generated at each deposit that is sent to Tornado.Cash smart contract to characterize the transaction.
![https://app.tornado.cash/compliance/](../.gitbook/assets/capture-de-cran-2021-09-02-a-15.07.01.png)
![](../.gitbook/assets/capture-de-cran-2021-09-02-a-15.07.01.png)
_You can find more information about how Tornado.Cash achieve to provide privacy by reading_ [_How does Tornado.Cash work?_](../general/how-does-tornado.cash-work.md)_._
_You can find more information about how Tornado.Cash achieve to provide privacy by reading_ [_How does Tornado.Cash work?_](../how-does-it-work.md)_._
### After Withdrawal
### After withdrawal
If the Note was spent (i.e. assets were withdrawn to a given address using the Note), the Compliance Tool will complete the information above by adding:
If the note was spent (i.e. assets were withdrawn to a given address using the note), the compliance tool will complete the information above by adding:
* Transaction hash of the withdrawal;
* The destination address;
@ -46,7 +46,7 @@ The nullifier hash is a public input that is sent on-chain to get checked with t
![https://app.tornado.cash/compliance/](/.gitbook/assets/capture-de-cran-2021-09-02-a-15.12.23.png)
Therefore, the tool allows users to re-link source & destination addresses in order to prove transaction history for assets used on Tornado.Cash.
Therefore, the tool allows users to re-link source & destination addresses in order to prove transaction history for assets used on Tornado Cash.
This information can also be downloaded under a PDF format, making it is easier to get sent to any desired third part:

@ -1,4 +1,4 @@
# Anonymity Mining
# Anonymity mining
Anonymity mining is an incentive to increase the level of privacy in any coin-joining or coin-mixing protocols by rewarding participants anonymity points (AP) dependent on how long they hedge their assets in a pool.
@ -18,17 +18,17 @@ One of the community members created the resource of [a mining spreadsheet 13](h
1\. Decide what amount and asset to deposit by selecting it through the dropdown menu, before clicking on "Connect" and "Deposit".
![](../.gitbook/assets/m3fh0gl.png)
![](/.gitbook/assets/m3fh0gl.png)
2\. Take a record of your depositing note and back it up safely, **do not share this with anyone or risk losing your deposit and reward.**
![](../.gitbook/assets/vhustru.png)
![](/.gitbook/assets/vhustru.png)
3\. Generate the proof and submit the transaction.
4\. Your deposit should now be viewable on the bottom of the page, you can track how much AP it earns here; remember the longer your deposit remains active, the more AP you earn.
![](../.gitbook/assets/k6juetp.png)
![](/.gitbook/assets/k6juetp.png)
_Notes that are active (not withdrawn) are known as “unspent” notes._
@ -36,29 +36,29 @@ _Notes that are active (not withdrawn) are known as “unspent” notes._
1\. First you must create a mining account and store those credentials on-chain for easy recovery (requires a transaction), **like depositing notes, you should never share your mining recovery key with anyone** and ensure to back it up in a safe place. This feature is not supported by hardware wallets so its encouraged to store the information as presented\_.\_
![](../.gitbook/assets/lskzkgk.png)
![](/.gitbook/assets/lskzkgk.png)
2\. Take an active deposit through providing an unspent note and withdraw to an address of preference and decide whether to use a relayer or not (_to maintain a deposits anonymity it is always advised to use a relayer_), this will bring the note into a “spent” state.
![](../.gitbook/assets/aid86cj.png)
![](/.gitbook/assets/aid86cj.png)
**Remember to still keep your depositing notes a secret even after withdrawing, as they still retain the ability to redeem AP.**
![](../.gitbook/assets/bpsqxxr.png)
![](/.gitbook/assets/bpsqxxr.png)
3\. Visit the mining route of the application and enter your spent note, you may be faced with one of the following situations.
* **The ability to claim your spent note**: click the “Claim reward” button and submitting the transaction either by using a relayer or not, once confirmed your AP balance should update to reflect the action.
![](../.gitbook/assets/e9jyqhu.png)
![](/.gitbook/assets/e9jyqhu.png)
* **The inability to claim a spent note:** _“Warning: The note is not yet ready for anonymity mining. You can wait few days before trying again”_ - This means the Merkle trees are out of sync and require a transaction to be updated.
![](../.gitbook/assets/i6qtr0f.png)
![](/.gitbook/assets/i6qtr0f.png)
Updating the trees can be an expensive process, **it is recommended that users with small deposits wait for the larger miners to update the trees, this could take anywhere from a few days to a week**. If you want to view your event relative to the current pending batches. Click the _“Show mining note information”_ hyperlink, here you can also pay the transaction fees to sync the tree relative to your withdrawal through the “Update trees” button.
![](../.gitbook/assets/d8dmxjj.png)
![](/.gitbook/assets/d8dmxjj.png)
### How to exchange AP
@ -80,6 +80,6 @@ It is always recommended to plan when deciding to mine any of the anonymity sets
For more information on anonymity mining, seek the following resources:
* [Tornado.Cash governance proposal article](https://tornado-cash.medium.com/tornado-cash-governance-proposal-a55c5c7d0703)
* [Tornado.Cash anonymity mining optimisation article](https://tornado-cash.medium.com/gas-price-claimed-anonymity-mining-a-victim-but-now-everyone-can-claim-ap-5441aaa32a1a)
* [Tornado Cash governance proposal article](https://tornado-cash.medium.com/tornado-cash-governance-proposal-a55c5c7d0703)
* [Tornado Cash anonymity mining optimisation article](https://tornado-cash.medium.com/gas-price-claimed-anonymity-mining-a-victim-but-now-everyone-can-claim-ap-5441aaa32a1a)
* [Anonymity mining explained (technical)](https://torn.community/t/anonymity-mining-technical-overview/15)

@ -2,14 +2,12 @@
## 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.**
TORN is an ERC20-compatible token with a fixed supply that governs Tornado Cash, TORN holders can make proposals and vote to change the protocol via governance.
**Heres 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
* **5% (500,000 TORN):** Airdrop to early users of ETH pools
* **10% (1,000,000 TORN):** Anonymity mining for 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
@ -18,24 +16,20 @@ TORN is an ERC20-compatible token with a fixed supply that governs [Tornado.Cash
![](/.gitbook/assets/1-gmc0jw8zr5xfvrk5zyqmya.png)
## Airdrop
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.
Users who have believed in 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 arent redeemed will be swept into the governance contract after 1 year and become part of the DAO Treasury. Redeemed TORN will be available immediately.
TORN has been airdropped to [all addresses](https://github.com/tornadocash/airdrop/blob/master/airdrop.csv) that made deposits into 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 arent 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:
![](/.gitbook/assets/1-ogfrad8p3gez14zh4jndiq-2x.png)
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.
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 to both have a say in governance.
The exact curve for the time multiplier looks like this:
![](../.gitbook/assets/1-bje88nlnkbe29-zcs5agkw-2x.png)
![](/.gitbook/assets/1-bje88nlnkbe29-zcs5agkw-2x.png)
The exact airdrop formula is the following:
![](../.gitbook/assets/1-megm4amqrrkx0qxva9iska-2x.png)
_Written by_ [_**Tornado Team**_](https://tornado-cash.medium.com/tornado-cash-governance-proposal-a55c5c7d0703)
![](/.gitbook/assets/1-megm4amqrrkx0qxva9iska-2x.png)

@ -1,10 +1,6 @@
---
description: Staking alternatives for $TORN
---
# Staking
Since the execution of [proposal #10](https://tornadocash.eth.limo/governance/10), an additional utility was enabled for the asset aside from governance. Through the deployment of the relayer registry, which acts as a official store of active relayers. This is then referenced on the frontend through referencing the registry contract. Relayers pay a percent of withdrawal fees to governance to have an active registration in the registry.
Since the execution of [proposal #10](https://etherscan.io/address/0xEC2412368be52107Fa549c3fb78DE1e3e6bF18EB#code), an additional utility was enabled for the asset aside from governance. Through the deployment of the relayer registry, which acts as a official store of active relayers. This is then referenced on the frontend through referencing the registry contract. Relayers pay a percent of withdrawal fees to governance to have an active registration in the registry.
The fee mechanisim functions by relayers locking a listing amount (currently `300 TORN`) and everytime a withdrawal is processed the registry fee (currently `0.3%` of the relayer's arbitary fee) is deducted from their locked balance. This fee is then distributed proportionally to tokenholders locked into the governance contract. Relayers must keep a locked balance greater than the minimum balance (currently `40 TORN`) to be marked as an active relayer and be recommended on the frontend.
@ -12,31 +8,22 @@ The listing amount, registry fee and minimum balance are all configurable by gov
### How to stake?
# Tornado Cash
### How to Stake TORN token ?
First, [connect your wallet to Tornado Cash](../../tornado-cash-classic/how-to-connect-your-wallet.md).
As mentioned above, the process to lock TORN tokens has remained unchanged.
* It happens here ➡️ [https://tornadocash.eth.limo/governance](https://tornadocash.eth.limo/governance) ⬅️, by clicking on **`Manage`**, then going on the **`Lock`** tab
* To do that click the **`Voting`** button on the navigation bar at the top of the page to be directed to the governance route of the application
* The governance contract need to be approved in order to allow the transfer of your tokens to the smart contract. To do so, you need to click on the **`Approve`** button
* Once the approval is confirmed, you can chose the amount of token to lock, then click on **`Lock`**
* All you have to do after that is to confirm the transaction in your wallet & wait for the confirmation to come through
![](/.gitbook/assets/c05e5a1813edad280544b627b24002dc8d5adcf2.png)
### How to Claim Your Staking Reward ?
### How to claim your staking reward?
Now that your TORN tokens have stayed nice & warm locked in the governance contract, you are able to claim your staking reward. How to do that? Everything is still happening here ➡️ [https://tornadocash.eth.link/governance](https://tornadocash.eth.limo/governance) ⬅️
As soon as you log in the page, you will be able to see your staking reward at the top, just waiting for you to collect it 💰
To do that click the **`Voting`** button on the navigation bar at the top of the page to be directed to the governance route of the application. As soon as you connect your wallet, you will be able to see your staking reward at the top if you have a balance.
![](/.gitbook/assets/head.png)
* Click **`Manage`** -> **`Claim`** tab -> **`Claim`** _button._
![](</.gitbook/assets/claim (1).png>)
##

@ -1,9 +1,3 @@
---
description: >-
To deposit or withdraw funds, you will need to connect your wallet on Tornado
Cash.
---
# How to connect your wallet
## Connect your wallet
@ -14,7 +8,7 @@ To connect your wallet to Tornado Cash, you have two options: You can either cli
You can also click on **Settings** on the top right of the page then click on **Connect your wallet.**&#x20;
![Connecting via Settings](<.gitbook/assets/Screen Recording 2022-05-16 at 4.07.52 PM.gif>)
![Connecting via settings](<.gitbook/assets/Screen Recording 2022-05-16 at 4.07.52 PM.gif>)
We recommend you to use Metamask since it is currently the most reliable and stable wallet.
@ -73,7 +67,7 @@ To connect your wallet, you will need your phone. If you have a ImToken wallet,
![Connecting ImToken](<.gitbook/assets/imtoken.gif>)
### **Argent Wallet**
### **Argent wallet**
To connect your wallet, you will need your phone. If you have a Argent wallet, you should open the application then follow the next steps:

@ -1,4 +1,4 @@
# Deposit & Withdraw
# Deposit and withdraw
This tutorial is a step-by-step explanation of how to deposit & withdraw your funds. If you want to understand how the internal system of Tornado.cash works, please refer to [this tutorial](../general/how-does-tornado.cash-work.md).
@ -6,7 +6,7 @@ This tutorial is a step-by-step explanation of how to deposit & withdraw your fu
### Choose a chain
[Tornado cash](https://tornadocash.eth.link) is available on several blockchains, so you will have to choose among 4 chains:
Tornado Cash Classic is available on several blockchains, so you will have to choose among 4 chains:
![](/.gitbook/assets/azpoj.gif)
@ -28,7 +28,7 @@ Click on `Deposit` and store your note on a secure place before clicking on `I b
### Be patient
As explained [here](../general/tips-to-remain-anonymous.md#be-patient), the longer you wait, the greater your anonymity set will be.
As explained [here](/general/guides/opsec.md#be-patient), the longer you wait, the greater your anonymity set will be.
Congrats ! You did it. Now your tokens are on the Tornado.Cash pool.
@ -36,7 +36,7 @@ Congrats ! You did it. Now your tokens are on the Tornado.Cash pool.
### Choose a chain
[Tornado cash](https://tornadocash.eth.link) is available on several blockchains, so you will have to choose among 4 chains:
Tornado Cash Classic is available on several blockchains, so you will have to choose among 4 chains:
![](/.gitbook/assets/enregistrement-de-le-cran-2021-08-25-a-16.15.15-1-.gif)
@ -48,7 +48,7 @@ Use your deposit note by pasting it in the corresponding box. Click on `Withdraw
![](/.gitbook/assets/abdaaaa.png)
## Note Account
## Note account
A Note Account allows to **store encrypted on-chain backups** of private notes. This makes safe storage of funds hassle- and stress-free with the security of the Ethereum blockchain backing each note.
@ -62,5 +62,5 @@ A Note Account allows to **store encrypted on-chain backups** of private notes.
![](https://i.imgur.com/AqkPo5o.png)
**Never share your Note Account key.**
**Never share your note account key.**

@ -1,6 +1,6 @@
# More Anonymity Tips
# More anonymity tips
For this section, we refer you to the [tips-to-remain-anonymous.md](../general/tips-to-remain-anonymous.md "mention") tutorial as a first step. All points mentioned in this tutorial still apply to Tornado Cash Nova.
For this section, we refer you to the [tips-to-remain-anonymous.md](../general/guides/opsec.md "mention") tutorial as a first step. All points mentioned in this tutorial still apply to Tornado Cash Nova.
As a quick reminder, these tips include:
@ -14,19 +14,19 @@ As a quick reminder, these tips include:
However, with its new features, Tornado Cash Nova requires further precautions to maintain anonymity.
## Use of Relayers <a href="#use-of-relayers" id="use-of-relayers"></a>
## Use of relayers
Gas fees payments are necessary for transactions. For shielded transfers & withdrawals, two payment methods are available to provide ETH for gas fee. You can either **connect your wallet or use a Relayer**.
Gas fees payments are necessary for transactions. For shielded transfers & withdrawals, two payment methods are available to provide ETH for gas fee. You can either **connect your wallet or use a relayer**.
Going through your wallet for this gas fee can compromise the anonymity of the transaction if used ETH are linkable to your identity. Therefore, **it is recommended to use a Relayer to preserve privacy**
![Tips1](https://i.imgur.com/PsZ89Ym.png)
## Choice of Withdrawal Amounts <a href="#choice-of-withdrawal-amounts" id="choice-of-withdrawal-amounts"></a>
## Custom withdrawal amounts
The customized amounts feature offers more flexibility & freedom of usage. However, it can compromise your privacy if used carelessly.
### Choosing predefined amounts for withdrawals <a href="#choosing-predefined-amounts-for-withdrawals" id="choosing-predefined-amounts-for-withdrawals"></a>
### Choosing predefined amounts for withdrawals
![Tips2](https://i.imgur.com/dKYvNQT.png)

@ -1,14 +1,12 @@
# Logging In Tornado Cash Nova
# Connect wallet
Launched in December 2021, Tornado Cash Nova offers the freedom to choose customized amounts for transactions, as well as the ability to transfer tokens without leaving the anonymity pool. With such unique features, this new pool requires its own set of instructions.
Tornado Cash Nova (beta version) can be accessed through its own decentralized app at[ nova.tornadocash.eth.link](https://nova.tornadocash.eth.link).
Tornado Cash Nova (beta version) can be accessed through its own decentralized app at [nova.tornadocash.eth](https://app.ens.domains/name/nova.tornadocash.eth/details)
![](https://i.imgur.com/F8pojDs.png)
First of all, welcome to Tornado Cash Nova pool & lets discover how this brand new tool functions 🌪
## Log In <a href="#log-in-nova" id="log-in-nova"></a>
## Log In
![](https://i.imgur.com/uHPTk13.png)
@ -19,7 +17,7 @@ You can log into your Tornado Cash Nova account either by:
Each account is connected to a unique **shielded address** (as well as a unique **shielded key**) that can both be used to log in & manage your balance within the Nova pool.
### Tornado Cash Nova Account <a href="#tornado-cash-nova-account" id="tornado-cash-nova-account"></a>
### Account
Logging into the Nova pool will allow you to:
@ -31,11 +29,10 @@ Logging into the Nova pool will allow you to:
Only those who have access to your Metamask wallet or to your Shielded key will be able to access these informations regarding your account (i.e. your shielded balance).\
⚠️ Be aware of which information you share with whom.
# Logging in with MetaMask <a href="#metamask-wallet" id="metamask-wallet"></a>
# Logging in with MetaMask
Each Tornado Cash Nova account is linked to a shielded address. As mentionned above, users have two ways to access their account & its balance. One of these ways is **through a MetaMask wallet connected to the appropriate shielded address**.
* Go to https://nova.tornadocash.eth.limo/ or any of the alternative links from Tornado Cash landing page.
* Click on the `Log in` button.
![](https://imgur.com/aSjaNa4.png)
@ -59,8 +56,7 @@ After the transaction is succesful, you will find your shielded balance here.
To fund **another registered shielded address**, paste it under *Recipient Address*, and follow the same steps as above.
_More information about the Funding action is availaible on_ [_Fund & Withdraw on Nova_](fund-and-withdraw-on-nova.md)__
_More information see the section on_ [_Deposit and Withdraw_](deposit-withdraw.md)__
# Set up an account with a shielded key
@ -78,7 +74,7 @@ Your shielded address will be crypted & created with the generation of a shielde
Once the account is set, you will be able to receive shielded transfers of tokens from any another address registered to the pool. You will also be able to fund, transfer & withdraw tokens as you wish.
# Logging in with a Shielded Key <a href="#shielded-key" id="shielded-key"></a>
# Logging in with a shielded Key
As seen above, the other way to log in is **through the generated Shielded Key** that is created when an account is created through the set up of a new shielded address.
@ -97,7 +93,7 @@ Once you are logged in with your address & your account is set up, you can downl
![](https://i.imgur.com/F2Scf8w.png)
To obtain full privacy, the same good practices that were recommended for traditional Tornado Cash pools are still required. _You can find guidelines to maintain privacy in the protocols documentation:_ [_Tips to remain anonymous_](../guides/opsec.md) _&_ [_More anonymity tips_](anonymity-tips.md)_._
To obtain full privacy, the same good practices that were recommended for traditional Tornado Cash pools are still required. _You can find guidelines to maintain privacy in the sections;_ [_Tips to remain anonymous_](../general/guides/opsec.md) _and_ [_Anonymity tips_](anonymity-tips.md)_._
\_\_

@ -1,13 +1,8 @@
# Fund & Withdraw on Nova
# Deposit and withdrawing
Tornado Cash works by breaking the on-chain link between source & destination addresses. To do so, the protocol needs tokens to be deposited in a pool from one address, then to be withdrawn through another address.
Tornado Cash works by breaking the on-chain link between source & destination addresses. To do so, the protocol needs tokens to be deposited in a pool from one address, then to be withdrawn through another address. This principle remains the same for Tornado Cash Nova.
This principle remains the same for Tornado Cash Nova. As for traditional fixed amount pools, these two actions are core to the efficiency of the tool:
* The “Funding” process,
* The “Withdrawing” process.
## Funding Process
## Depositing
The great novelty compared to traditional Tornado Cash pools is that **deposited amounts are no longer predefined.** Users can choose a customized amount within the capacity of their wallet balance.
@ -15,9 +10,9 @@ Therefore, if you want to put 0.4 ETH in the pool, you can do it all at once rat
![](https://i.imgur.com/rqmzdgG.gif)
### How Does It Work?
### How does it work?
#### **The First Deposit 💰**
#### **The first deposit 💰**
* The first step is to log in Tornado Cash Nova through a Metamask account.
* Your account is not set yet (button `Set up account` available on the top right corner). To set up your account, you can either:
@ -29,7 +24,7 @@ When you log in, the `Recipient address` is filled by default with your logged-i
If you set a new account, you will be able to log into the pool later, check your Tornado shielded balance or receive shielded transfers by using either your shielded address or shielded key.
_All information about how to use these elements to log in or where to find your shielded key are available on_ [logging-in-tornado-cash-nova.md](logging-in-tornado-cash-nova.md "mention")_._
_All information about how to use these elements to log in or where to find your shielded key are available on_ [logging-in-tornado-cash-nova.md](connect-wallet.md "mention")_._
#### **The following deposits 💸**
@ -40,7 +35,7 @@ By logging into the pool with your shielded address / key, you can deposit your
⚠️ Since it is a beta version, deposits are currently limited to 1 ETH/transaction.\
However, if the community wishes to increase this limit, the 1 ETH cap amount can always be changed through a governance proposal.
## Withdrawing Process <a href="#withdrawing-process" id="withdrawing-process"></a>
## Withdrawing
![](https://i.imgur.com/qn9eJXS.gif)
@ -49,7 +44,7 @@ To withdraw funds from the Nova pool, you can either:
* choose from a set of four predetermined amounts (0.1, 0.3, 0.5 & 1 ETH),
* choose a completely customized amount by going through the button `Set custom`.
### Custom Option For Withdrawal <a href="#custom-option-for-withdrawal" id="custom-option-for-withdrawal"></a>
### Custom amount when withdrawing
**The custom option should only be chosen with full knowledge of the following facts and in complete confidence in your actions.**
@ -62,9 +57,9 @@ Indeed, depending on the chosen amount, a connection might be deduced between yo
_For instance, a deposit of 0.42 ETH can be linked to a withdrawal of exactly 0.42 ETH or two times 0.21 ETH, which might compromise anonymity. However, with a withdrawal of 0.391 ETH, privacy is better preserved as there is no obvious link between the 0.42 & 0.391 amounts._
### Transactions through Gnosis Chain (L2) <a href="#transctions-through-gnosis-chain-l2" id="transctions-through-gnosis-chain-l2"></a>
### Transactions through Gnosis Chain (L2)
For cheaper transactions, Gnosis Chain (former xDAI Chain) is used as a Layer-2. To this end, a bridge is used between ETH from the Mainnet & WETH from Gnosis Chain.
For cheaper transactions, Gnosis Chain (formerly xDAI Chain) is used as an alternative. To this end, a bridge is used between ETH from the Mainnet and WETH from Gnosis Chain.
Therefore, to prevent spam attacks that will overload the bridge, the withdrawal amount has to be larger than 0.05 ETH.

@ -1,4 +1,4 @@
# Shielded Transfers on Nova
# Shielded transfers
One of the specificity of Tornado Cash Nova is the introduction of shielded transfers. It allows shielded transactions of deposited tokens while staying within the pool.