index.jsx 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import React, { useState } from 'react';
  2. import Header from '../components/Header';
  3. import Footer from '../components/Footer';
  4. import AddressSearchBar from '../components/AddressSearchBar';
  5. import ChooseTornadoPool from '../components/ChooseTornadoPool';
  6. export default function IndexPage() {
  7. const [inputAddress, setInputAddress] = useState('');
  8. const onAddressSubmit = (addr) => {
  9. window.location.href = "/cluster?address=" + addr;
  10. }
  11. return (
  12. <div className="container">
  13. <div className="row">
  14. <Header />
  15. <div className="full-page main col-12">
  16. <div className="row">
  17. <h1 className="col-12">assess your anonymity.</h1>
  18. </div>
  19. <div className="justify-center row">
  20. <AddressSearchBar onSubmit={onAddressSubmit} inputAddress={inputAddress} setInputAddress={setInputAddress} />
  21. </div>
  22. <div className="row instruct">
  23. <div className="col-8 text-center " id="instructions" >Enter an ethereum address or ENS name to see likely connected ethereum addresses (ie. its cluster)
  24. based on public data on previous transactions. </div>
  25. </div>
  26. <div className="row instruct instructions">
  27. <div className="col-12">
  28. -- or --
  29. </div>
  30. <div className="col-12">
  31. Use the Tornado Cash Pool Anonymity Auditor
  32. </div>
  33. </div>
  34. <div className="row justify-center">
  35. <ChooseTornadoPool />
  36. </div>
  37. </div>
  38. <div className="full-page col-12" id="about">
  39. <h3 className="left-section-header">
  40. about
  41. </h3>
  42. <div className="section-desc">
  43. Every transaction you make on the blockchain reveals more about your personal data. For individuals who care
  44. to protect their privacy, they must be mindful of what transactions they make and how they make them.
  45. </div>
  46. <div className="section-desc ">
  47. <strong>Tutela is Latin for Protection. We named this application Tutela because it
  48. aims to
  49. help Ethereum and Tornado Cash users protect their privacy, and understand how much they have revealed
  50. about themselves through their blockchain activity.</strong>
  51. </div>
  52. <div className="section-desc">
  53. We use data science and Ethereum and Tornado Cash reveals to <strong>probablistically estimate which Ethereum
  54. addresses are affiliated with single entities and which Tornado Cash deposits may be compromised.</strong>
  55. </div>
  56. <div className="section-desc">
  57. We built this application as part of a <a
  58. href="https://torn.community/t/funded-bounty-anonymity-research-tools/1437">Tornado Cash Grant</a>.
  59. We respect your privacy and so do not save search results.
  60. </div>
  61. </div>
  62. <div className="full-page col-12" id="reveals">
  63. <h3 className="right-section-header">
  64. reveals and heuristics
  65. </h3>
  66. <div className="right section-desc">
  67. There are lots of reveals that you can commit on the blockchain that can link your various Ethereum wallets.
  68. We outline some of the key reveals below.
  69. </div>
  70. <br />
  71. <div className="subsect">
  72. <h4>ethereum heuristics</h4>
  73. <div className="row center-blocks">
  74. <div className="col-sm-12 col-md-6">
  75. <div className="block-title">
  76. Deposit Address Reuse
  77. </div>
  78. <div className="block-text">
  79. When you send tokens to your account at a centralized exchange, the exchange creates a unique
  80. deposit addresses for each customer. If you send tokens from multiple ethereum wallets, they
  81. will likely send to the same deposit address, linking your two wallets.
  82. </div>
  83. </div>
  84. <div className="col-sm-12 col-md-6">
  85. <div className="block-title">
  86. Diff2Vec Machine Learning
  87. </div>
  88. <div className="block-text">
  89. Diff2Vec is a machine learning algorithm. Applying it to Ethereum transactions allows the
  90. clustering of potentially related addresses.
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. <br />
  96. <br />
  97. <div className="subsect">
  98. <h4>tornado cash heuristics</h4>
  99. <div className="row center-blocks">
  100. <div className="col-sm-12 col-md-6 col-lg-4">
  101. <div className="block-title">
  102. Address Match Reveal
  103. </div>
  104. <div className="block-text">
  105. Suppose the address making a deposit transaction to a Tornado Cash pool matches
  106. the address making a withdrawal transaction (from the same pool). In that case,
  107. the two transactions can be linked, and the corresponding deposit may be compromised
  108. as the user identity may be revealed. These may be TORN yield farmers who deposit and withdraw to the same address.
  109. </div>
  110. </div>
  111. <div className="col-sm-12 col-md-6 col-lg-4">
  112. <div className="block-title">
  113. Unique Gas Price Reveal
  114. </div>
  115. <div className="block-text">
  116. Prior to EIP-1559, Ethereum users could specify the gas price when making a
  117. deposit or withdrawal to a Tornado Cash pool. Those who do so tend to specify
  118. gas prices that are identical for deposit and withdrawal transactions, linking the
  119. wallets that made the deposit and withdrawal transactions.
  120. </div>
  121. </div>
  122. <div className="col-sm-12 col-md-6 col-lg-4">
  123. <div className="block-title">
  124. Multi-Denomination Reveal
  125. </div>
  126. <div className="block-text">
  127. If your “source” wallet mixes a specific set of denominations and your “destination” wallet
  128. withdraws them all (example: if you mix 3x 10 ETH, 2x 1 ETH, 1x 0.1 ETH in order to get 32.1 ETH
  129. to begin staking on the beacon chain), then you could reveal yourself within the Tornado
  130. protocol
  131. if no other wallet has mixed this exact denomination set.
  132. </div>
  133. </div>
  134. <div className="col-sm-12 col-md-6 col-lg-4">
  135. <div className="block-title">
  136. Linked Address Reveal
  137. </div>
  138. <div className="block-text">
  139. Suppose two addresses deposit and withdraw to the same Tornado Cash Pool. If these addresses
  140. interact outside of the Tornado Protocol, then they may be linked and their deposits compromised.
  141. </div>
  142. </div>
  143. <div className="col-sm-12 col-md-6 col-lg-4">
  144. <div className="block-title">
  145. TORN Mining
  146. Reveal
  147. </div>
  148. <div className="block-text">
  149. If you liquidity mine anonymity points (AP) and claim them all for TORN in a single tx with
  150. either the “source” or “destination” wallet, you will reveal exactly how long you mixed your
  151. tokens. This will perfectly connect the two addresses.
  152. </div>
  153. </div>
  154. </div>
  155. </div>
  156. <Footer />
  157. </div>
  158. </div>
  159. </div>
  160. );
  161. }