c9ede6c9 (main)
and
1dc85108 (PR)
[ADDED]
privacy-pools
+619 -0
+1 -0
"privacy-pools"
+1 -0
"privacy-pools"
+1 -0
"Privacy Pools"
+1 -0
null
+1 -0
0
+3 -0
{
"unverifiedContracts": []
}
+22 -0
{
"badges": [
{
"id": "Compliance",
"type": "Privacy",
"name": "Compliance",
"description": "This project introduces compliance-related features",
"action": {
"type": "scalingFilter",
"id": "other",
"value": "Compliance"
}
}
],
"description": "A selective-disclosure privacy system for Ethereum that adds compliance-aware association sets.",
"detailedDescription": "Privacy Pools is a non-custodial privacy protocol on Ethereum built around asset-specific pools and private withdrawals, adding compliance by whitelisting all legitimate deposits. A deposit creates a commitment, which is represented by secret and nullifier, and a later withdrawal uses a zero-knowledge proof to spend that commitment, either partially or in full, without revealing the matching deposit. Losing the secret and the nullifier would effectively mean losing deposited tokens. \n\nPrivacy Pools are controlled by a 2/4 multisig, which has authority to stop deposits and manage the deposit whitelist, but users always have an option to publicly withdraw deposited tokens.\n\n### Privacy considerations\n\nPrivacy Pools protocol supports [relayed withdrawals](https://etherscan.io/address/0x15e355024de1cdc74addea7ebdf98418ba5b1a2c#code#F1#L133), in which relayer processes withdrawals on user’s behalf for a fee, which enables sending funds to fresh addresses.\n\nPractical privacy also depends on the timing and amounts of deposits and withdrawals, underlying network and browser used to interact with Privacy Pools frontend (if used), RPC providers used to send transactions and query public blockchain state. Users are advised to research the best OPSEC practices.\n\n### Compliance\n\nThe main feature of Privacy Pools is compliance, which is enforced through the ASP. Association set is a whitelist of deposits that are allowed to be withdrawn from the protocol. This set is managed in real time by the provider, which is currently a single entity. The full association set is published via IPFS, only its Merkle root is posted onchain. User's deposit could be excluded from the whitelist at any moment, in this case user can ragequit, i.e. publicly withdraw deposited funds. \n\nASP is designed to guarantee that withdrawals from Privacy Pools are not related to any known illegal activity.\n\n### Anonymity set\n\nUser's anonymity set consists of all whitelisted deposits of the same token with the value greater than the withdrawal amount. Note that only deposits approved by the ASP contribute privacy. To maximize the anonymity set, users are advised to withdraw smaller amounts from the privacy pools and deposit popular tokens.\n",
"links": {
"websites": [
"https://www.privacypools.com"
]
}
}
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+197 -0
{
"assets": [
{
"asset": {
"symbol": "ETH"
},
"buckets": [
{
"id": "privacy-pools-ETH-0xF241d57C6DebAe225c0F2e6eA1529373C9A9C9fB",
"type": "pool",
"label": "ETH",
"address": "eth:0xF241d57C6DebAe225c0F2e6eA1529373C9A9C9fB",
"totalValue": {
"type": "nativeBalance",
"chain": "ethereum",
"holder": "eth:0xF241d57C6DebAe225c0F2e6eA1529373C9A9C9fB"
},
"flows": {
"sinceBlock": 22153714,
"deposit": {
"chain": "ethereum",
"event": "0xe3b53cd1a44fbf11535e145d80b8ef1ed6d57a73bf5daa7e939b6b01657d6549",
"address": "eth:0xF241d57C6DebAe225c0F2e6eA1529373C9A9C9fB",
"extractor": "privacyPoolsValue",
"params": {}
},
"withdrawal": {
"chain": "ethereum",
"event": "0x75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21",
"address": "eth:0xF241d57C6DebAe225c0F2e6eA1529373C9A9C9fB",
"extractor": "privacyPoolsValue",
"params": {}
}
}
}
]
},
{
"asset": {
"address": "0x085780639CC2cACd35E474e71f4d000e2405d8f6",
"symbol": "fxUSD"
},
"buckets": [
{
"id": "privacy-pools-fxUSD-0xD14F4B36E1D1D98c218db782c49149876042BC56",
"type": "pool",
"label": "fxUSD",
"address": "eth:0xD14F4B36E1D1D98c218db782c49149876042BC56",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x085780639CC2cACd35E474e71f4d000e2405d8f6",
"holder": "eth:0xD14F4B36E1D1D98c218db782c49149876042BC56"
},
"flows": {
"sinceBlock": 23988640,
"deposit": {
"chain": "ethereum",
"event": "0xe3b53cd1a44fbf11535e145d80b8ef1ed6d57a73bf5daa7e939b6b01657d6549",
"address": "eth:0xD14F4B36E1D1D98c218db782c49149876042BC56",
"extractor": "privacyPoolsValue",
"params": {}
},
"withdrawal": {
"chain": "ethereum",
"event": "0x75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21",
"address": "eth:0xD14F4B36E1D1D98c218db782c49149876042BC56",
"extractor": "privacyPoolsValue",
"params": {}
}
}
}
]
},
{
"asset": {
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"symbol": "USDC"
},
"buckets": [
{
"id": "privacy-pools-USDC-0xb419c2867aB3CBc78921660cB95150d95A94ce86",
"type": "pool",
"label": "USDC",
"address": "eth:0xb419c2867aB3CBc78921660cB95150d95A94ce86",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"holder": "eth:0xb419c2867aB3CBc78921660cB95150d95A94ce86"
},
"flows": {
"sinceBlock": 22988431,
"deposit": {
"chain": "ethereum",
"event": "0xe3b53cd1a44fbf11535e145d80b8ef1ed6d57a73bf5daa7e939b6b01657d6549",
"address": "eth:0xb419c2867aB3CBc78921660cB95150d95A94ce86",
"extractor": "privacyPoolsValue",
"params": {}
},
"withdrawal": {
"chain": "ethereum",
"event": "0x75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21",
"address": "eth:0xb419c2867aB3CBc78921660cB95150d95A94ce86",
"extractor": "privacyPoolsValue",
"params": {}
}
}
}
]
},
{
"asset": {
"address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"symbol": "USDT"
},
"buckets": [
{
"id": "privacy-pools-USDT-0xe859C0bD25f260BaEE534Fb52e307D3b64D24572",
"type": "pool",
"label": "USDT",
"address": "eth:0xe859C0bD25f260BaEE534Fb52e307D3b64D24572",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0xdAC17F958D2ee523a2206206994597C13D831ec7",
"holder": "eth:0xe859C0bD25f260BaEE534Fb52e307D3b64D24572"
},
"flows": {
"sinceBlock": 22988421,
"deposit": {
"chain": "ethereum",
"event": "0xe3b53cd1a44fbf11535e145d80b8ef1ed6d57a73bf5daa7e939b6b01657d6549",
"address": "eth:0xe859C0bD25f260BaEE534Fb52e307D3b64D24572",
"extractor": "privacyPoolsValue",
"params": {}
},
"withdrawal": {
"chain": "ethereum",
"event": "0x75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21",
"address": "eth:0xe859C0bD25f260BaEE534Fb52e307D3b64D24572",
"extractor": "privacyPoolsValue",
"params": {}
}
}
}
]
},
{
"asset": {
"address": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0",
"symbol": "wstETH"
},
"buckets": [
{
"id": "privacy-pools-wstETH-0x1A604E9DFa0EFDC7FFda378AF16Cb81243b61633",
"type": "pool",
"label": "wstETH",
"address": "eth:0x1A604E9DFa0EFDC7FFda378AF16Cb81243b61633",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0",
"holder": "eth:0x1A604E9DFa0EFDC7FFda378AF16Cb81243b61633"
},
"flows": {
"sinceBlock": 23039970,
"deposit": {
"chain": "ethereum",
"event": "0xe3b53cd1a44fbf11535e145d80b8ef1ed6d57a73bf5daa7e939b6b01657d6549",
"address": "eth:0x1A604E9DFa0EFDC7FFda378AF16Cb81243b61633",
"extractor": "privacyPoolsValue",
"params": {}
},
"withdrawal": {
"chain": "ethereum",
"event": "0x75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21",
"address": "eth:0x1A604E9DFa0EFDC7FFda378AF16Cb81243b61633",
"extractor": "privacyPoolsValue",
"params": {}
}
}
}
]
}
],
"riskSummary": "## Funds can be lost if\n1. the zk proof system is broken, allowing invalid withdrawals.\n2. the [trusted setup](#trusted-setups) is compromised or all ceremony participants collude, allowing invalid withdrawals.\n3. a user loses the secret and nullifier required to spend their deposit.\n4. the Entrypoint owner deploys a malicious [upgrade](#upgrades-and-governance) that steals new deposits.\n
\n## Privacy can be lost if\n1. no relayer is available and the withdrawal must be submitted from an address that can be linked to the user.\n2. the ASP manager refuses to whitelist a deposit, forcing the user to either wait or exit publicly through ragequit.",
"trustedSetup": {
"id": "PrivacyPools",
"name": "Privacy Pools",
"risk": "green",
"participantCount": 513,
"shortDescription": "Trusted setup for two Groth16 Privacy Pools circuits, with 514 and 513 participants.",
"longDescription": "\n Trusted setup for two Groth16 Privacy Pools circuits: the Exit circuit and the Private Withdrawal circuit.\n The ceremony was publicly announced, open to anonymous and identified participants, and concluded in March 2025.\n The finalized zKeys were published for independent verification, and the ceremony code and UI were open-sourced.\n\n - Ceremony completion announcement: [https://0xbow.io/blog/celebrating-the-conclusion-of-the-trusted-setup-ceremony](https://0xbow.io/blog/celebrating-the-conclusion-of-the-trusted-setup-ceremony)\n - Ceremony page with finalized zKeys: [https://ceremony.pse.dev/projects/Privacy%20Pools%20Ceremony](https://ceremony.pse.dev/projects/Privacy%20Pools%20Ceremony)\n - Initial ceremony announcement: [https://0xbow.io/blog/privacy-pools-trusted-setup-ceremony-join-us-in-strengthening-privacy](https://0xbow.io/blog/privacy-pools-trusted-setup-ceremony-join-us-in-strengthening-privacy)\n - Privacy Pools repository: [https://github.com/0xbow-io/privacy-pools-core](https://github.com/0xbow-io/privacy-pools-core)\n "
},
"upgradesAndGovernance": "Privacy pools Entrypoint contract is owned by a 2/4 Multisig ([0xAd7f9A19E2598b6eFE0A25C84FB1c87F81eB7159](https://etherscan.io/address/0xAd7f9A19E2598b6eFE0A25C84FB1c87F81eB7159)). \n \n It is a powerful role that has the authority to upgrade the Entrypoint contract, through which all deposits go. It can also manage minimum deposit amount, deposit fee, disable deposits on pools and manage ASP postman address that manages whitelisted privacy pools deposits.\n \n Entrypoint owner cannot prevent private or public withdrawals from the pools."
}
+70 -0
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "Safe",
"name": "Safe",
"description": "A Multisig with 2/4 threshold. \n* Can interact with Entrypoint\n * control the whitelisted deposit/withdrawal list (update the association set) \n * register new pools or wind down (disable deposits) existing ones \n * upgrade the system ",
"accounts": [
{
"address": "eth:0xAd7f9A19E2598b6eFE0A25C84FB1c87F81eB7159",
"type": "Contract",
"isVerified": true,
"name": "0xAd7f…7159",
"url": "https://etherscan.io/address/0xAd7f9A19E2598b6eFE0A25C84FB1c87F81eB7159"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xd76eEb2A6fcf55dc80D046FFbc96D1A2B45AB52E",
"type": "EOA",
"isVerified": true,
"name": "0xd76e…B52E",
"url": "https://etherscan.io/address/0xd76eEb2A6fcf55dc80D046FFbc96D1A2B45AB52E"
},
{
"address": "eth:0xb1A1D5b0f3d4E8e89E55daBFEb0B96118cbc16fc",
"type": "EOA",
"isVerified": true,
"name": "0xb1A1…16fc",
"url": "https://etherscan.io/address/0xb1A1D5b0f3d4E8e89E55daBFEb0B96118cbc16fc"
},
{
"address": "eth:0x554c5aF96E9e3c05AEC01ce18221d0DD25975aB4",
"type": "EOA",
"isVerified": true,
"name": "0x554c…5aB4",
"url": "https://etherscan.io/address/0x554c5aF96E9e3c05AEC01ce18221d0DD25975aB4"
},
{
"address": "eth:0x42FEdcd80C8C9694DBc3b2ff0fD48BB8651dfC62",
"type": "EOA",
"isVerified": true,
"name": "0x42FE…fC62",
"url": "https://etherscan.io/address/0x42FEdcd80C8C9694DBc3b2ff0fD48BB8651dfC62"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x1f4Fe25Cf802a0605229e0Dc497aAf653E86E187",
"type": "EOA",
"isVerified": true,
"name": "0x1f4F…E187",
"url": "https://etherscan.io/address/0x1f4Fe25Cf802a0605229e0Dc497aAf653E86E187"
}
],
"chain": "ethereum",
"description": "* Can interact with Entrypoint\n * control the whitelisted deposit/withdrawal list (update the association set) ",
"discoveryDrivenData": true
}
]
}
}
+281 -0
{
"addresses": {
"ethereum": [
{
"name": "WithdrawalVerifier",
"isVerified": true,
"address": "eth:0x022891F938Ae7fDC8Ab9Ead0FBf50aBA8C897D6d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x022891F938Ae7fDC8Ab9Ead0FBf50aBA8C897D6d#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0x05e4DBD71B56861eeD2Aaa12d00A797F04B5D3c0",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x05e4DBD71B56861eeD2Aaa12d00A797F04B5D3c0#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0x1A604E9DFa0EFDC7FFda378AF16Cb81243b61633",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1A604E9DFa0EFDC7FFda378AF16Cb81243b61633#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0x1c31C03B8CB2EE674D0F11De77135536db828257",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1c31C03B8CB2EE674D0F11De77135536db828257#code"
},
{
"name": "Entrypoint",
"isVerified": true,
"address": "eth:0x6818809EefCe719E480a7526D76bD3e561526b46",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x15e355024de1CDc74ADdea7EBDf98418Ba5B1a2c"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1743265247,
"transactionHash": "0x4987385c58c49c9e3117244180094c5b7c5a0566c8547d13880df5e19076776c",
"implementations": [
"eth:0xdD8aA0560a08E39C0b3A84BBa356Bc025AfbD4C1"
]
},
{
"timestamp": 1747945823,
"transactionHash": "0xde1c41f546e3b6064433e0db1309d8ca5a3ac78a8fc626f934b13d05ee67578f",
"implementations": [
"eth:0x15e355024de1CDc74ADdea7EBDf98418Ba5B1a2c"
]
}
],
"description": "* Roles:\n * **aspPostman**: EOA 1, Safe\n * **ownerRole**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6818809EefCe719E480a7526D76bD3e561526b46#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0x7d2959bCFb936a84531518e8391DdBa844e03ebE",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7d2959bCFb936a84531518e8391DdBa844e03ebE#code"
},
{
"name": "CommitmentVerifier",
"isVerified": true,
"address": "eth:0xa45ACa8604a73D80C551fAad6355A5c3A5565eC6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa45ACa8604a73D80C551fAad6355A5c3A5565eC6#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0xb419c2867aB3CBc78921660cB95150d95A94ce86",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb419c2867aB3CBc78921660cB95150d95A94ce86#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0xb4b5Fd38Fd4788071d7287e3cB52948e0d10b23E",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb4b5Fd38Fd4788071d7287e3cB52948e0d10b23E#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0xBBdA2173CDFEA1c3bD7F2908798F1265301d750c",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xBBdA2173CDFEA1c3bD7F2908798F1265301d750c#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0xc0A8Bc0F4F982b4d4f1fFae8F4FCCb58c9B29c98",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc0A8Bc0F4F982b4d4f1fFae8F4FCCb58c9B29c98#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0xC6C769fac7AABEadd31a03fAe5Ca0Ec5B4C50f84",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC6C769fac7AABEadd31a03fAe5Ca0Ec5B4C50f84#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0xD14F4B36E1D1D98c218db782c49149876042BC56",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD14F4B36E1D1D98c218db782c49149876042BC56#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0xe6D36B33b00A7C0cB0C2a8d39D07e7dB0c526Abc",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe6D36B33b00A7C0cB0C2a8d39D07e7dB0c526Abc#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0xe859C0bD25f260BaEE534Fb52e307D3b64D24572",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe859C0bD25f260BaEE534Fb52e307D3b64D24572#code"
},
{
"name": "PrivacyPoolSimple",
"isVerified": true,
"address": "eth:0xF241d57C6DebAe225c0F2e6eA1529373C9A9C9fB",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF241d57C6DebAe225c0F2e6eA1529373C9A9C9fB#code"
},
{
"name": "PrivacyPoolComplex",
"isVerified": true,
"address": "eth:0xF973f4B180A568157Cd7A0E6006449139E6Bfc32",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF973f4B180A568157Cd7A0E6006449139E6Bfc32#code"
}
]
},
"risks": []
}
+7 -0
{
"baseTimestamp": 1775744016,
"contractsDiscoDriven": false,
"hasDiscoUi": false,
"isDiscoDriven": false,
"permissionsDiscoDriven": false
}
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
[ADDED]
railgun
+715 -0
+1 -0
"railgun"
+1 -0
"railgun"
+1 -0
"Railgun"
+1 -0
null
+1 -0
0
+3 -0
{
"unverifiedContracts": []
}
+55 -0
{
"badges": [
{
"id": "Compliance",
"type": "Privacy",
"name": "Compliance",
"description": "This project introduces compliance-related features",
"action": {
"type": "scalingFilter",
"id": "other",
"value": "Compliance"
}
},
{
"id": "PrivateTransfers",
"type": "Privacy",
"name": "Private Transfers",
"description": "This project allows in-protocol transfers of deposited private tokens",
"action": {
"type": "scalingFilter",
"id": "other",
"value": "Private Transfers"
}
},
{
"id": "SmartContractInteractions",
"type": "Privacy",
"name": "Smart Contract Interactions",
"description": "This project supports interactions between deposited private tokens and public smart contracts",
"action": {
"type": "scalingFilter",
"id": "other",
"value": "Smart Contract Interactions"
}
},
{
"id": "Governance",
"type": "Other",
"name": "Governance",
"description": "This project features token voting",
"action": {
"type": "scalingFilter",
"id": "other",
"value": "Governance"
}
}
],
"description": "An onchain privacy system for Ethereum based on encrypted UTXO-style private balances and zk-proven DeFi interactions.",
"detailedDescription": "Railgun is a non-custodial privacy protocol on Ethereum built around encrypted UTXO-style private balances rather than fixed-denomination pools. This design enables interactions, like transfers of shielded tokens and interactions with DeFi smart contracts.\n\nA shield transaction moves assets from a public address into the Railgun contract and creates encrypted commitments in a Merkle-tree state. Later private transfers or unshields use zk-SNARK proofs to spend those commitments without revealing the sender, recipient, token type, or amount. Notes created by deposits and private transactions represents ownership of tokens in Railgun, users must keep them secret and make sure the notes are not lost.\n\nRailgun supports private transfers and cross-contract interactions without fragmenting liquidity across denominations. External DeFi calls are executed through the Relay Adapt flow, which temporarily unshields tokens into an adapter contract, performs a sequence of contract calls, and shields the resulting assets back into a private balance in a single transaction.\n\nRailgun has a DAO governed by holders of RAIL token. DAO has authority to arbitrarily change the logic for shielded tokens.\n\n### Privacy considerations\n\nRailgun protocol supports [relayed withdrawals](https://docs.railgun.org/developer-guide/wallet/transactions/unshielding), in which relayer processes withdrawals on user’s behalf for a fee, which enables sending funds to fresh addresses. Transactions from private addresses can be sent through broadcasters over [Waku network](https://blog.waku.org/2024-04-26-railgun-case-study/), which increases network-level privacy. Railgun allows interactions between shielded tokens and DeFi, which allows depositing and withdrawing different tokens.\n\nPractical privacy also depends on the timing and amounts of deposits and withdrawals, as well as RPC providers used to send transactions and query public blockchain state. Users are advised to research the best OPSEC practices. \n\n### Compliance\n\nRailgun protocol does not enforce any compliance measures. However it allows using [Private Proof of Innocence](https://docs.railgun.org/wiki/assurance/private-proofs-of-innocence), which can attest to the origin and history of shielded tokens. Practically, broadcasters and some wallets only process transactions with valid PPoI.\n\nAdditionally, Railgun users can share a read-only viewing key to expose all sent and received private transactions, if required by a regulator or enforcer. \n\n### Anonymity set\n\nBecause Railgun allows private transfers and interactions with DeFi, anonymity set is not well defined. A withdrawal from Railgun could be connected with a deposit of another token, or could even not correspond to any deposit if a user received a private transfer from another user. The anonymity set roughly corresponds to the set of all Railgun users.\n",
"links": {
"websites": [
"https://railgun.org"
]
}
}
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+342 -0
{
"assets": [
{
"asset": {
"address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
"symbol": "DAI"
},
"buckets": [
{
"id": "railgun-DAI",
"type": "pool",
"label": "DAI",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x6B175474E89094C44Da98b954EedeAC495271d0F",
"holder": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9"
},
"flows": {
"sinceBlock": 14693013,
"deposit": {
"chain": "ethereum",
"event": "0x3a5b9dc26075a3801a6ddccf95fec485bb7500a91b44cec1add984c21ee6db3b",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunShield",
"params": {
"tokenAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xd93cf895c7d5b2cd7dc7a098b678b3089f37d91f48d9b83a0800a91cbdf05284",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunUnshield",
"params": {
"tokenAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F"
}
}
}
}
]
},
{
"asset": {
"address": "0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb",
"symbol": "FLUID"
},
"buckets": [
{
"id": "railgun-FLUID",
"type": "pool",
"label": "FLUID",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb",
"holder": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9"
},
"flows": {
"sinceBlock": 14693013,
"deposit": {
"chain": "ethereum",
"event": "0x3a5b9dc26075a3801a6ddccf95fec485bb7500a91b44cec1add984c21ee6db3b",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunShield",
"params": {
"tokenAddress": "0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xd93cf895c7d5b2cd7dc7a098b678b3089f37d91f48d9b83a0800a91cbdf05284",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunUnshield",
"params": {
"tokenAddress": "0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb"
}
}
}
}
]
},
{
"asset": {
"address": "0x85F17Cf997934a597031b2E18a9aB6ebD4B9f6a4",
"symbol": "NEAR"
},
"buckets": [
{
"id": "railgun-NEAR",
"type": "pool",
"label": "NEAR",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x85F17Cf997934a597031b2E18a9aB6ebD4B9f6a4",
"holder": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9"
},
"flows": {
"sinceBlock": 14693013,
"deposit": {
"chain": "ethereum",
"event": "0x3a5b9dc26075a3801a6ddccf95fec485bb7500a91b44cec1add984c21ee6db3b",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunShield",
"params": {
"tokenAddress": "0x85F17Cf997934a597031b2E18a9aB6ebD4B9f6a4"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xd93cf895c7d5b2cd7dc7a098b678b3089f37d91f48d9b83a0800a91cbdf05284",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunUnshield",
"params": {
"tokenAddress": "0x85F17Cf997934a597031b2E18a9aB6ebD4B9f6a4"
}
}
}
}
]
},
{
"asset": {
"address": "0xE76c6C83BC8D0c0c2cc3c6d1E7C6F21673A7A33d",
"symbol": "RAIL"
},
"buckets": [
{
"id": "railgun-RAIL",
"type": "pool",
"label": "RAIL",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0xE76c6C83BC8D0c0c2cc3c6d1E7C6F21673A7A33d",
"holder": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9"
},
"flows": {
"sinceBlock": 14693013,
"deposit": {
"chain": "ethereum",
"event": "0x3a5b9dc26075a3801a6ddccf95fec485bb7500a91b44cec1add984c21ee6db3b",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunShield",
"params": {
"tokenAddress": "0xE76c6C83BC8D0c0c2cc3c6d1E7C6F21673A7A33d"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xd93cf895c7d5b2cd7dc7a098b678b3089f37d91f48d9b83a0800a91cbdf05284",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunUnshield",
"params": {
"tokenAddress": "0xE76c6C83BC8D0c0c2cc3c6d1E7C6F21673A7A33d"
}
}
}
}
]
},
{
"asset": {
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"symbol": "USDC"
},
"buckets": [
{
"id": "railgun-USDC",
"type": "pool",
"label": "USDC",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"holder": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9"
},
"flows": {
"sinceBlock": 14693013,
"deposit": {
"chain": "ethereum",
"event": "0x3a5b9dc26075a3801a6ddccf95fec485bb7500a91b44cec1add984c21ee6db3b",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunShield",
"params": {
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xd93cf895c7d5b2cd7dc7a098b678b3089f37d91f48d9b83a0800a91cbdf05284",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunUnshield",
"params": {
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
}
}
}
}
]
},
{
"asset": {
"address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"symbol": "USDT"
},
"buckets": [
{
"id": "railgun-USDT",
"type": "pool",
"label": "USDT",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0xdAC17F958D2ee523a2206206994597C13D831ec7",
"holder": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9"
},
"flows": {
"sinceBlock": 14693013,
"deposit": {
"chain": "ethereum",
"event": "0x3a5b9dc26075a3801a6ddccf95fec485bb7500a91b44cec1add984c21ee6db3b",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunShield",
"params": {
"tokenAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xd93cf895c7d5b2cd7dc7a098b678b3089f37d91f48d9b83a0800a91cbdf05284",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunUnshield",
"params": {
"tokenAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
}
}
}
}
]
},
{
"asset": {
"address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
"symbol": "WBTC"
},
"buckets": [
{
"id": "railgun-WBTC",
"type": "pool",
"label": "WBTC",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
"holder": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9"
},
"flows": {
"sinceBlock": 14693013,
"deposit": {
"chain": "ethereum",
"event": "0x3a5b9dc26075a3801a6ddccf95fec485bb7500a91b44cec1add984c21ee6db3b",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunShield",
"params": {
"tokenAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xd93cf895c7d5b2cd7dc7a098b678b3089f37d91f48d9b83a0800a91cbdf05284",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunUnshield",
"params": {
"tokenAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"
}
}
}
}
]
},
{
"asset": {
"address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"symbol": "WETH"
},
"buckets": [
{
"id": "railgun-WETH",
"type": "pool",
"label": "WETH",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"holder": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9"
},
"flows": {
"sinceBlock": 14693013,
"deposit": {
"chain": "ethereum",
"event": "0x3a5b9dc26075a3801a6ddccf95fec485bb7500a91b44cec1add984c21ee6db3b",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunShield",
"params": {
"tokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xd93cf895c7d5b2cd7dc7a098b678b3089f37d91f48d9b83a0800a91cbdf05284",
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"extractor": "railgunUnshield",
"params": {
"tokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
}
}
}
}
]
}
],
"riskSummary": "## Funds can be lost if\n1. the zk proof system is broken, allowing invalid spends or withdrawals.\n2. the [trusted setup](#trusted-setups) is compromised or all ceremony participants collude, allowing invalid spends or withdrawals.\n3. a user loses the private keys required to control their private balance.\n4. the DAO passes a malicious [upgrade](#upgrades-and-governance) and users do not react before the 7-day execution delay expires.\n
\n## Privacy can be lost if\n1. no broadcaster is available and transactions must be sent from a public address that can be linked to the user.",
"trustedSetup": {
"id": "Railgun",
"name": "Railgun",
"risk": "green",
"participantCount": 304,
"shortDescription": "Circuit-specific trusted setup for 54 Groth16 Railgun circuits over BN254, publicly announced and completed in December 2022 with 328 named contributors (304 contributions on the 1x1 circuit).",
"longDescription": "\n Circuit-specific Phase 2 trusted setup for Railgun's 54 Groth16 circuits (parameterised by\n transaction input/output counts) over the BN254 curve. It builds on the\n [Perpetual Powers of Tau ceremony](https://github.com/privacy-scaling-explorations/perpetualpowersoftau)\n as Phase 1 and was run as a separate Phase 2 per circuit. The ceremony was publicly announced,\n open to anonymous and identified participants, and wrapped up in late December 2022.\n\n Verified against the ceremony artifact IPFS hash\n `QmWAySHYhaZqioKi1ufrPJC1n1ZVtHP2w4hLA9XqqJCFne`: the\n `/contributors` directory contains 328 sequentially-numbered attestation files with\n GitHub or Twitter handles, and the `/zkeys` directory contains 54 final zkey files (one\n per circuit). Parsing the final zkey binary for the 1x1 circuit shows 304 Phase 2\n contributions on that circuit.\n\n - Ceremony artifacts on IPFS: [https://ipfs.io/ipfs/QmWAySHYhaZqioKi1ufrPJC1n1ZVtHP2w4hLA9XqqJCFne](https://ipfs.io/ipfs/QmWAySHYhaZqioKi1ufrPJC1n1ZVtHP2w4hLA9XqqJCFne)\n - Ceremony announcement: [https://medium.com/@Railgun_Project/railgun-project-begins-setup-ceremony-with-an-emphasis-on-security-d1c63117c312](https://medium.com/@Railgun_Project/railgun-project-begins-setup-ceremony-with-an-emphasis-on-security-d1c63117c312)\n - Advanced Circuit ceremony user guide: [https://medium.com/@Railgun_Project/railgun-advanced-circuit-setup-ceremony-user-guide-32361c54242](https://medium.com/@Railgun_Project/railgun-advanced-circuit-setup-ceremony-user-guide-32361c54242)\n - Docs overview of the trusted setup: [https://docs.railgun.org/wiki/learn/privacy-system/trusted-setup-ceremony](https://docs.railgun.org/wiki/learn/privacy-system/trusted-setup-ceremony)\n - Railgun circuits repository with ceremony scripts: [https://github.com/Railgun-Privacy/circuits-v2](https://github.com/Railgun-Privacy/circuits-v2)\n "
},
"upgradesAndGovernance": "Railgun features an omnipotent DAO governed by the stakers of RAIL token. DAO has the authority to change ZK circuit logic on the core Railgun contract, effectively arbitrarily changing the rules for shielded tokens; as well as manage blacklisted tokens, mint RAIL tokens and manage governance rewards. See docs here: \n\n## Governance flow\n\n1. Users stake RAIL token in the Staking contract ([0xEE6A649Aa3766bD117e12C161726b693A1B2Ee20](https://etherscan.io/address/0xEE6A649Aa3766bD117e12C161726b693A1B2Ee20)). Voting power is proportional to the staked amount and could be delegated to another address. Unstaking has 1mo delay.\n2. Anyone can create a new proposal with an IPFS link and onchain calldata on the Voting contract ([0xc480F68A3dcC3EdD82134FAB45C14A0FcF1dA3CC](https://etherscan.io/address/0xc480F68A3dcC3EdD82134FAB45C14A0FcF1dA3CC)). It enters Sponsorship stage of 1mo, where it has to be supported by 500 K RAIL stake.\n3. After a 2d delay, actual vote starts. \"Yay\" votes need to be cast within 5d, \"Nay\" have 6d. Proposal needs to reach the quorum of 2.00 M RAIL.\n4. A passed proposal (simple majority) waits for 7d before execution and then must be executed within 14d by anyone. Execution goes via the Delegator smart contract ([0xB6d513f6222Ee92Fff975E901bd792E2513fB53B](https://etherscan.io/address/0xB6d513f6222Ee92Fff975E901bd792E2513fB53B)), which actually has permissions to modify the Railgun protocol values."
}
+71 -0
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "Delegator",
"name": "Delegator",
"accounts": [
{
"address": "eth:0xB6d513f6222Ee92Fff975E901bd792E2513fB53B",
"type": "Contract",
"isVerified": true,
"name": "0xB6d5…B53B",
"url": "https://etherscan.io/address/0xB6d513f6222Ee92Fff975E901bd792E2513fB53B"
}
],
"chain": "ethereum",
"description": "* Can interact with VKeySetter\n * approve verification key update (i.e. zk circuit logic update) on the key contract \n* Can interact with VKeySetter\n * approve verification key update (i.e. zk circuit logic update) on the key contract \n* Can interact with RailToken\n * mint RAIL tokens up to the cap \n* Can interact with RailgunCore\n * add/remove tokens to/from the blacklist \n * set zk verification key to upgrade the verifier circuit ",
"discoveryDrivenData": true
},
{
"id": "ProxyAdmin",
"name": "ProxyAdmin",
"accounts": [
{
"address": "eth:0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8",
"type": "Contract",
"isVerified": true,
"name": "0x4F8E…65c8",
"url": "https://etherscan.io/address/0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * GovernorRewards \n * Treasury \n * RailgunCore ",
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x76EB574EFF49FB64DE6f7F2854952B05B5E24624",
"type": "EOA",
"isVerified": true,
"name": "0x76EB…4624",
"url": "https://etherscan.io/address/0x76EB574EFF49FB64DE6f7F2854952B05B5E24624"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * Sweeper \n* Can interact with VKeySetter\n * propose verification key update (i.e. zk circuit logic update) on the key contract ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0xbbc2fB58643235AFfBF1f0CDd27Bc6E6CFBBa4e2",
"type": "EOA",
"isVerified": true,
"name": "0xbbc2…a4e2",
"url": "https://etherscan.io/address/0xbbc2fB58643235AFfBF1f0CDd27Bc6E6CFBBa4e2"
}
],
"chain": "ethereum",
"description": "* Can interact with VKeySetter\n * propose verification key update (i.e. zk circuit logic update) on the key contract ",
"discoveryDrivenData": true
}
]
}
}
+198 -0
{
"addresses": {
"ethereum": [
{
"name": "RailgunCore",
"isVerified": true,
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8"
],
"implementations": [
"eth:0xB4F2d77bD12c6b548Ae398244d7FAD4ABCE4D89b"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "* Roles:\n * **admin**: ProxyAdmin\n * **owner**: Delegator",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9#code"
},
{
"name": "Sweeper",
"isVerified": true,
"address": "eth:0x2eCa05b128bF5cbd5A73CC4BB625B51131FF119B",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x76EB574EFF49FB64DE6f7F2854952B05B5E24624"
],
"implementations": [
"eth:0x2ea76A3c4795DD1a5d206B285fD21b2Fb83EAf1a"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "* Roles:\n * **admin**: EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2eCa05b128bF5cbd5A73CC4BB625B51131FF119B#code"
},
{
"name": "VKeySetter",
"isVerified": true,
"address": "eth:0x64DA0892E8E24fECa6Eb5E3D8cbf2D9b6Fbe7598",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **delegator**: Delegator\n * **owner**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x64DA0892E8E24fECa6Eb5E3D8cbf2D9b6Fbe7598#code"
},
{
"name": "VKeySetter",
"isVerified": true,
"address": "eth:0x9086aFC6FC88667d4031Cabd556AfDD0E3903B46",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **delegator**: Delegator\n * **owner**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9086aFC6FC88667d4031Cabd556AfDD0E3903B46#code"
},
{
"name": "GovernorRewards",
"isVerified": true,
"address": "eth:0xA02782CE1bF85f56f8cC7C0E66e61299Ac75c86f",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8"
],
"implementations": [
"eth:0xaF51CD5f71Ed88D6d1F65b575f1a8Ce3a78eC42b"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "* Roles:\n * **admin**: ProxyAdmin",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xA02782CE1bF85f56f8cC7C0E66e61299Ac75c86f#code"
},
{
"name": "Voting",
"isVerified": true,
"address": "eth:0xc480F68A3dcC3EdD82134FAB45C14A0FcF1dA3CC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc480F68A3dcC3EdD82134FAB45C14A0FcF1dA3CC#code"
},
{
"name": "RailToken",
"isVerified": true,
"address": "eth:0xe76C6c83af64e4C60245D8C7dE953DF673a7A33D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Delegator",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe76C6c83af64e4C60245D8C7dE953DF673a7A33D#code"
},
{
"name": "Treasury",
"isVerified": true,
"address": "eth:0xE8A8B458BcD1Ececc6b6b58F80929b29cCecFF40",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8"
],
"implementations": [
"eth:0xA092c7577354EA82a6c7e55B423c3DD80f0dF255"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "* Roles:\n * **admin**: ProxyAdmin",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE8A8B458BcD1Ececc6b6b58F80929b29cCecFF40#code"
},
{
"name": "Getters",
"isVerified": true,
"address": "eth:0xe90275239D734899e8D94646139213F6F97bEB0E",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe90275239D734899e8D94646139213F6F97bEB0E#code"
},
{
"name": "Staking",
"isVerified": true,
"address": "eth:0xEE6A649Aa3766bD117e12C161726b693A1B2Ee20",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEE6A649Aa3766bD117e12C161726b693A1B2Ee20#code"
}
]
},
"risks": []
}
+7 -0
{
"baseTimestamp": 1775744335,
"contractsDiscoDriven": false,
"hasDiscoUi": false,
"isDiscoDriven": false,
"permissionsDiscoDriven": false
}
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
[ADDED]
tornado-cash
+1461 -0
+1 -0
"tornado-cash"
+1 -0
"tornado-cash"
+1 -0
"Tornado Cash"
+1 -0
null
+1 -0
1776211200
+8 -0
{
"unverifiedContracts": [
"eth:0x6234c4C2734D2B246AE074492F402D8f58ff3226",
"eth:0x83584f83f26aF4eDDA9CBe8C730bc87C364b28fe",
"eth:0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd",
"eth:0xD82ed8786D7c69DC7e052F7A542AB047971E73d2"
]
}
+10 -0
{
"badges": [],
"description": "A classic Ethereum mixer design based on fixed-denomination pools and zk withdrawals.",
"detailedDescription": "Tornado Cash is a non-custodial mixer on Ethereum built around separate fixed-denomination pools, which prevents linking deposits and withdrawals via the amount. A deposit publishes a commitment into a Merkle tree producing a secret note, and a later withdrawal uses a zk-SNARK proof and the note to send the same denomination to a different address, breaking the deposit-withdrawal link. The note represents ownership of tokens in a Tornado cash pool, and losing it will effectively mean losing the tokens.\n\nThe core mixer contracts are immutable and have no admin, pause, or upgrade path, so funds can only move out with a valid proof. However Tornado cash features TORN token governance, which controls peripheral smart contracts: official pool registry, relayer registration requirement and TORN tokenomics.\n\n### Privacy considerations\n\nTornado cash introduces a permissionless relayer network, which is essential for practical privacy. Relayers process withdrawals from Tornado cash pools on user's behalf for a fee, which enables withdrawals to fresh addresses without funding them before the withdrawal. Without an active relayer network, practical privacy of Tornado cash deteriorates significantly.\n\nPractical privacy also depends on the timing of deposits and withdrawals, underlying network and browser used to interact with Tornado cash frontend (if used), RPC providers used to send transactions and query public blockchain state. Users are advised to research the best OPSEC practices.\n\n### Compliance\n\nTornado cash does not have any protocol-level compliance features. However, it provides an optional [Compliance Tool](https://docs.tornado.cash/tornado-cash-classic/compliance-tool), which allows users to generate a proof linking a withdrawal to a specific deposit without revealing this information publicly onchain. This enables users to selectively disclose the origin of funds to third parties, such as exchanges or regulators.\n\nProtocol pools were [sanctioned by OFAC in August 2022](https://home.treasury.gov/news/press-releases/jy0916), flagging funds moved through these smart contracts as illicit and forcing Tornado Cash transaction censorship. Sanctions were lifted on March 21, 2025.\n\n### Anonymity set\n\nUser's anonymity set consists of all previous deposits into the same bucket (i.e. deposits of the same token and amount). Deposits could be mixed only with other deposits of the same token and denomination. To maximize the anonymity set, users are advised to deposit into the buckets with most usage.\n",
"links": {
"websites": [
"https://ipfs.io/ipfs/bafybeie5hxovqc4ifcnrnhvmjbefxgeix6oqvzaspyytdxiyscji22v5pu"
]
}
}
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+635 -0
{
"assets": [
{
"asset": {
"address": "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643",
"symbol": "cDAI"
},
"buckets": [
{
"id": "tornado-cDAI-50000",
"type": "denomination",
"label": "cDAI 50000",
"address": "eth:0x03893a7c7463AE47D46bc7f091665f1893656003",
"denomination": "50000",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643",
"holder": "eth:0x03893a7c7463AE47D46bc7f091665f1893656003"
},
"flows": {
"sinceBlock": 12069037,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x03893a7c7463AE47D46bc7f091665f1893656003",
"extractor": "fixedAmount",
"params": {
"amount": "5000000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x03893a7c7463AE47D46bc7f091665f1893656003",
"extractor": "fixedAmount",
"params": {
"amount": "5000000000000"
}
}
}
},
{
"id": "tornado-cDAI-5000000",
"type": "denomination",
"label": "cDAI 5000000",
"address": "eth:0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af",
"denomination": "5000000",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643",
"holder": "eth:0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af"
},
"flows": {
"sinceBlock": 12066053,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af",
"extractor": "fixedAmount",
"params": {
"amount": "500000000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af",
"extractor": "fixedAmount",
"params": {
"amount": "500000000000000"
}
}
}
}
]
},
{
"asset": {
"address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
"symbol": "DAI"
},
"buckets": [
{
"id": "tornado-DAI-100",
"type": "denomination",
"label": "DAI 100",
"address": "eth:0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3",
"denomination": "100",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x6B175474E89094C44Da98b954EedeAC495271d0F",
"holder": "eth:0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3"
},
"flows": {
"sinceBlock": 9117612,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3",
"extractor": "fixedAmount",
"params": {
"amount": "100000000000000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3",
"extractor": "fixedAmount",
"params": {
"amount": "100000000000000000000"
}
}
}
},
{
"id": "tornado-DAI-1000",
"type": "denomination",
"label": "DAI 1000",
"address": "eth:0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144",
"denomination": "1000",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x6B175474E89094C44Da98b954EedeAC495271d0F",
"holder": "eth:0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144"
},
"flows": {
"sinceBlock": 9161917,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144",
"extractor": "fixedAmount",
"params": {
"amount": "1000000000000000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144",
"extractor": "fixedAmount",
"params": {
"amount": "1000000000000000000000"
}
}
}
},
{
"id": "tornado-DAI-10000",
"type": "denomination",
"label": "DAI 10000",
"address": "eth:0x07687e702b410Fa43f4cB4Af7FA097918ffD2730",
"denomination": "10000",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x6B175474E89094C44Da98b954EedeAC495271d0F",
"holder": "eth:0x07687e702b410Fa43f4cB4Af7FA097918ffD2730"
},
"flows": {
"sinceBlock": 12066007,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x07687e702b410Fa43f4cB4Af7FA097918ffD2730",
"extractor": "fixedAmount",
"params": {
"amount": "10000000000000000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x07687e702b410Fa43f4cB4Af7FA097918ffD2730",
"extractor": "fixedAmount",
"params": {
"amount": "10000000000000000000000"
}
}
}
},
{
"id": "tornado-DAI-100000",
"type": "denomination",
"label": "DAI 100000",
"address": "eth:0x23773E65ed146A459791799d01336DB287f25334",
"denomination": "100000",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x6B175474E89094C44Da98b954EedeAC495271d0F",
"holder": "eth:0x23773E65ed146A459791799d01336DB287f25334"
},
"flows": {
"sinceBlock": 12066048,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x23773E65ed146A459791799d01336DB287f25334",
"extractor": "fixedAmount",
"params": {
"amount": "100000000000000000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x23773E65ed146A459791799d01336DB287f25334",
"extractor": "fixedAmount",
"params": {
"amount": "100000000000000000000000"
}
}
}
}
]
},
{
"asset": {
"symbol": "ETH"
},
"buckets": [
{
"id": "tornado-ETH-0.1",
"type": "denomination",
"label": "ETH 0.1",
"address": "eth:0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc",
"denomination": "0.1",
"totalValue": {
"type": "nativeBalance",
"chain": "ethereum",
"holder": "eth:0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc"
},
"flows": {
"sinceBlock": 9116966,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc",
"extractor": "fixedAmount",
"params": {
"amount": "100000000000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc",
"extractor": "fixedAmount",
"params": {
"amount": "100000000000000000"
}
}
}
},
{
"id": "tornado-ETH-1",
"type": "denomination",
"label": "ETH 1",
"address": "eth:0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936",
"denomination": "1",
"totalValue": {
"type": "nativeBalance",
"chain": "ethereum",
"holder": "eth:0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936"
},
"flows": {
"sinceBlock": 9117609,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936",
"extractor": "fixedAmount",
"params": {
"amount": "1000000000000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936",
"extractor": "fixedAmount",
"params": {
"amount": "1000000000000000000"
}
}
}
},
{
"id": "tornado-ETH-10",
"type": "denomination",
"label": "ETH 10",
"address": "eth:0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF",
"denomination": "10",
"totalValue": {
"type": "nativeBalance",
"chain": "ethereum",
"holder": "eth:0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF"
},
"flows": {
"sinceBlock": 9117720,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF",
"extractor": "fixedAmount",
"params": {
"amount": "10000000000000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF",
"extractor": "fixedAmount",
"params": {
"amount": "10000000000000000000"
}
}
}
},
{
"id": "tornado-ETH-100",
"type": "denomination",
"label": "ETH 100",
"address": "eth:0xA160cdAB225685dA1d56aa342Ad8841c3b53f291",
"denomination": "100",
"totalValue": {
"type": "nativeBalance",
"chain": "ethereum",
"holder": "eth:0xA160cdAB225685dA1d56aa342Ad8841c3b53f291"
},
"flows": {
"sinceBlock": 9161895,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0xA160cdAB225685dA1d56aa342Ad8841c3b53f291",
"extractor": "fixedAmount",
"params": {
"amount": "100000000000000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0xA160cdAB225685dA1d56aa342Ad8841c3b53f291",
"extractor": "fixedAmount",
"params": {
"amount": "100000000000000000000"
}
}
}
}
]
},
{
"asset": {
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"symbol": "USDC"
},
"buckets": [
{
"id": "tornado-USDC-100",
"type": "denomination",
"label": "USDC 100",
"address": "eth:0xd96f2B1c14Db8458374d9Aca76E26c3D18364307",
"denomination": "100",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"holder": "eth:0xd96f2B1c14Db8458374d9Aca76E26c3D18364307"
},
"flows": {
"sinceBlock": 9161958,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0xd96f2B1c14Db8458374d9Aca76E26c3D18364307",
"extractor": "fixedAmount",
"params": {
"amount": "100000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0xd96f2B1c14Db8458374d9Aca76E26c3D18364307",
"extractor": "fixedAmount",
"params": {
"amount": "100000000"
}
}
}
},
{
"id": "tornado-USDC-1000",
"type": "denomination",
"label": "USDC 1000",
"address": "eth:0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D",
"denomination": "1000",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"holder": "eth:0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D"
},
"flows": {
"sinceBlock": 9161965,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D",
"extractor": "fixedAmount",
"params": {
"amount": "1000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D",
"extractor": "fixedAmount",
"params": {
"amount": "1000000000"
}
}
}
}
]
},
{
"asset": {
"address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"symbol": "USDT"
},
"buckets": [
{
"id": "tornado-USDT-100",
"type": "denomination",
"label": "USDT 100",
"address": "eth:0x169AD27A470D064DEDE56a2D3ff727986b15D52B",
"denomination": "100",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0xdAC17F958D2ee523a2206206994597C13D831ec7",
"holder": "eth:0x169AD27A470D064DEDE56a2D3ff727986b15D52B"
},
"flows": {
"sinceBlock": 9162005,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x169AD27A470D064DEDE56a2D3ff727986b15D52B",
"extractor": "fixedAmount",
"params": {
"amount": "100000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x169AD27A470D064DEDE56a2D3ff727986b15D52B",
"extractor": "fixedAmount",
"params": {
"amount": "100000000"
}
}
}
},
{
"id": "tornado-USDT-1000",
"type": "denomination",
"label": "USDT 1000",
"address": "eth:0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f",
"denomination": "1000",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0xdAC17F958D2ee523a2206206994597C13D831ec7",
"holder": "eth:0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f"
},
"flows": {
"sinceBlock": 9162012,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f",
"extractor": "fixedAmount",
"params": {
"amount": "1000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f",
"extractor": "fixedAmount",
"params": {
"amount": "1000000000"
}
}
}
}
]
},
{
"asset": {
"address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
"symbol": "WBTC"
},
"buckets": [
{
"id": "tornado-WBTC-0.1",
"type": "denomination",
"label": "WBTC 0.1",
"address": "eth:0x178169B423a011fff22B9e3F3abeA13414dDD0F1",
"denomination": "0.1",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
"holder": "eth:0x178169B423a011fff22B9e3F3abeA13414dDD0F1"
},
"flows": {
"sinceBlock": 12067529,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x178169B423a011fff22B9e3F3abeA13414dDD0F1",
"extractor": "fixedAmount",
"params": {
"amount": "10000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x178169B423a011fff22B9e3F3abeA13414dDD0F1",
"extractor": "fixedAmount",
"params": {
"amount": "10000000"
}
}
}
},
{
"id": "tornado-WBTC-1",
"type": "denomination",
"label": "WBTC 1",
"address": "eth:0x610B717796ad172B316836AC95a2ffad065CeaB4",
"denomination": "1",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
"holder": "eth:0x610B717796ad172B316836AC95a2ffad065CeaB4"
},
"flows": {
"sinceBlock": 12066652,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0x610B717796ad172B316836AC95a2ffad065CeaB4",
"extractor": "fixedAmount",
"params": {
"amount": "100000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0x610B717796ad172B316836AC95a2ffad065CeaB4",
"extractor": "fixedAmount",
"params": {
"amount": "100000000"
}
}
}
},
{
"id": "tornado-WBTC-10",
"type": "denomination",
"label": "WBTC 10",
"address": "eth:0xbB93e510BbCD0B7beb5A853875f9eC60275CF498",
"denomination": "10",
"totalValue": {
"type": "erc20BalanceOf",
"chain": "ethereum",
"tokenAddress": "eth:0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
"holder": "eth:0xbB93e510BbCD0B7beb5A853875f9eC60275CF498"
},
"flows": {
"sinceBlock": 12067591,
"deposit": {
"chain": "ethereum",
"event": "0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196",
"address": "eth:0xbB93e510BbCD0B7beb5A853875f9eC60275CF498",
"extractor": "fixedAmount",
"params": {
"amount": "1000000000"
}
},
"withdrawal": {
"chain": "ethereum",
"event": "0xe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931",
"address": "eth:0xbB93e510BbCD0B7beb5A853875f9eC60275CF498",
"extractor": "fixedAmount",
"params": {
"amount": "1000000000"
}
}
}
}
]
}
],
"riskSummary": "## Funds can be lost if\n1. the zk proof system is broken, allowing invalid withdrawals.\n2. the [trusted setup](#trusted-setups) is compromised or all ceremony participants collude, allowing invalid withdrawals.\n3. a user loses the note secrets required to withdraw. \n
\n## Privacy can be lost if\n1. no relayer is available and the withdrawal must be submitted from an address that can be linked to the user.",
"trustedSetup": {
"id": "TornadoCash",
"name": "Tornado Cash",
"participantCount": 1114,
"risk": "green",
"shortDescription": "Circuit-specific trusted setup for Groth16 Tornado Cash circuits, contains 1114 contributions.",
"longDescription": "\n Circuit-specific trusted setup for Groth16 Tornado Cash circuits. It was publicly announced as a Phase 2 ceremony\n built on top of the 30th contribution to the Perpetual Powers of Tau ceremony, and completed in May 2020. It\n collected 1114 contributions over 10 days, with 450 identified contributors and 664 anonymous ones. Tornado Cash\n published the participant list, archive of contributions and artifacts, and the generated verifier contract.\n\n - Ceremony completion announcement: [https://tornado-cash.medium.com/the-biggest-trusted-setup-ceremony-in-the-world-3c6ab9c8fffa](https://tornado-cash.medium.com/the-biggest-trusted-setup-ceremony-in-the-world-3c6ab9c8fffa)\n - Ceremony page with participant list and archive download: [https://ceremony.tornado.cash/](https://ceremony.tornado.cash/)\n - Initial ceremony announcement: [https://tornado-cash.medium.com/tornado-cash-trusted-setup-ceremony-b846e1e00be1](https://tornado-cash.medium.com/tornado-cash-trusted-setup-ceremony-b846e1e00be1)\n - Ceremony code repository: [https://github.com/tornadocash/phase2-bn254](https://github.com/tornadocash/phase2-bn254)\n "
},
"upgradesAndGovernance": "\nTornado cash has a TORN DAO, which does not have the authority to upgrade or modify existing pools in any way. However it controls a significant portion of the Tornado cash protocol and periphery, including:\n\n1. **Default router for deposits and withdrawals and the official registry for supported pools**. Malicious upgrades of these components could lead to users losing deposited tokens. \n2. **Standard UI registered on IPFS and associated UI content hash**. Malicious upgrades of these components could lead to users losing deposited tokens, which [was exploited in 2024](https://www.coindesk.com/business/2024/02/26/tornado-cash-reportedly-suffers-backend-exploit-user-deposits-at-risk?utm_source=chatgpt.com). \n3. **TORN token itself**. Malicious upgrades of the token could lead to token transfers being frozen. \n4. **Registered relayers**. Malicious upgrades of these components could remove all registered relayers, forcing users to self-withdraw.\n\n### **Governance flow**\n\n1. Users lock TORN token in the Governance contract ([0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce](https://etherscan.io/address/0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce)). After voting or proposing, staked tokens are locked for several days, preventing governance hopping. The stake could be delegated to another address. \n2. Anyone with at least 1.00 K TORN could create a proposal. Proposal spends 1m 15s in the Pending state, where voting is still disabled, followed by 5d of Active state, when votes are cast. If the vote outcome changes in the last 1h, voting period is extended by another 6h. \n3. Proposal is accepted by simple majority with a required quorum of 100 K TORN. Once accepted, 2d of Timelocked state allow exiting the protocol to everyone who disagrees with the proposal. Afterwards, the proposal could be permissionlessly executed within 3d. \n "
}
+49 -0
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "GovernanceProposalStateUpgrade",
"name": "GovernanceProposalStateUpgrade",
"accounts": [
{
"address": "eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce",
"type": "Contract",
"isVerified": true,
"name": "0x5efd…A1Ce",
"url": "https://etherscan.io/address/0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
}
],
"chain": "ethereum",
"description": "Member of GnosisSafe.\n* Can upgrade **with no delay**\n * TornadoTrees \n * RelayerRegistry \n * TornadoStakingRewards \n * GovernanceProposalStateUpgrade \n * InstanceRegistry ",
"discoveryDrivenData": true
},
{
"id": "GnosisSafe",
"name": "GnosisSafe",
"description": "A Multisig with 1/1 threshold. ",
"accounts": [
{
"address": "eth:0xb04E030140b30C27bcdfaafFFA98C57d80eDa7B4",
"type": "Contract",
"isVerified": true,
"name": "0xb04E…a7B4",
"url": "https://etherscan.io/address/0xb04E030140b30C27bcdfaafFFA98C57d80eDa7B4"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce",
"type": "Contract",
"isVerified": true,
"name": "GovernanceProposalStateUpgrade",
"url": "#GovernanceProposalStateUpgrade"
}
],
"discoveryDrivenData": true
}
]
}
}
+713 -0
{
"addresses": {
"ethereum": [
{
"name": "cTornado",
"isVerified": true,
"address": "eth:0x03893a7c7463AE47D46bc7f091665f1893656003",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless compounding Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x03893a7c7463AE47D46bc7f091665f1893656003#code"
},
{
"name": "ERC20Tornado",
"isVerified": true,
"address": "eth:0x07687e702b410Fa43f4cB4Af7FA097918ffD2730",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x07687e702b410Fa43f4cB4Af7FA097918ffD2730#code"
},
{
"name": "TornadoCash_erc20",
"isVerified": true,
"address": "eth:0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f#code"
},
{
"name": "TornadoCash_Eth_01",
"isVerified": true,
"address": "eth:0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "ETH token Tornado Cash pool. Owned by operator.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc#code"
},
{
"name": "TornadoCash_erc20",
"isVerified": true,
"address": "eth:0x169AD27A470D064DEDE56a2D3ff727986b15D52B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x169AD27A470D064DEDE56a2D3ff727986b15D52B#code"
},
{
"name": "ERC20Tornado",
"isVerified": true,
"address": "eth:0x178169B423a011fff22B9e3F3abeA13414dDD0F1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x178169B423a011fff22B9e3F3abeA13414dDD0F1#code"
},
{
"name": "TornadoCash_erc20",
"isVerified": true,
"address": "eth:0x22aaA7720ddd5388A3c0A3333430953C68f1849b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x22aaA7720ddd5388A3c0A3333430953C68f1849b#code"
},
{
"name": "ERC20Tornado",
"isVerified": true,
"address": "eth:0x23773E65ed146A459791799d01336DB287f25334",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x23773E65ed146A459791799d01336DB287f25334#code"
},
{
"name": "cTornado",
"isVerified": true,
"address": "eth:0x2717c5e28cf931547B621a5dddb772Ab6A35B701",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless compounding Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2717c5e28cf931547B621a5dddb772Ab6A35B701#code"
},
{
"name": "TornadoCash_erc20",
"isVerified": true,
"address": "eth:0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D#code"
},
{
"name": "TornadoCash_eth",
"isVerified": true,
"address": "eth:0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "ETH token Tornado Cash pool. Owned by operator.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936#code"
},
{
"name": "ERC20Tornado",
"isVerified": true,
"address": "eth:0x610B717796ad172B316836AC95a2ffad065CeaB4",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x610B717796ad172B316836AC95a2ffad065CeaB4#code"
},
{
"name": "TornadoCash_eth",
"isVerified": true,
"address": "eth:0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "ETH token Tornado Cash pool. Owned by operator.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF#code"
},
{
"name": "TornadoCash_eth",
"isVerified": true,
"address": "eth:0xA160cdAB225685dA1d56aa342Ad8841c3b53f291",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "ETH token Tornado Cash pool. Owned by operator.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xA160cdAB225685dA1d56aa342Ad8841c3b53f291#code"
},
{
"name": "ERC20Tornado",
"isVerified": true,
"address": "eth:0xbB93e510BbCD0B7beb5A853875f9eC60275CF498",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbB93e510BbCD0B7beb5A853875f9eC60275CF498#code"
},
{
"name": "cTornado",
"isVerified": true,
"address": "eth:0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless compounding Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af#code"
},
{
"name": "TornadoCash_erc20",
"isVerified": true,
"address": "eth:0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3#code"
},
{
"name": "TornadoCash_erc20",
"isVerified": true,
"address": "eth:0xd96f2B1c14Db8458374d9Aca76E26c3D18364307",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xd96f2B1c14Db8458374d9Aca76E26c3D18364307#code"
},
{
"name": "TornadoCash_erc20",
"isVerified": true,
"address": "eth:0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Ownerless ERC-20 Tornado Cash pool.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144#code"
},
{
"name": "WithdrawVerifier",
"isVerified": true,
"address": "eth:0x09193888b3f38C82dEdfda55259A82C0E7De875E",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x09193888b3f38C82dEdfda55259A82C0E7De875E#code"
},
{
"name": "TornadoVault",
"isVerified": true,
"address": "eth:0x2F50508a8a3D323B91336FA3eA6ae50E55f32185",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2F50508a8a3D323B91336FA3eA6ae50E55f32185#code"
},
{
"name": "TornadoTrees",
"isVerified": true,
"address": "eth:0x43a3bE4Ae954d9869836702AFd10393D3a7Ea417",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x43a3bE4Ae954d9869836702AFd10393D3a7Ea417#code"
},
{
"name": "Proposal",
"isVerified": true,
"address": "eth:0x4B6C07B8940a7602fE4332AFa915b366e56eAce5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x4B6C07B8940a7602fE4332AFa915b366e56eAce5#code"
},
{
"name": "TornadoTrees",
"isVerified": true,
"address": "eth:0x527653eA119F3E6a1F5BD18fbF4714081D7B31ce",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
],
"implementations": [
"eth:0x200a79068d8141924B511bC78CB55Dca89cF5C2E"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "* Roles:\n * **admin**: GovernanceProposalStateUpgrade",
"upgradableBy": [
{
"name": "GovernanceProposalStateUpgrade",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x527653eA119F3E6a1F5BD18fbF4714081D7B31ce#code"
},
{
"name": "RelayerRegistry",
"isVerified": true,
"address": "eth:0x58E8dCC13BE9780fC42E8723D8EaD4CF46943dF2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
],
"implementations": [
"eth:0x84b0c75c1F6211450FEC7289c32D717AdaDD702A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1685886611,
"transactionHash": "0x98125b78ef0dc7fd040764f37ee24e40ae5352b8551ba671aa7bd8e8320dcef9",
"implementations": [
"eth:0xe27B91724C55E950F68b394f33FA3B86693179C0"
]
},
{
"timestamp": 1698933491,
"transactionHash": "0x3d11319e48b756e50c873bebe3a34d2e8f536436d70f99bfd6da03e4ea5642e4",
"implementations": [
"eth:0xA3b821A2C6C9a52533178a1f2B9Ff4AedbA880e6"
]
},
{
"timestamp": 1700316599,
"transactionHash": "0x9b8cc0ca7bf2019b408eead6d2db8046957134183dd882007be41822082ab319",
"implementations": [
"eth:0x84b0c75c1F6211450FEC7289c32D717AdaDD702A"
]
}
],
"description": "* Roles:\n * **admin**: GovernanceProposalStateUpgrade",
"upgradableBy": [
{
"name": "GovernanceProposalStateUpgrade",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x58E8dCC13BE9780fC42E8723D8EaD4CF46943dF2#code"
},
{
"name": "TornadoStakingRewards",
"isVerified": true,
"address": "eth:0x5B3f656C80E8ddb9ec01Dd9018815576E9238c29",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
],
"implementations": [
"eth:0x9c97be37840f0e754bb7aDB1b16fD0954A2BA248"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1687570343,
"transactionHash": "0xf89acb4c80df2c46d8907bcd4152fb044ae0ffb398fc13a6213b49b3135047eb",
"implementations": [
"eth:0x9c97be37840f0e754bb7aDB1b16fD0954A2BA248"
]
}
],
"description": "* Roles:\n * **admin**: GovernanceProposalStateUpgrade",
"upgradableBy": [
{
"name": "GovernanceProposalStateUpgrade",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5B3f656C80E8ddb9ec01Dd9018815576E9238c29#code"
},
{
"name": "RewardSwap",
"isVerified": true,
"address": "eth:0x5cab7692D4E94096462119ab7bF57319726Eed2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5cab7692D4E94096462119ab7bF57319726Eed2A#code"
},
{
"name": "",
"isVerified": false,
"address": "eth:0x6234c4C2734D2B246AE074492F402D8f58ff3226",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6234c4C2734D2B246AE074492F402D8f58ff3226#code"
},
{
"name": "TreeUpdateVerifier",
"isVerified": true,
"address": "eth:0x653477c392c16b0765603074f157314Cc4f40c32",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x653477c392c16b0765603074f157314Cc4f40c32#code"
},
{
"name": "TornadoProxy",
"isVerified": true,
"address": "eth:0x722122dF12D4e14e13Ac3b6895a86e84145b6967",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x722122dF12D4e14e13Ac3b6895a86e84145b6967#code"
},
{
"name": "Miner",
"isVerified": true,
"address": "eth:0x746Aebc06D2aE31B71ac51429A19D54E797878E9",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x746Aebc06D2aE31B71ac51429A19D54E797878E9#code"
},
{
"name": "TORN",
"isVerified": true,
"address": "eth:0x77777FeDdddFfC19Ff86DB637967013e6C6A116C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x77777FeDdddFfC19Ff86DB637967013e6C6A116C#code"
},
{
"name": "",
"isVerified": false,
"address": "eth:0x83584f83f26aF4eDDA9CBe8C730bc87C364b28fe",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x83584f83f26aF4eDDA9CBe8C730bc87C364b28fe#code"
},
{
"name": "RewardVerifier",
"isVerified": true,
"address": "eth:0x88fd245fEdeC4A936e700f9173454D1931B4C307",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x88fd245fEdeC4A936e700f9173454D1931B4C307#code"
},
{
"name": "TornadoProxy",
"isVerified": true,
"address": "eth:0x905b63Fff465B9fFBF41DeA908CEb12478ec7601",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x905b63Fff465B9fFBF41DeA908CEb12478ec7601#code"
},
{
"name": "InstanceRegistry",
"isVerified": true,
"address": "eth:0xB20c66C4DE72433F3cE747b58B86830c459CA911",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
],
"implementations": [
"eth:0x2573BAc39EBe2901B4389CD468F2872cF7767FAF"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "* Roles:\n * **admin**: GovernanceProposalStateUpgrade",
"upgradableBy": [
{
"name": "GovernanceProposalStateUpgrade",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xB20c66C4DE72433F3cE747b58B86830c459CA911#code"
},
{
"name": "",
"isVerified": false,
"address": "eth:0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd#code"
},
{
"name": "Verifier",
"isVerified": true,
"address": "eth:0xce172ce1F20EC0B3728c9965470eaf994A03557A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xce172ce1F20EC0B3728c9965470eaf994A03557A#code"
},
{
"name": "",
"isVerified": false,
"address": "eth:0xD82ed8786D7c69DC7e052F7A542AB047971E73d2",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD82ed8786D7c69DC7e052F7A542AB047971E73d2#code"
},
{
"name": "TornadoRouter",
"isVerified": true,
"address": "eth:0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b#code"
},
{
"name": "BatchTreeUpdateVerifier",
"isVerified": true,
"address": "eth:0xEd3B00B651c4c7AF77c2fDdce4a388de84b507C6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEd3B00B651c4c7AF77c2fDdce4a388de84b507C6#code"
},
{
"name": "GasCompensationVault",
"isVerified": true,
"address": "eth:0xFA4C1f3f7D5dd7c12a9Adb82Cd7dDA542E3d59ef",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFA4C1f3f7D5dd7c12a9Adb82Cd7dDA542E3d59ef#code"
}
]
},
"risks": [
{
"category": "Funds can be stolen if",
"text": "the source code of unverified contracts contains malicious code.",
"isCritical": true
}
]
}
+7 -0
{
"baseTimestamp": 1775744401,
"contractsDiscoDriven": false,
"hasDiscoUi": false,
"isDiscoDriven": false,
"permissionsDiscoDriven": false
}
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null
+1 -0
null