From 5039ccdb21a55f8696b6b5ac3c08b52d1d135e9e Mon Sep 17 00:00:00 2001 From: Theo Date: Tue, 29 Aug 2023 12:48:00 -0700 Subject: [PATCH] Fix grammatical errors, add notes and fix images & gifs resolve paths --- ...ng => TORN-token-airdrop-amount-curve.png} | Bin ...-2x.png => TORN-token-airdrop-formula.png} | Bin ...zyqmya.png => TORN-token-distribution.png} | Bin ...boutconfig.png => about-config-in-tor.png} | Bin ...2.png => about-config-tor-accept-risk.png} | Bin ...=> anonymity-mining-balance-info-page.png} | Bin ...anonymity-mining-check-deposit-reward.png} | Bin ...nymity-mining-claim-ap-reward-warning.png} | Bin ... => anonymity-mining-claim-ap-rewards.png} | Bin ...g => anonymity-mining-earn-ap-deposit.png} | Bin ...xjj.png => anonymity-mining-info-page.png} | Bin ...ity-mining-save-note-and-send-deposit.png} | Bin ... => anonymity-mining-setup-ap-account.png} | Bin ...o.png => anonymity-mining-withdraw-ap.png} | Bin ...5e5a1813edad280544b627b24002dc8d5adcf2.png | Bin 50464 -> 0 bytes ...ng => check-proposal-contract-address.png} | Bin ...png => compliance-tool-example-report.png} | Bin ...e-tool-generate-report-for-spent-note.png} | Bin ...compliance-tool-inserted-unspent-note.png} | Bin ...-14.57.11.png => compliance-tool-page.png} | Bin ...onfigure-web-server-browser-extension.png} | Bin ... confirm-withdrawal-from-tornado-pool.png} | Bin ...AHy7.png => download-UI-static-source.png} | Bin ...65c9b23786b98c.png => how-to-delegate.png} | Bin ...d5adcf2 (1).png => how-to-lock(stake).png} | Bin ... install-web-server-browser-extension.png} | Bin ...eI588.png => local-classic-ui-running.png} | Bin ...etamask-add-extension-icon-to-browser.gif} | Bin ...etamask-extension-add-firefox-and-tor.png} | Bin ...amask-extension-allow-in-private-tabs.png} | Bin ...tamask-extension-download-and-install.png} | Bin ...g => metamask-install-firefox-and-tor.png} | Bin .../{head.png => stake-info-page-header.png} | Bin ...b.png => tor-config-enable-indexed-db.png} | Bin .../{wasm.png => tor-config-enable-wasm.png} | Bin .../assets/{image.png => tornado-banner.png} | Bin .../{aid86cj.png => withdraw-note-page.png} | Bin book/README.md | 8 ++--- book/general/community/governance.md | 10 +++--- book/general/guides/local-ui.md | 12 +++---- book/general/guides/opsec.md | 10 +++--- book/general/guides/tor.md | 20 ++++++------ book/general/how-does-it-work.md | 10 +++--- book/general/resources/compliance-tool.md | 16 +++++----- book/general/resources/tutela.md | 4 +-- book/general/token/anonymity-mining.md | 30 ++++++++++-------- book/general/token/index.md | 10 +++--- book/general/token/staking.md | 14 ++++---- 48 files changed, 72 insertions(+), 72 deletions(-) rename book/.gitbook/assets/{1-bje88nlnkbe29-zcs5agkw-2x.png => TORN-token-airdrop-amount-curve.png} (100%) rename book/.gitbook/assets/{1-megm4amqrrkx0qxva9iska-2x.png => TORN-token-airdrop-formula.png} (100%) rename book/.gitbook/assets/{1-gmc0jw8zr5xfvrk5zyqmya.png => TORN-token-distribution.png} (100%) rename book/.gitbook/assets/{aboutconfig.png => about-config-in-tor.png} (100%) rename book/.gitbook/assets/{aboutconfig2.png => about-config-tor-accept-risk.png} (100%) rename book/.gitbook/assets/{ahrjxbq.png => anonymity-mining-balance-info-page.png} (100%) rename book/.gitbook/assets/{k6juetp.png => anonymity-mining-check-deposit-reward.png} (100%) rename book/.gitbook/assets/{i6qtr0f.png => anonymity-mining-claim-ap-reward-warning.png} (100%) rename book/.gitbook/assets/{e9jyqhu.png => anonymity-mining-claim-ap-rewards.png} (100%) rename book/.gitbook/assets/{m3fh0gl.png => anonymity-mining-earn-ap-deposit.png} (100%) rename book/.gitbook/assets/{d8dmxjj.png => anonymity-mining-info-page.png} (100%) rename book/.gitbook/assets/{vhustru.png => anonymity-mining-save-note-and-send-deposit.png} (100%) rename book/.gitbook/assets/{lskzkgk.png => anonymity-mining-setup-ap-account.png} (100%) rename book/.gitbook/assets/{wo55lao.png => anonymity-mining-withdraw-ap.png} (100%) delete mode 100644 book/.gitbook/assets/c05e5a1813edad280544b627b24002dc8d5adcf2.png rename book/.gitbook/assets/{181d612b6c57964bab59c8e5b766f5247211083d.png => check-proposal-contract-address.png} (100%) rename book/.gitbook/assets/{capture-de-cran-2021-09-02-a-15.12.53.png => compliance-tool-example-report.png} (100%) rename book/.gitbook/assets/{capture-de-cran-2021-09-02-a-15.12.23.png => compliance-tool-generate-report-for-spent-note.png} (100%) rename book/.gitbook/assets/{capture-de-cran-2021-09-02-a-15.07.01.png => compliance-tool-inserted-unspent-note.png} (100%) rename book/.gitbook/assets/{capture-de-cran-2021-09-02-a-14.57.11.png => compliance-tool-page.png} (100%) rename book/.gitbook/assets/{4R1HHWy8j2kTwjugeFCfj2NzatB.png => configure-web-server-browser-extension.png} (100%) rename book/.gitbook/assets/{bpsqxxr.png => confirm-withdrawal-from-tornado-pool.png} (100%) rename book/.gitbook/assets/{eHuzorT5lslrOoxKKvRPxLtAHy7.png => download-UI-static-source.png} (100%) rename book/.gitbook/assets/{43c05d176d7f75a336af7a865565c9b23786b98c.png => how-to-delegate.png} (100%) rename book/.gitbook/assets/{c05e5a1813edad280544b627b24002dc8d5adcf2 (1).png => how-to-lock(stake).png} (100%) rename book/.gitbook/assets/{yIT7YcJf1Kc9T7rCcdZW3bZd0mx.png => install-web-server-browser-extension.png} (100%) rename book/.gitbook/assets/{o04px38SoXt0G5IVTxr5rEeI588.png => local-classic-ui-running.png} (100%) rename book/.gitbook/assets/{metamaskicon(1).gif => metamask-add-extension-icon-to-browser.gif} (100%) rename book/.gitbook/assets/{addmetamask.png => metamask-extension-add-firefox-and-tor.png} (100%) rename book/.gitbook/assets/{allowprivateclickokay.png => metamask-extension-allow-in-private-tabs.png} (100%) rename book/.gitbook/assets/{downloadinstall.png => metamask-extension-download-and-install.png} (100%) rename book/.gitbook/assets/{metamaskhome.png => metamask-install-firefox-and-tor.png} (100%) rename book/.gitbook/assets/{head.png => stake-info-page-header.png} (100%) rename book/.gitbook/assets/{indexeddb.png => tor-config-enable-indexed-db.png} (100%) rename book/.gitbook/assets/{wasm.png => tor-config-enable-wasm.png} (100%) rename book/.gitbook/assets/{image.png => tornado-banner.png} (100%) rename book/.gitbook/assets/{aid86cj.png => withdraw-note-page.png} (100%) diff --git a/book/.gitbook/assets/1-bje88nlnkbe29-zcs5agkw-2x.png b/book/.gitbook/assets/TORN-token-airdrop-amount-curve.png similarity index 100% rename from book/.gitbook/assets/1-bje88nlnkbe29-zcs5agkw-2x.png rename to book/.gitbook/assets/TORN-token-airdrop-amount-curve.png diff --git a/book/.gitbook/assets/1-megm4amqrrkx0qxva9iska-2x.png b/book/.gitbook/assets/TORN-token-airdrop-formula.png similarity index 100% rename from book/.gitbook/assets/1-megm4amqrrkx0qxva9iska-2x.png rename to book/.gitbook/assets/TORN-token-airdrop-formula.png diff --git a/book/.gitbook/assets/1-gmc0jw8zr5xfvrk5zyqmya.png b/book/.gitbook/assets/TORN-token-distribution.png similarity index 100% rename from book/.gitbook/assets/1-gmc0jw8zr5xfvrk5zyqmya.png rename to book/.gitbook/assets/TORN-token-distribution.png diff --git a/book/.gitbook/assets/aboutconfig.png b/book/.gitbook/assets/about-config-in-tor.png similarity index 100% rename from book/.gitbook/assets/aboutconfig.png rename to book/.gitbook/assets/about-config-in-tor.png diff --git a/book/.gitbook/assets/aboutconfig2.png b/book/.gitbook/assets/about-config-tor-accept-risk.png similarity index 100% rename from book/.gitbook/assets/aboutconfig2.png rename to book/.gitbook/assets/about-config-tor-accept-risk.png diff --git a/book/.gitbook/assets/ahrjxbq.png b/book/.gitbook/assets/anonymity-mining-balance-info-page.png similarity index 100% rename from book/.gitbook/assets/ahrjxbq.png rename to book/.gitbook/assets/anonymity-mining-balance-info-page.png diff --git a/book/.gitbook/assets/k6juetp.png b/book/.gitbook/assets/anonymity-mining-check-deposit-reward.png similarity index 100% rename from book/.gitbook/assets/k6juetp.png rename to book/.gitbook/assets/anonymity-mining-check-deposit-reward.png diff --git a/book/.gitbook/assets/i6qtr0f.png b/book/.gitbook/assets/anonymity-mining-claim-ap-reward-warning.png similarity index 100% rename from book/.gitbook/assets/i6qtr0f.png rename to book/.gitbook/assets/anonymity-mining-claim-ap-reward-warning.png diff --git a/book/.gitbook/assets/e9jyqhu.png b/book/.gitbook/assets/anonymity-mining-claim-ap-rewards.png similarity index 100% rename from book/.gitbook/assets/e9jyqhu.png rename to book/.gitbook/assets/anonymity-mining-claim-ap-rewards.png diff --git a/book/.gitbook/assets/m3fh0gl.png b/book/.gitbook/assets/anonymity-mining-earn-ap-deposit.png similarity index 100% rename from book/.gitbook/assets/m3fh0gl.png rename to book/.gitbook/assets/anonymity-mining-earn-ap-deposit.png diff --git a/book/.gitbook/assets/d8dmxjj.png b/book/.gitbook/assets/anonymity-mining-info-page.png similarity index 100% rename from book/.gitbook/assets/d8dmxjj.png rename to book/.gitbook/assets/anonymity-mining-info-page.png diff --git a/book/.gitbook/assets/vhustru.png b/book/.gitbook/assets/anonymity-mining-save-note-and-send-deposit.png similarity index 100% rename from book/.gitbook/assets/vhustru.png rename to book/.gitbook/assets/anonymity-mining-save-note-and-send-deposit.png diff --git a/book/.gitbook/assets/lskzkgk.png b/book/.gitbook/assets/anonymity-mining-setup-ap-account.png similarity index 100% rename from book/.gitbook/assets/lskzkgk.png rename to book/.gitbook/assets/anonymity-mining-setup-ap-account.png diff --git a/book/.gitbook/assets/wo55lao.png b/book/.gitbook/assets/anonymity-mining-withdraw-ap.png similarity index 100% rename from book/.gitbook/assets/wo55lao.png rename to book/.gitbook/assets/anonymity-mining-withdraw-ap.png diff --git a/book/.gitbook/assets/c05e5a1813edad280544b627b24002dc8d5adcf2.png b/book/.gitbook/assets/c05e5a1813edad280544b627b24002dc8d5adcf2.png deleted file mode 100644 index 2d7468f48b1cd1c90685f4dce4105010b673a6f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50464 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 ZaA8LIAACjSe_-{ZvQmoAOC(?W{eK|dw$1 `Delegate`. Fill-in the address to which you want to delegate and click **`Delegate`**. Approve the transaction in your wallet and wait for confirmation. -![](/.gitbook/assets/43c05d176d7f75a336af7a865565c9b23786b98c.png) +![](../../.gitbook/assets/how-to-delegate.png) You can undelegate at anytime, to undelegate simply use the `Undelegate` option through `Manage` -> `Undelegate`. diff --git a/book/general/guides/local-ui.md b/book/general/guides/local-ui.md index fbb3567..759d5c6 100644 --- a/book/general/guides/local-ui.md +++ b/book/general/guides/local-ui.md @@ -4,19 +4,19 @@ _If you have privacy concerns about using this extension in this tutorial, you [ ### Requirements -* Desktop enviroment (Windows, Mac or Linux) +* Desktop environment (Windows, Mac or Linux) * Google Chrome browser ### Step #1: Download the static source For this part you'll need to be able to open .zip files, most operating systems allow this. Head to either the Nova or Classic release page on the community git to download the static files. -Nova: https://git.tornado.ws/tornadocash/nova-ui-minified/releases +Nova: https://git.tornado.ws/tornadocash/nova-ui/releases Classic: https://git.tornado.ws/tornadocash/classic-ui/releases Click the version named zip file download option to download the zip file, as seen below. It should download locally to your machine. -![Screenshot 2022-09-06 at 11.15.52|690x407](/.gitbook/assets/eHuzorT5lslrOoxKKvRPxLtAHy7.png) +![Screenshot 2022-09-06 at 11.15.52|690x407](../../.gitbook/assets/download-UI-static-source.png) ### Step #2: Open and unpack the .zip file As mentioned before most operating systems support unpacking .zip files, so open the file that was previously downloaded in the last step. It should create a folder in the same location with the resulting files, take note of the folder location for the next step. @@ -24,14 +24,14 @@ As mentioned before most operating systems support unpacking .zip files, so open ### Step #3: Install the Web Server extension Open up Google Chrome and navigate to the [Web Server extension page](https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb/related?hl=en), click the button highlighted in the image to install. Once installed, click the same button which should now say ¨Launch app¨ to launch the extension. -![Screenshot 2022-09-06 at 11.43.59|690x407](../../.gitbook/assets/yIT7YcJf1Kc9T7rCcdZW3bZd0mx.png) +![Screenshot 2022-09-06 at 11.43.59|690x407](../../.gitbook/assets/install-web-server-browser-extension.png) ### Step #4: Configure the Web Server extension If everything is going correctly you should see a similar screen, firstly click the "Select folder" button (1) and select the folder that was created after the .zip file was opened. It should be in the same location where you downloaded it to. Then once it has been loaded click the link underneath (2) to view the hosted content. -![Screenshot 2022-09-06 at 11.29.45|690x407](../../.gitbook/assets/4R1HHWy8j2kTwjugeFCfj2NzatB.png) +![Screenshot 2022-09-06 at 11.29.45|690x407](../../.gitbook/assets/configure-web-server-browser-extension.png) ### Step #5: Achieve privacy If you can see the frontend interface after clicking the link in the extension then you've successfully done everything correctly and you can use the protocol like normal. -![Screenshot 2022-09-06 at 11.40.59|690x407](../../.gitbook/assets/o04px38SoXt0G5IVTxr5rEeI588.png) \ No newline at end of file +![Screenshot 2022-09-06 at 11.40.59|690x407](../../.gitbook/assets/local-classic-ui-running.png) \ No newline at end of file diff --git a/book/general/guides/opsec.md b/book/general/guides/opsec.md index 3a3b0d1..888c611 100644 --- a/book/general/guides/opsec.md +++ b/book/general/guides/opsec.md @@ -24,7 +24,7 @@ Using onion routing, you can singificantly mask your internet traffic at the cos ### Store notes with confidentiality -Your note provides a record of your original transaction. Anyone who has it can withdraw the funds deposited, but also know the details regarding the depositing address therefore allowing the ability to deanonymise the transaction. +Your note provides a record of your original transaction. Anyone who has it can withdraw the funds deposited, but also know the details regarding the depositing address therefore allowing the ability to deanonymize the transaction. ### Delete history, cache and cookies @@ -32,11 +32,11 @@ Browser history and caches can provide a massive amount of data regarding specif ### Wallet -Metamask one of the most popular wallets - now by default, **logs IP addresses when a wallet is generated or makes a transaction** please excercise caution if you are using this choice as a wallet and do not take methods to migitate the logging. It would effectively void any anonymity acheived on-chain, if your actual IP address is exposed. +Metamask one of the most popular wallets - now by default, **logs IP addresses when a wallet is generated or makes a transaction** please exercise caution if you are using this choice as a wallet and do not take methods to migitate the logging. It would effectively void any anonymity achieved on-chain, if your actual IP address is exposed. -Additionally when you configure an Metamask wallet an Infura RPC access key is assigned to your instance, **if you make two transactions from two seperate addresses from that instance they will be directly related**. It is recommended to delete and reintall the extension when transacting from the source and destination address to ensure a fresh access key and not void your destination address's anonymity. +Additionally when you configure an Metamask wallet an Infura RPC access key is assigned to your instance, **if you make two transactions from two separate addresses from that instance they will be directly related**. It is recommended to delete and reintall the extension when transacting from the source and destination address to ensure a fresh access key and not void your destination address's anonymity. -It is recommended to use open source wallets to evade the surveilance present in the adopoted software like the following recommendations: +It is recommended to use open source wallets to evade the surveillance present in the adopted software like the following recommendations: * [Frame](https://github.com/floating/frame) * [Enkrypt](https://github.com/enkryptcom/enKrypt) @@ -53,7 +53,7 @@ If you make 7 x 10 ETH deposit from one address and withdraw all 10 ETH notes to ### Use different gas parameters -Behavioural patterns in consisent gas values can be used to fingerprint transactions by correlation, configure arbitary gas values when withdrawing and depositing to maximise anonymity. +Behavioural patterns in consistent gas values can be used to fingerprint transactions by correlation, configure arbitrary gas values when withdrawing and depositing to maximise anonymity. ### Select the strongest anonymity sets diff --git a/book/general/guides/tor.md b/book/general/guides/tor.md index 3f34da8..2b1fa6b 100644 --- a/book/general/guides/tor.md +++ b/book/general/guides/tor.md @@ -16,19 +16,19 @@ Then, run it. First, search for `about:config` on your URL navigation bar. -![](../../.gitbook/assets/aboutconfig.png) +![](../../.gitbook/assets/about-config-in-tor.png) Then, accept the caution message by clicking on `Accept the Risk and Continue`. -![](../../.gitbook/assets/aboutconfig2.png) +![](../../.gitbook/assets/about-config-tor-accept-risk.png) Search for `wasm` and turn `javascript.options.wasm` on true. -![](../../.gitbook/assets/wasm.png) +![](../../.gitbook/assets/tor-config-enable-wasm.png) Search for `indexedDB` and turn `dom.indexedDB.logging.details` and `dom.indexedDB.logging.enabled` on true -![](/.gitbook/assets/indexeddb.png) +![](../../.gitbook/assets/tor-config-enable-indexed-db.png) ### Step **#3 -** Install Metamask @@ -36,23 +36,23 @@ Go there: [https://metamask.io/download/](https://metamask.io/download/) First, click on `Install Metamask for Firefox`. -![](/.gitbook/assets/metamaskhome.png) +![](../../.gitbook/assets/metamask-install-firefox-and-tor.png) Click on `Add`. -![](/.gitbook/assets/addmetamask.png) +![](../../.gitbook/assets/metamask-extension-add-firefox-and-tor.png) Allow addons.mozilla.org to install an add-on by clicking on `Continue to Installation`. -![](/.gitbook/assets/downloadinstall.png) +![](../../.gitbook/assets/metamask-extension-download-and-install.png) -Confirm that you allow this extention to run in Private Windows, then click on `Okay`. +Confirm that you allow this extension to run in Private Windows, then click on `Okay`. -![](/.gitbook/assets/allowprivateclickokay.png) +![](../../.gitbook/assets/metamask-extension-allow-in-private-tabs.png) Then, you can add Metamask to your toolbar, by doing a right click on it and dragging Metamask icon to your toolbar. -![]() +![](<../../.gitbook/assets/metamask-add-extension-icon-to-browser.gif>) ### Step **#4 - Enjoy your privacy** diff --git a/book/general/how-does-it-work.md b/book/general/how-does-it-work.md index 0c16f55..5b7dd5e 100644 --- a/book/general/how-does-it-work.md +++ b/book/general/how-does-it-work.md @@ -10,21 +10,21 @@ Once the funds are withdrawn by a new address from those pools, the on-chain lin **Nova anonymity pools**: -* Asset management is fufilled through a shielded key, which can be generated signing a message with an Ethereum address for reusable access -* Custody is obtained by either transferring assets to the pool or registering a shielded key to recieve shielded transfers +* Asset management is fulfilled through a shielded key, which can be generated signing a message with an Ethereum address for reusable access +* Custody is obtained by either transferring assets to the pool or registering a shielded key to receive shielded transfers -The strength of such protocol is linked directly to its amount of users and the size of its pool. The more users deposit into the pool the larger the probability of correlation. However, to ensure anonymity individuals must be concious of: +The strength of such protocol is linked directly to its amount of users and the size of its pool. The more users deposit into the pool the larger the probability of correlation. However, to ensure anonymity individuals must be conscious of: * Using a relayer for withdrawal gas fees and maintain a shielded balance * Waiting for sufficient subsequent deposits for decreased chances of probability or relation to the withdrawal -_For a more detailed explaination see guide_ [_Tips to remain anonymous_](guides/opsec.md)_._ +_For a more detailed explanation see guide_ [_Tips to remain anonymous_](guides/opsec.md)_._ ### Zero knowledge Tornado Cash uses Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (zkSNARK) to maintain non-custodial shielded transactions. -To process a deposit a random slice of bytes is generated by the individual, it is then encrypted using [Pedersen hashing](https://iden3-docs.readthedocs.io/en/latest/iden3\_repos/research/publications/zkproof-standards-workshop-2/pedersen-hash/pedersen.html). Pedersen hashing is optimised for the arimithic circuits for zero-knowledge proofs and maintain low transactional costs in the Ethereum virtual machine. Depositing is fufilled through inputing the hash for insertion into the Merkle tree. +To process a deposit a random slice of bytes is generated by the individual, it is then encrypted using [Pedersen hashing](https://iden3-docs.readthedocs.io/en/latest/iden3\_repos/research/publications/zkproof-standards-workshop-2/pedersen-hash/pedersen.html). Pedersen hashing is optimized for the arithmetic circuits for zero-knowledge proofs and maintain low transactional costs in the Ethereum virtual machine. Depositing is fulfilled through inputing the hash for insertion 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 be checked with the smart contract & the Merkle tree data. It avoids double-spending for instance. diff --git a/book/general/resources/compliance-tool.md b/book/general/resources/compliance-tool.md index 56a1a5a..3bb1761 100644 --- a/book/general/resources/compliance-tool.md +++ b/book/general/resources/compliance-tool.md @@ -1,16 +1,16 @@ # Compliance tool -By design, everything is public on the blockchain, which can deprive users from their right to privacy. Anyone can have view everyone elses entire financial history. The right of privacy lies in the ability to have control over the information we provide and to whom we provide it. +By design, everything is public on the blockchain, which can deprive users from their right to privacy. Anyone can have view everyone else entire financial history. The right of privacy lies in the ability to have control over the information we provide and to whom we provide it. -To this extent, **the compliance tool enables users to prove the origin of their funds through selective disclourse.** Each note translates to a unique deposit, **this tool will issue a cryptographic proof of a deposit** allowing a third party to authethicate one's transactional profile. +To this extent, **the compliance tool enables users to prove the origin of their funds through selective disclosure.** Each note translates to a unique deposit, **this tool will issue a cryptographic proof of a deposit** allowing a third party to authenticate one's transactional profile. -![](/.gitbook/assets/capture-de-cran-2021-09-02-a-14.57.11.png) +![](../../.gitbook/assets/compliance-tool-page.png) ## How to use the compliance tool? 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 see section _[_Deposit / Withdraw_](deposit-withdraw.md)_._ +_More information see section _[_Deposit / Withdraw_](../../tornado-cash-classic/deposit-withdraw.md)_._ To get a compliance report, the user solely need to copy the note, generated after the deposit, in the dedicated input. @@ -24,7 +24,7 @@ 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 anonymity pool to characterize the transaction. -![](../../.gitbook/assets/capture-de-cran-2021-09-02-a-15.07.01.png) +![](../../.gitbook/assets/compliance-tool-inserted-unspent-note.png) To can find more information about how Tornado Cash achieves privacy see section [_How does Tornado Cash work?_](../how-does-it-work.md)_._ @@ -36,10 +36,10 @@ If the note was spent (i.e. assets were withdrawn to a given address using the n * The destination address * The nullifier hash -The nullifier hash is a public input that is sent on-chain to get checked with the smart contract and authenthicate the presence of the note's secret in the Merkle tree for the withdrawal. +The nullifier hash is a public input that is sent on-chain to get checked with the smart contract and authenticate the presence of the note's secret in the Merkle tree for the withdrawal. -![](../../.gitbook/assets/capture-de-cran-2021-09-02-a-15.12.23.png) +![](../../.gitbook/assets/compliance-tool-generate-report-for-spent-note.png) Therefore, the tool allows users to re-link source and destination addresses in order to prove transaction history for assets transacted through Tornado Cash. The compliance report can be downloaded as a PDF format for accessible disclosure. -![](../../.gitbook/assets/capture-de-cran-2021-09-02-a-15.12.53.png) +![](../../.gitbook/assets/compliance-tool-example-report.png) diff --git a/book/general/resources/tutela.md b/book/general/resources/tutela.md index e9400f8..8333b21 100644 --- a/book/general/resources/tutela.md +++ b/book/general/resources/tutela.md @@ -1,8 +1,8 @@ # Tutela -As apart of the first iteration of a bounty program to incentivise contributors, a task concept formed regarding to help identify poor usage of the protocol - **that could compromise an individual user's privacy**. Which would mean the creation of a tool to compute the relative strength of any of the protocol's anonymity sets and identify potential leaks in certain transactional patterns. +As apart of the first iteration of a bounty program to incentivize contributors, a task concept formed regarding to help identify poor usage of the protocol - **that could compromise an individual user's privacy**. Which would mean the creation of a tool to compute the relative strength of any of the protocol's anonymity sets and identify potential leaks in certain transactional patterns. -Interest gathered from external actors and over the the span of 3 months, a group of independent developers and academics came and coproduced Tutela; a tool to probabilistically find relations between addresses using Tornado Cash through specific hueristics and fingerprint clustering. +Interest gathered from external actors and over the the span of 3 months, a group of independent developers and academics came and coproduced Tutela; a tool to probabilistically find relations between addresses using Tornado Cash through specific heuristics and fingerprint clustering. https://arxiv.org/abs/2201.06811 diff --git a/book/general/token/anonymity-mining.md b/book/general/token/anonymity-mining.md index a26898e..a1fe3cf 100644 --- a/book/general/token/anonymity-mining.md +++ b/book/general/token/anonymity-mining.md @@ -1,5 +1,7 @@ # Anonymity mining +***Please, keep in mind, that you read historical deprecated article. Anonymity mining ended more than two years ago and wont be available anymore.** + Anonymity mining was 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. {% hint style="warning" %} @@ -12,23 +14,23 @@ Individuals deposit to any one of the anonymity pools that are supported (ETH, W _Readers should be aware some lower denomination deposits at the time of writing, do not produce a positive return due to the gas costs required to withdraw, redeem and exchange anonymity points_ -One of the community members created the resource of [a mining spreadsheet 13](https://torn.community/t/anonymity-mining-spreadsheet/720) that helps calculate annual percentage yield’s (APY’s) for each pool and each denomination set within, through estimating the fees required to claim a reward. **It is highly recommended to view this resource and plan one’s course of action before expecting to earn yield.** At the bottom of the spreadsheet, you can view each pool by selecting the associated tab. +One of the community members created the resource of [a mining spreadsheet 13](http://web.archive.org/web/20210727093742/https://torn.community/t/anonymity-mining-spreadsheet/720) that helps calculate annual percentage yield’s (APY’s) for each pool and each denomination set within, through estimating the fees required to claim a reward. **It is highly recommended to view this resource and plan one’s course of action before expecting to earn yield.** At the bottom of the spreadsheet, you can view each pool by selecting the associated tab. ### How to earn AP 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/anonymity-mining-earn-ap-deposit.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/anonymity-mining-save-note-and-send-deposit.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/anonymity-mining-check-deposit-reward.png) _Notes that are active (not withdrawn) are known as “unspent” notes._ @@ -36,39 +38,39 @@ _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 it’s encouraged to store the information as presented\_.\_ -![](../../.gitbook/assets/lskzkgk.png) +![](../../.gitbook/assets/anonymity-mining-setup-ap-account.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 deposit’s anonymity it is always advised to use a relayer_), this will bring the note into a “spent” state. -![](../../.gitbook/assets/aid86cj.png) +![](../../.gitbook/assets/withdraw-note-page.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/confirm-withdrawal-from-tornado-pool.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/anonymity-mining-claim-ap-rewards.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/anonymity-mining-claim-ap-reward-warning.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/anonymity-mining-info-page.png) ### How to exchange AP 1\. Navigate over to the “Swap” tab on the mining page which can be accessed through the second navigation bar from the top of the page. -![](../../.gitbook/assets/ahrjxbq.png) +![](../../.gitbook/assets/anonymity-mining-balance-info-page.png) -2\. Enter the amount of AP requested to exchange or select the “Maximum” option to convert your active balance. Below this input, information regarding the current AP/TORN rate and reward output will be displayed. Provide an address of preference to receive the reward, finalise by generating the proof and submitting the transaction through a relayer or not. +2\. Enter the amount of AP requested to exchange or select the “Maximum” option to convert your active balance. Below this input, information regarding the current AP/TORN rate and reward output will be displayed. Provide an address of preference to receive the reward, finalize by generating the proof and submitting the transaction through a relayer or not. -![](../../.gitbook/assets/wo55lao.png) +![](../../.gitbook/assets/anonymity-mining-withdraw-ap.png) 3\. If all steps were followed correctly, TORN will be transferred to the address of preference provided in step 2 of this section. @@ -81,4 +83,4 @@ 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 anonymity mining optimization article](https://tornado-cash.medium.com/gas-price-claimed-anonymity-mining-a-victim-but-now-everyone-can-claim-ap-5441aaa32a1a) diff --git a/book/general/token/index.md b/book/general/token/index.md index fc860b2..b912f0e 100644 --- a/book/general/token/index.md +++ b/book/general/token/index.md @@ -2,16 +2,14 @@ TORN is an ERC20 compliant token with a fixed supply that governs the protocol, token holders can submit proposals and vote to contribute. -**Initial token distrbution** +**Initial token distribution** * **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 -![](../../.gitbook/assets/1-bjggju1rn4\_qoxgcljfneq.png) - -![](../../.gitbook/assets/1-gmc0jw8zr5xfvrk5zyqmya.png) +![](../../.gitbook/assets/TORN-token-distribution.png) ## Airdrop Early adopters who used in Tornado Cash were allocated a share in governing the protocol on launch to aspire for an equitable demographic in the asset's economics. @@ -26,8 +24,8 @@ So that a larger deposits like 100 ETH only got twice as many tokens as a 1 ETH The exact curve for the time multiplier looks like this: -![](../../.gitbook/assets/1-bje88nlnkbe29-zcs5agkw-2x.png) +![](../../.gitbook/assets/TORN-token-airdrop-amount-curve.png) The exact airdrop formula was the following: -![](../../.gitbook/assets/1-megm4amqrrkx0qxva9iska-2x.png) \ No newline at end of file +![](../../.gitbook/assets/TORN-token-airdrop-formula.png) \ No newline at end of file diff --git a/book/general/token/staking.md b/book/general/token/staking.md index 5a76fb0..83d892c 100644 --- a/book/general/token/staking.md +++ b/book/general/token/staking.md @@ -1,6 +1,6 @@ -# Locking in Governance +# Staking in Governance -### Why? (See below on how to lock) +### Why? (See below on how to stake) All Governance systems converge towards the same pattern of consensus systems based on some form of pluralism-based voting. This is for the reason, that large-scale coordination problems can only be resolved by giving "users" or "nodes" or "validators" (however you want to call it) an incentive to cooperate, and then bind that incentive within a ruleset which ultimately the "users/nodes/validators" will prefer because it encourages the stability of the system which actually supplies them the incentives, meaning that it economically guarantees them future income. @@ -10,11 +10,11 @@ Since the execution of [Proposal #10](https://etherscan.io/address/0xEC2412368be The entire reason why this is done is most importantly the IPFS deployment, which is expected to be the fully censorship resistant, decentralized frontend which should survive in worst case scenarios. In the combination with the former system, the IPFS deployment should not run into relayer sybil issues. -The fee mechanism functions by relayers locking a listing amount (currently `2000 TORN`). 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 in the user vault contract (through Governance). Relayers must keep a locked balance greater than the minimum balance (`500 TORN` currently) to be marked as an active relayer and be recommended on the frontend. +The fee mechanism functions by relayers locking a listing amount (currently `2000 TORN`). Everytime a withdrawal is processed the registry fee (currently `0.3%` of the relayer's arbitrary fee) is deducted from their locked balance. This fee is then distributed proportionally to TORN holders staked in the [Governance vault contract](https://etherscan.io/address/0x2f50508a8a3d323b91336fa3ea6ae50e55f32185) (through Governance). Relayers must keep a locked balance greater than the minimum balance (`500 TORN` currently) to be marked as an active relayer and be recommended on the frontend. The listing amount, registry fee and minimum balance are all configurable by Governance. -### How to lock? +### How to stake? First, [connect your wallet to Tornado Cash](../../tornado-cash-classic/how-to-connect-your-wallet.md). @@ -25,13 +25,13 @@ As mentioned above, the process to lock TORN tokens has remained unchanged. * 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) +![](../../.gitbook/assets/how-to-lock(stake).png) -### How to claim your locking reward? +### How to claim your staking reward? 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) +![](../../.gitbook/assets/stake-info-page-header.png) * Click **`Manage`** -> **`Claim`** tab -> **`Claim`** _button._