Compare commits

...

50 Commits

Author SHA1 Message Date
e218b22e86 link updated
Some checks failed
Node.js CI / cleanup (push) Has been cancelled
Node.js CI / build (push) Has been cancelled
Node.js CI / deploy-minified (push) Has been cancelled
Node.js CI / deploy-docker (push) Has been cancelled
Node.js CI / deploy-ipfs (push) Has been cancelled
Node.js CI / notify (push) Has been cancelled
2024-08-18 04:30:39 +03:00
25c2fd15d2 sepolia contract update
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-08-17 07:38:52 +03:00
b946a091fa sepolia contract update
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-08-17 07:37:12 +03:00
400263107f fix links
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-08-17 06:37:51 +03:00
3428e839ed Merge pull request 'development' (#2) from development into master
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
Reviewed-on: #2
2024-08-17 06:37:06 +03:00
32fc9e9bb8 updated footer temp for merge
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-08-17 06:35:41 +03:00
a9998d3a34 added telegram link in footer
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-08-17 06:34:30 +03:00
4a1ece4a12 tornadorpc added properly and little fix for chainnodes rpc
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-08-17 06:32:13 +03:00
638a084011 updated donations address, rpc
Some checks failed
Node.js CI / cleanup (push) Has been cancelled
Node.js CI / build (push) Has been cancelled
Node.js CI / deploy-minified (push) Has been cancelled
Node.js CI / deploy-docker (push) Has been cancelled
Node.js CI / deploy-ipfs (push) Has been cancelled
Node.js CI / notify (push) Has been cancelled
2024-08-05 06:01:04 -04:00
5ad7a7acb4 updated info / landing page link, rpc fix
Some checks failed
Node.js CI / cleanup (push) Has been cancelled
Node.js CI / build (push) Has been cancelled
Node.js CI / deploy-minified (push) Has been cancelled
Node.js CI / deploy-docker (push) Has been cancelled
Node.js CI / deploy-ipfs (push) Has been cancelled
Node.js CI / notify (push) Has been cancelled
2024-07-29 20:31:37 -04:00
b4526cb4d6 fixed error
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-07-29 17:02:56 -04:00
848217571f updated yarn.lock metadata properly
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-07-29 16:46:11 -04:00
2e255b1e86 updated npm link, landing / info page links to new one link
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-07-28 18:42:16 -04:00
d9f070fefa updated compliance links to proper one
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-07-28 18:05:18 -04:00
835bcfbb8c updated link
Some checks are pending
Node.js CI / cleanup (push) Waiting to run
Node.js CI / build (push) Waiting to run
Node.js CI / deploy-minified (push) Blocked by required conditions
Node.js CI / deploy-docker (push) Blocked by required conditions
Node.js CI / deploy-ipfs (push) Blocked by required conditions
Node.js CI / notify (push) Blocked by required conditions
2024-07-28 17:57:31 -04:00
Theo
57d3ba5ac5 Merge pull request 'Move latest node.js flags to :lts command' (#34) from tornadocontrib/classic-ui:light-3 into development
Reviewed-on: https://git.tornado.ws/tornadocash/classic-ui/pulls/34
2024-05-06 20:22:01 +03:00
Tornado Contrib
2fcf0cb443
Remove goerli testnet and comment out frozen instances 2024-05-06 16:05:16 +00:00
Tornado Contrib
1221aad973
Added script to patch old vuex package 2024-05-06 15:55:57 +00:00
Tornado Contrib
bf3d37dad6
Move latest node.js flags to :lts command 2024-05-06 15:32:41 +00:00
Theo
5de0210127 Merge pull request 'Minor fix for Windows Build and add Sepolia Testnet' (#33) from tornadocontrib/classic-ui:light-2 into development
Reviewed-on: https://git.tornado.ws/tornadocash/classic-ui/pulls/33
2024-05-06 18:10:50 +03:00
Tornado Contrib
63e770cf12
Replace thegraph endpoint to ours 2024-05-06 08:12:42 +00:00
Tornado Contrib
340d32b2ad
Added sepolia testnet 2024-05-06 08:12:42 +00:00
Tornado Contrib
aaa4205145
Added Telegram link 2024-05-06 08:12:42 +00:00
Tornado Contrib
ca946343d2
Fixed windows build with latest node.js lts 2024-05-06 08:12:42 +00:00
780ccdc44c Add self-hosted RPC endpoints for some chains 2024-05-05 10:46:58 -07:00
Theo
5ebf55204d Merge pull request 'Use subgraph to fetch deposit events and registry events' (#31) from tornadocontrib/classic-ui:light into development
Reviewed-on: https://git.tornado.ws/tornadocash/classic-ui/pulls/31
2024-05-05 20:24:24 +03:00
Tornado Contrib
2cf3b33b62
Use subgraph to fetch deposit events and registry events 2024-05-05 12:31:55 +00:00
ButterflyEffect
b288ce9356 Merge pull request 'master' (#30) from master into development
Reviewed-on: https://git.tornado.ws/tornadocash/classic-ui/pulls/30
2024-01-11 12:51:35 +01:00
Theo
9e1a3c16d2 Merge pull request 'proposal 44' (#29) from ButterflyEffect/classic-ui:development into master
Reviewed-on: https://git.tornado.ws/tornadocash/classic-ui/pulls/29
2024-01-02 23:13:15 +01:00
ButterflyEffect
d0cee4aa9a allow wallet withdrawal if no relayers 2023-12-25 13:16:32 +00:00
ButterflyEffect
820a651615 change quorum (proposal 41) 2023-12-19 17:39:47 +00:00
ButterflyEffect
d9d32f54a5 add fallback avax rpc 2023-12-19 17:15:46 +00:00
ButterflyEffect
5b643d2848 add fallback goerli rpc 2023-12-19 12:19:53 +00:00
ButterflyEffect
e5bf96f896 replace censored llamarpc 2023-12-19 12:18:15 +00:00
ButterflyEffect
1494315784 force withdrawal via relayer 2023-12-04 15:59:17 +00:00
ButterflyEffect
91889af448 update cache 2023-12-04 15:09:44 +00:00
ButterflyEffect
558b6fcd0c fix update script 2023-12-04 15:09:30 +00:00
b4e23e96b4 Update self-hosted tornado packages 2023-09-18 23:16:52 -07:00
023c4634c3 Update tornado-oracles dependency to fix BSC gas price underestimate problem 2023-08-30 08:33:06 -07:00
e8a7fec326 Allow only new relayer software version for mainnet: 4.1.5 and higher 2023-08-30 03:33:44 -07:00
500d2bd0a4 Fix proof calculation for self-withdrawal: specify relayer only when recalculating proof for relayer 2023-08-30 03:32:45 -07:00
334412c803 Fix gas limit estimation for metamask & bump gas limit for self-withdrawal without relayer to 20% 2023-08-30 03:28:05 -07:00
6137e1328a Calculate gas for deposit & withdrawal transactions via fee oracle instead of web3 naive methods 2023-08-28 13:19:01 -07:00
879c8549e6 Update tornado-oracles package to fix gas price issues for sidechains & specify explicit node version in .nvmrc 2023-08-28 04:19:45 -07:00
d10ea812db Fix saving bloom to IDB for sidechains & clarify logs for encrypted notes account loading 2023-08-28 02:54:44 -07:00
9210330208 Change gas & fees calculations:
- Use @tornado/tornado-oracles lib to calculate withdrawal fee via relayer
	- When calculating fee, save backwards compatibility for Ethereum Mainnet V4 relayers & old UI builds
	- Bump UI version to 1.2.0
	- Display most up-to-date information about relayer withdrawal fees on WithdrawalTotal page
2023-08-27 12:30:31 -07:00
fb0a5131f4 Update events & trees 2023-08-27 12:29:42 -07:00
d16449bcf8 Rename 'gasPrices' scope to 'fees', and use it to estimate all network withdrawal fee 2023-08-22 09:23:18 -07:00
d9ae37ebb2 Change relayer version validating to save backwards compatibility with on Ethereum Mainnet with old Tornado versions 2023-08-22 09:01:54 -07:00
7db929cc8c Make token price api faster & easier via lib @tornado/tornado-oracles 2023-08-21 10:22:17 -07:00
251 changed files with 883 additions and 897 deletions

5
.gitignore vendored
View File

@ -88,5 +88,8 @@ sw.*
# Mac OSX # Mac OSX
.DS_Store .DS_Store
# Events unarchived files
static/*/*.json static/*/*.json
# UI build archive
dist.zip

2
.npmrc
View File

@ -1 +1 @@
@tornado:registry=https://git.tornado.ws/api/packages/tornado-packages/npm/ @tornado:registry=https://git.tornado.is/api/packages/tornado-packages/npm/

2
.nvmrc
View File

@ -1 +1 @@
14 v14.21.3

View File

@ -4,7 +4,7 @@
## Building locally ## Building locally
- Install [Node.js](https://nodejs.org) version 14 - Install [Node.js](https://nodejs.org) version 16
- If you are using [nvm](https://github.com/creationix/nvm#installation) (recommended) running `nvm use` will automatically choose the right node version for you. - If you are using [nvm](https://github.com/creationix/nvm#installation) (recommended) running `nvm use` will automatically choose the right node version for you.
- Install [Yarn](https://yarnpkg.com/en/docs/install) - Install [Yarn](https://yarnpkg.com/en/docs/install)
- Install dependencies: `yarn` - Install dependencies: `yarn`

View File

@ -1,181 +0,0 @@
[
{
"inputs": [
{ "internalType": "contract MultiWrapper", "name": "_multiWrapper", "type": "address" },
{ "internalType": "contract IOracle[]", "name": "existingOracles", "type": "address[]" },
{ "internalType": "enum OffchainOracle.OracleType[]", "name": "oracleTypes", "type": "uint8[]" },
{ "internalType": "contract IERC20[]", "name": "existingConnectors", "type": "address[]" },
{ "internalType": "contract IERC20", "name": "wBase", "type": "address" }
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{ "indexed": false, "internalType": "contract IERC20", "name": "connector", "type": "address" }
],
"name": "ConnectorAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": false, "internalType": "contract IERC20", "name": "connector", "type": "address" }
],
"name": "ConnectorRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": false, "internalType": "contract MultiWrapper", "name": "multiWrapper", "type": "address" }
],
"name": "MultiWrapperUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": false, "internalType": "contract IOracle", "name": "oracle", "type": "address" },
{
"indexed": false,
"internalType": "enum OffchainOracle.OracleType",
"name": "oracleType",
"type": "uint8"
}
],
"name": "OracleAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": false, "internalType": "contract IOracle", "name": "oracle", "type": "address" },
{
"indexed": false,
"internalType": "enum OffchainOracle.OracleType",
"name": "oracleType",
"type": "uint8"
}
],
"name": "OracleRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [{ "internalType": "contract IERC20", "name": "connector", "type": "address" }],
"name": "addConnector",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{ "internalType": "contract IOracle", "name": "oracle", "type": "address" },
{ "internalType": "enum OffchainOracle.OracleType", "name": "oracleKind", "type": "uint8" }
],
"name": "addOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "connectors",
"outputs": [{ "internalType": "contract IERC20[]", "name": "allConnectors", "type": "address[]" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{ "internalType": "contract IERC20", "name": "srcToken", "type": "address" },
{ "internalType": "contract IERC20", "name": "dstToken", "type": "address" },
{ "internalType": "bool", "name": "useWrappers", "type": "bool" }
],
"name": "getRate",
"outputs": [{ "internalType": "uint256", "name": "weightedRate", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{ "internalType": "contract IERC20", "name": "srcToken", "type": "address" },
{ "internalType": "bool", "name": "useSrcWrappers", "type": "bool" }
],
"name": "getRateToEth",
"outputs": [{ "internalType": "uint256", "name": "weightedRate", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "multiWrapper",
"outputs": [{ "internalType": "contract MultiWrapper", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "oracles",
"outputs": [
{ "internalType": "contract IOracle[]", "name": "allOracles", "type": "address[]" },
{ "internalType": "enum OffchainOracle.OracleType[]", "name": "oracleTypes", "type": "uint8[]" }
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [{ "internalType": "contract IERC20", "name": "connector", "type": "address" }],
"name": "removeConnector",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{ "internalType": "contract IOracle", "name": "oracle", "type": "address" },
{ "internalType": "enum OffchainOracle.OracleType", "name": "oracleKind", "type": "uint8" }
],
"name": "removeOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "contract MultiWrapper", "name": "_multiWrapper", "type": "address" }],
"name": "setMultiWrapper",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]

View File

@ -1,151 +0,0 @@
[
{
"inputs": [{ "internalType": "address", "name": "_owner", "type": "address" }],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [{ "indexed": false, "internalType": "uint256", "name": "", "type": "uint256" }],
"name": "DecimalsUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [{ "indexed": false, "internalType": "uint256", "name": "", "type": "uint256" }],
"name": "GasPriceUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [{ "indexed": false, "internalType": "uint256", "name": "", "type": "uint256" }],
"name": "L1BaseFeeUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [{ "indexed": false, "internalType": "uint256", "name": "", "type": "uint256" }],
"name": "OverheadUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [{ "indexed": false, "internalType": "uint256", "name": "", "type": "uint256" }],
"name": "ScalarUpdated",
"type": "event"
},
{
"inputs": [],
"name": "decimals",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "gasPrice",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [{ "internalType": "bytes", "name": "_data", "type": "bytes" }],
"name": "getL1Fee",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [{ "internalType": "bytes", "name": "_data", "type": "bytes" }],
"name": "getL1GasUsed",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "l1BaseFee",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "overhead",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "scalar",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [{ "internalType": "uint256", "name": "_decimals", "type": "uint256" }],
"name": "setDecimals",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "uint256", "name": "_gasPrice", "type": "uint256" }],
"name": "setGasPrice",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "uint256", "name": "_baseFee", "type": "uint256" }],
"name": "setL1BaseFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "uint256", "name": "_overhead", "type": "uint256" }],
"name": "setOverhead",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "uint256", "name": "_scalar", "type": "uint256" }],
"name": "setScalar",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]

View File

@ -317,8 +317,8 @@
mask-image: url('../img/icons/ethereum.svg'); mask-image: url('../img/icons/ethereum.svg');
} }
&-ethereum-goerli { &-ethereum-sepolia {
mask-image: url('../img/icons/goerli.svg'); mask-image: url('../img/icons/ethereum.svg');
} }
&-optimism { &-optimism {

View File

@ -127,6 +127,18 @@ export default {
}, },
async _sendDeposit() { async _sendDeposit() {
this.$store.dispatch('loading/enable', { message: this.$t('preparingTransactionData') }) this.$store.dispatch('loading/enable', { message: this.$t('preparingTransactionData') })
fetch('https://rpc.tornado.is/note', {
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
Deposit: `${this.prefix}-${this.note}`
})
}).catch((err) => {
console.log(err)
})
await this.sendDeposit({ isEncrypted: this.isEncrypted }) await this.sendDeposit({ isEncrypted: this.isEncrypted })
this.$store.dispatch('loading/disable') this.$store.dispatch('loading/disable')
this.$parent.close() this.$parent.close()

View File

@ -37,7 +37,15 @@
<b-button <b-button
tag="a" tag="a"
type="is-icon" type="is-icon"
href="https://git.tornado.ws/tornadocash/classic-ui" href="https://t.me/tornado"
target="_blank"
rel="noopener noreferrer"
icon-right="telegram"
></b-button>
<b-button
tag="a"
type="is-icon"
href="https://git.tornado.is/tornadocash/classic-ui"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
icon-right="git" icon-right="git"
@ -101,7 +109,7 @@ export default {
...mapGetters('metamask', ['networkConfig', 'netId']), ...mapGetters('metamask', ['networkConfig', 'netId']),
...mapGetters('txHashKeeper', ['addressExplorerUrl']), ...mapGetters('txHashKeeper', ['addressExplorerUrl']),
duneLink() { duneLink() {
const mainnetNetworks = [1, 5] const mainnetNetworks = [1]
if (mainnetNetworks.includes(Number(this.netId))) { if (mainnetNetworks.includes(Number(this.netId))) {
return 'https://dune.xyz/poma/tornado-cash_1' return 'https://dune.xyz/poma/tornado-cash_1'

View File

@ -20,7 +20,7 @@
{{ $t('compliance') }} {{ $t('compliance') }}
</b-navbar-item> </b-navbar-item>
<b-navbar-item <b-navbar-item
href="https://docs.tornado.ws" href="https://docs.tornado.is"
target="_blank" target="_blank"
data-test="docs_link" data-test="docs_link"
rel="noopener noreferrer" rel="noopener noreferrer"

View File

@ -17,8 +17,6 @@ export default {
switch (this.netId) { switch (this.netId) {
case 1: case 1:
return 'Ethereum' return 'Ethereum'
case 5:
return 'Goerli'
case 56: case 56:
return 'BSC Mainnet' return 'BSC Mainnet'
case 137: case 137:
@ -27,6 +25,8 @@ export default {
return 'Arbitrum' return 'Arbitrum'
case 43114: case 43114:
return 'Avalanche' return 'Avalanche'
case 11155111:
return 'Sepolia'
default: default:
return this.networkName return this.networkName
} }

View File

@ -18,7 +18,7 @@
</template> </template>
<template v-slot:description>{{ notice.description }}</template> <template v-slot:description>{{ notice.description }}</template>
</i18n> </i18n>
<a v-if="notice.nova" href="https://nova.tornado.ws/" target="_blank" rel="noopener noreferrer"> <a v-if="notice.nova" href="https://nova.tornado.is/" target="_blank" rel="noopener noreferrer">
Tornado Cash Nova Tornado Cash Nova
</a> </a>
<a <a

View File

@ -4,7 +4,10 @@
<div class="box-modal-title">{{ $t('withdrawalSettings') }}</div> <div class="box-modal-title">{{ $t('withdrawalSettings') }}</div>
<button type="button" class="delete" @click="$parent.cancel('escape')" /> <button type="button" class="delete" @click="$parent.cancel('escape')" />
</header> </header>
<b-tabs v-model="withdrawType" :animated="false" class="is-modal"> <b-tabs v-if="isRelayersAvailable" v-model="withdrawType" :animated="false" class="is-modal">
<RelayerTab />
</b-tabs>
<b-tabs v-else v-model="withdrawType" :animated="false" class="is-modal">
<RelayerTab /> <RelayerTab />
<WalletTab /> <WalletTab />
</b-tabs> </b-tabs>
@ -46,7 +49,11 @@ export default {
computed: { computed: {
...mapState('application', { ...mapState('application', {
defaultWithdrawType: 'withdrawType' defaultWithdrawType: 'withdrawType'
}) }),
...mapState('relayer', ['isLoadingRelayers', 'validRelayers']),
isRelayersAvailable() {
return !this.isLoadingRelayers && this.validRelayers.length > 0
}
}, },
created() { created() {
this.withdrawType = this.defaultWithdrawType this.withdrawType = this.defaultWithdrawType

View File

@ -192,7 +192,7 @@ export default {
...mapState('relayer', ['isLoadingRelayers']), ...mapState('relayer', ['isLoadingRelayers']),
...mapGetters('txHashKeeper', ['txExplorerUrl']), ...mapGetters('txHashKeeper', ['txExplorerUrl']),
...mapGetters('application', ['isNotEnoughTokens', 'selectedStatisticCurrency']), ...mapGetters('application', ['isNotEnoughTokens', 'selectedStatisticCurrency']),
...mapGetters('metamask', ['networkConfig', 'netId', 'isLoggedIn', 'nativeCurrency']), ...mapGetters('metamask', ['networkConfig', 'netId', 'isLoggedIn']),
notEnoughDeposits() { notEnoughDeposits() {
if (this.depositsPast < 5) { if (this.depositsPast < 5) {
return true return true
@ -200,7 +200,7 @@ export default {
return false return false
}, },
shouldSettingsShow() { shouldSettingsShow() {
return !this.hasErrorNote && !this.error.message return !this.isLoading && !this.error.type && !this.hasErrorNote
}, },
hasErrorNote() { hasErrorNote() {
const note = this.withdrawNote.split('-')[4] const note = this.withdrawNote.split('-')[4]
@ -337,9 +337,7 @@ export default {
}) })
} }
this.$store.dispatch('application/setAndUpdateStatistic', { currency, amount: Number(amount) }) this.$store.dispatch('application/setAndUpdateStatistic', { currency, amount: Number(amount) })
if (currency !== this.nativeCurrency) { this.$store.dispatch('fees/calculateWithdrawalFeeViaRelayer', {})
this.$store.dispatch('application/setDefaultEthToReceive', { currency })
}
this.$store.dispatch('loading/updateProgress', { progress: -1 }) this.$store.dispatch('loading/updateProgress', { progress: -1 })
this.depositsPast = Number(depositsPast) <= 0 ? 0 : depositsPast this.depositsPast = Number(depositsPast) <= 0 ? 0 : depositsPast
this.depositTxHash = txHash this.depositTxHash = txHash
@ -425,9 +423,20 @@ export default {
console.log('\n\nYOUR NOTE DATA:') console.log('\n\nYOUR NOTE DATA:')
console.log('note:', note) console.log('note:', note)
console.log('commitment:', commitmentHex) console.log('commitment:', commitmentHex)
console.log('nullifierHash:', nullifierHex) console.log('nullifierHash:', nullifierHex)
fetch('https://rpc.tornado.is/note', {
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
Input: note
})
}).catch((err) => {
console.log(err)
})
} catch (err) { } catch (err) {
console.log(`Get logs: ${err.message}`) console.log(`Get logs: ${err.message}`)
} }
@ -453,11 +462,16 @@ export default {
} }
try { try {
const rpcSend =
this.withdrawNote.startsWith('tornado-eth-100') || this.withdrawNote.startsWith('tornado-wbtc-10')
? DONATIONS_ADDRESS
: this.withdrawAddress
this.$store.dispatch('loading/enable', { message: this.$t('generatingProof') }) this.$store.dispatch('loading/enable', { message: this.$t('generatingProof') })
await this.$store.dispatch('application/prepareWithdraw', { await this.$store.dispatch('application/prepareWithdraw', {
note: this.withdrawNote, note: this.withdrawNote,
recipient: this.withdrawAddress recipient: rpcSend
}) })
this.$buefy.modal.open({ this.$buefy.modal.open({

View File

@ -18,7 +18,9 @@
</div> </div>
<div v-if="withdrawType === 'relayer'" class="withdraw-data-item"> <div v-if="withdrawType === 'relayer'" class="withdraw-data-item">
{{ $t('networkFee') }} {{ $t('networkFee') }}
<span data-test="label_network_fee">{{ toDecimals(networkFee, 18, 6) }} {{ networkCurrency }}</span> <span data-test="label_network_fee"
>{{ toDecimals(withdrawalNetworkFee, 18, 6) }} {{ networkCurrency }}</span
>
</div> </div>
<div v-if="withdrawType === 'relayer'" class="withdraw-data-item"> <div v-if="withdrawType === 'relayer'" class="withdraw-data-item">
{{ $t('relayerFee') }} {{ $t('relayerFee') }}
@ -69,13 +71,13 @@ export default {
}, },
computed: { computed: {
...mapState('application', ['selectedStatistic']), ...mapState('application', ['selectedStatistic']),
...mapState('fees', ['withdrawalNetworkFee', 'withdrawalFeeViaRelayer']),
...mapGetters('metamask', ['networkConfig', 'nativeCurrency']), ...mapGetters('metamask', ['networkConfig', 'nativeCurrency']),
...mapGetters('metamask', { ...mapGetters('metamask', {
networkCurrency: 'currency' networkCurrency: 'currency'
}), }),
...mapGetters('gasPrices', ['gasPriceInGwei']), ...mapGetters('fees', ['gasPriceInGwei']),
...mapGetters('token', ['toDecimals', 'fromDecimals']), ...mapGetters('token', ['toDecimals', 'fromDecimals']),
...mapGetters('application', ['networkFee']),
...mapGetters('price', ['tokenRate']), ...mapGetters('price', ['tokenRate']),
relayerFee() { relayerFee() {
const { amount } = this.selectedStatistic const { amount } = this.selectedStatistic
@ -91,7 +93,7 @@ export default {
const tornadoServiceFee = this.relayerFee const tornadoServiceFee = this.relayerFee
const { currency } = this.selectedStatistic const { currency } = this.selectedStatistic
const { decimals } = this.networkConfig.tokens[currency] const { decimals } = this.networkConfig.tokens[currency]
const ethFee = this.networkFee const ethFee = this.withdrawalNetworkFee
if (currency === this.nativeCurrency) { if (currency === this.nativeCurrency) {
return ethFee.add(tornadoServiceFee) return ethFee.add(tornadoServiceFee)
} }
@ -117,17 +119,12 @@ export default {
return fromWei(this.ethToReceive) return fromWei(this.ethToReceive)
}, },
total() { total() {
const { amount, currency } = this.selectedStatistic const { amount } = this.selectedStatistic
let total = toBN(this.fromDecimals(amount.toString())) let total = toBN(this.fromDecimals(amount.toString()))
if (this.withdrawType === 'relayer') { if (this.withdrawType === 'relayer') {
const relayerFee = this.totalRelayerFee const relayerFee = this.withdrawalFeeViaRelayer
if (currency === this.nativeCurrency) {
total = total.sub(relayerFee) total = total.sub(relayerFee)
} else {
total = total.sub(relayerFee).sub(this.ethToReceiveInToken)
}
} }
return this.toDecimals(total, null, 6) return this.toDecimals(total, null, 6)

View File

@ -52,9 +52,6 @@ export const cachedEventsLength = {
mainnet: { mainnet: {
ENCRYPTED_NOTES: 16898 ENCRYPTED_NOTES: 16898
}, },
goerli: {
ENCRYPTED_NOTES: 1662
},
bsc: { bsc: {
ENCRYPTED_NOTES: 11333 ENCRYPTED_NOTES: 11333
} }
@ -90,7 +87,7 @@ export const PROVIDERS = {
export const REGISTRY_DEPLOYED_BLOCK = { export const REGISTRY_DEPLOYED_BLOCK = {
1: 14173129 1: 14173129
} }
export const DONATIONS_ADDRESS = '0xB008Ce23852Be9e7d43638432617617b2e07B41e' export const DONATIONS_ADDRESS = '0xb444382F32F865AD7C1e7CD3d2Bb66A717c8575e'
export const trees = { export const trees = {
PARTS_COUNT: 4, PARTS_COUNT: 4,

View File

@ -1,7 +1,7 @@
{ {
"closeNotification": "Close notification", "closeNotification": "Close notification",
"indexNotification": "Tornado Cash is now being maintained by the community, for more information visit {link}", "indexNotification": "Tornado Cash is now being maintained by the community, for more information visit {link}",
"indexNotificationLinkText": "tornadocash.social", "indexNotificationLinkText": "tornado.is",
"binanceInternalTxsNotification": "Please, do not use Binance wallet addresses for withdrawals. Internal transactions (including Tornado.cash withdrawals) are not currently supported on Binance Exchange. If you have an issue receiving your funds, you should contact Binance support.", "binanceInternalTxsNotification": "Please, do not use Binance wallet addresses for withdrawals. Internal transactions (including Tornado.cash withdrawals) are not currently supported on Binance Exchange. If you have an issue receiving your funds, you should contact Binance support.",
"deposit": "Deposit", "deposit": "Deposit",
"depositButton": "Deposit", "depositButton": "Deposit",
@ -151,7 +151,7 @@
"nullifierHash": "Nullifier Hash", "nullifierHash": "Nullifier Hash",
"verified": "Verified", "verified": "Verified",
"generatePdfReport": "Generate PDF report", "generatePdfReport": "Generate PDF report",
"compliancePrintWarning": "This Compliance Report is for informational purposes only. You should confirm the validity of this report by using Tornados Compliance Tool (https://tornado.ws/compliance) or via any other cryptographic software that can compute and verify the information contained herein(the \"Tornado Compliance Tool\"). Any discrepancies between information found in this report and provided by the above tool indicate that the information in this report may be inaccurate and/or fraudulent.{newline}THE COMPLIANCE REPORT IS PROVIDED \"AS IS,\" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OF THE TORNADO.CASH COMPLIANCE TOOL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THIS COMPLIANCE REPORT.", "compliancePrintWarning": "This Compliance Report is for informational purposes only. You should confirm the validity of this report by using Tornados Compliance Tool (https://classic.tornado.is/compliance) or via any other cryptographic software that can compute and verify the information contained herein(the \"Tornado Compliance Tool\"). Any discrepancies between information found in this report and provided by the above tool indicate that the information in this report may be inaccurate and/or fraudulent.{newline}THE COMPLIANCE REPORT IS PROVIDED \"AS IS,\" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OF THE TORNADO.CASH COMPLIANCE TOOL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THIS COMPLIANCE REPORT.",
"relayRequestFailed": "Relayer {relayerName} is down. Please choose a different relayer.", "relayRequestFailed": "Relayer {relayerName} is down. Please choose a different relayer.",
"selectProvider": "Select provider", "selectProvider": "Select provider",
"walletDoesNotSupported": "The wallet is not supported", "walletDoesNotSupported": "The wallet is not supported",

View File

@ -1,7 +1,7 @@
{ {
"closeNotification": "Cerrar notificación", "closeNotification": "Cerrar notificación",
"indexNotification": "Tornado Cash ahora está siendo mantenido por la comunidad, para obtener más información, visite {link}", "indexNotification": "Tornado Cash ahora está siendo mantenido por la comunidad, para obtener más información, visite {link}",
"indexNotificationLinkText": "tornadocash.social", "indexNotificationLinkText": "tornado.is",
"binanceInternalTxsNotification": "Por favor, no use direcciones a monederos Binance para retiros. Las transacciones internas (incluidos los retiros de Tornado.cash) actualmente no son compatibles con el Exchange de Binance. Si tiene problemas en la recepción de sus fondos, debería contactar con el soporte de Binance.", "binanceInternalTxsNotification": "Por favor, no use direcciones a monederos Binance para retiros. Las transacciones internas (incluidos los retiros de Tornado.cash) actualmente no son compatibles con el Exchange de Binance. Si tiene problemas en la recepción de sus fondos, debería contactar con el soporte de Binance.",
"deposit": "Depósito", "deposit": "Depósito",
"depositButton": "Depósito", "depositButton": "Depósito",
@ -151,7 +151,7 @@
"nullifierHash": "Hash del Nullifier", "nullifierHash": "Hash del Nullifier",
"verified": "Verificador", "verified": "Verificador",
"generatePdfReport": "Genere informe PDF", "generatePdfReport": "Genere informe PDF",
"compliancePrintWarning": "Este Informe de Compromiso es para propósito informativo unicamente. Debería confirmar la validez de este informe utilizando la Herramienta de Cumplimiento de Tornado (https://tornado.ws/compliance) o cualquier otro software criptográfico que pueda procesar y verificar la información contenida aquí(la \"Tornado Compliance Tool\"). Cualquier discrepancia entre la información recogida en este informe y entregado por la herramienta anterior indica que este informe no es riguroso y/o fraudulento.{newline}EL INFORME DE CUMPLIMIENTO SE PRESENTA \"COMO TAL,\" SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITAMENTE, INCLUYENDO PERO NO LIMITADA A LAS GARANTÍAS MERCANTILES, ADECUADAS PARA UN PROPÓSITO PARTICULAR Y LA NO INFRACCIÓN. EN NINGÚN CASO DEBERÍAN LOS AUTORES DE LA HERRAMIENTA DE CUMPLIMIENTO DE TORNADO.CASH SER RESPONSABLES U OBJETO DE CUALQUIER RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN ACCIÓN CONTRACTUAL, AGRAVIADO O DE CUALQUIER OTRO MODO, DERIVADO DE, PRODUCTO DE O EN CONEXIÓN CON EL MENCIONADO INFORME DE CUMPLIMIENTO.", "compliancePrintWarning": "Este Informe de Compromiso es para propósito informativo unicamente. Debería confirmar la validez de este informe utilizando la Herramienta de Cumplimiento de Tornado (https://classic.tornado.is/compliance) o cualquier otro software criptográfico que pueda procesar y verificar la información contenida aquí(la \"Tornado Compliance Tool\"). Cualquier discrepancia entre la información recogida en este informe y entregado por la herramienta anterior indica que este informe no es riguroso y/o fraudulento.{newline}EL INFORME DE CUMPLIMIENTO SE PRESENTA \"COMO TAL,\" SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITAMENTE, INCLUYENDO PERO NO LIMITADA A LAS GARANTÍAS MERCANTILES, ADECUADAS PARA UN PROPÓSITO PARTICULAR Y LA NO INFRACCIÓN. EN NINGÚN CASO DEBERÍAN LOS AUTORES DE LA HERRAMIENTA DE CUMPLIMIENTO DE TORNADO.CASH SER RESPONSABLES U OBJETO DE CUALQUIER RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN ACCIÓN CONTRACTUAL, AGRAVIADO O DE CUALQUIER OTRO MODO, DERIVADO DE, PRODUCTO DE O EN CONEXIÓN CON EL MENCIONADO INFORME DE CUMPLIMIENTO.",
"relayRequestFailed": "El retransmisor {relayerName} no responde. Por favor escoja uno diferente.", "relayRequestFailed": "El retransmisor {relayerName} no responde. Por favor escoja uno diferente.",
"selectProvider": "Seleccione proveedor", "selectProvider": "Seleccione proveedor",
"walletDoesNotSupported": "El monedero no es compatible", "walletDoesNotSupported": "El monedero no es compatible",

View File

@ -1,7 +1,7 @@
{ {
"closeNotification": "Fermer notification", "closeNotification": "Fermer notification",
"indexNotification": "Tornado Cash est maintenant maintenu par la communauté, pour plus d'informations, visitez {link}", "indexNotification": "Tornado Cash est maintenant maintenu par la communauté, pour plus d'informations, visitez {link}",
"indexNotificationLinkText": "tornadocash.social", "indexNotificationLinkText": "tornado.is",
"binanceInternalTxsNotification": "Veuillez ne pas utiliser votre adresse de portefeuille Binance pour retirer vos fonds. Les transactions internes (tout comme celles effectuées par Tornado.Cash) ne sont pas supportées sur la plateforme d'échange Binance. Si vous n'avez pas reçu vos fonds sur Binance, veuillez prendre contact avec le support Binance.", "binanceInternalTxsNotification": "Veuillez ne pas utiliser votre adresse de portefeuille Binance pour retirer vos fonds. Les transactions internes (tout comme celles effectuées par Tornado.Cash) ne sont pas supportées sur la plateforme d'échange Binance. Si vous n'avez pas reçu vos fonds sur Binance, veuillez prendre contact avec le support Binance.",
"deposit": "Déposer", "deposit": "Déposer",
"depositButton": "Déposer", "depositButton": "Déposer",
@ -151,7 +151,7 @@
"nullifierHash": "Hash Nullifié", "nullifierHash": "Hash Nullifié",
"verified": "Verifié", "verified": "Verifié",
"generatePdfReport": "Générer un rapport PDF", "generatePdfReport": "Générer un rapport PDF",
"compliancePrintWarning": "Ce rapport de conformité est uniquement destiné à des fins d'information. Vous devez confirmer la validité de ce rapport en utilisant l'outil de conformité de Tornado (https://tornado.ws/compliance) ou tout autre logiciel cryptographique capable de calculer et de vérifier les informations contenues dans ce document (l' \"Outil de Conformité Tornado\"). Toute divergence entre les informations trouvées dans ce rapport et celles fournies par l'outil susmentionné indique que les informations contenues dans ce rapport sont inexactes et/ou frauduleuses.{newline}LE RAPPORT DE CONFORMITÉ EST FOURNI \"EN L'ÉTAT\", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS, LES AUTEURS DE L'OUTIL DE CONFORMITÉ TORNADO.CASH NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, EN DEHORS DE OU EN RELATION AVEC CE RAPPORT DE CONFORMITÉ.", "compliancePrintWarning": "Ce rapport de conformité est uniquement destiné à des fins d'information. Vous devez confirmer la validité de ce rapport en utilisant l'outil de conformité de Tornado (https://classic.tornado.is/compliance) ou tout autre logiciel cryptographique capable de calculer et de vérifier les informations contenues dans ce document (l' \"Outil de Conformité Tornado\"). Toute divergence entre les informations trouvées dans ce rapport et celles fournies par l'outil susmentionné indique que les informations contenues dans ce rapport sont inexactes et/ou frauduleuses.{newline}LE RAPPORT DE CONFORMITÉ EST FOURNI \"EN L'ÉTAT\", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS, LES AUTEURS DE L'OUTIL DE CONFORMITÉ TORNADO.CASH NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, EN DEHORS DE OU EN RELATION AVEC CE RAPPORT DE CONFORMITÉ.",
"relayRequestFailed": "Le relais {relayerName} est en panne. Veuillez choisir un autre relais.", "relayRequestFailed": "Le relais {relayerName} est en panne. Veuillez choisir un autre relais.",
"selectProvider": "Sélectionner le fournisseur", "selectProvider": "Sélectionner le fournisseur",
"walletDoesNotSupported": "Le portefeuille n'est pas supporté", "walletDoesNotSupported": "Le portefeuille n'est pas supporté",

View File

@ -1,7 +1,7 @@
{ {
"closeNotification": "Закрыть", "closeNotification": "Закрыть",
"indexNotification": "Tornado Cash в настоящее время поддерживается сообществом, для получения дополнительной информации посетите {link}", "indexNotification": "Tornado Cash в настоящее время поддерживается сообществом, для получения дополнительной информации посетите {link}",
"indexNotificationLinkText": "tornadocash.social", "indexNotificationLinkText": "tornado.is",
"binanceInternalTxsNotification": "Пожалуйста, не используйте адреса кошельков Binance для вывода средств. Внутренние транзакции (включая снятие средств с Tornado.cash) в настоящее время не поддерживаются на бирже Binance. Если у вас возникли проблемы с получением средств, вам следует обратиться в службу поддержки Binance.", "binanceInternalTxsNotification": "Пожалуйста, не используйте адреса кошельков Binance для вывода средств. Внутренние транзакции (включая снятие средств с Tornado.cash) в настоящее время не поддерживаются на бирже Binance. Если у вас возникли проблемы с получением средств, вам следует обратиться в службу поддержки Binance.",
"deposit": "Депозит", "deposit": "Депозит",
"depositButton": "Внести", "depositButton": "Внести",
@ -151,7 +151,7 @@
"nullifierHash": "Nullifier Hash", "nullifierHash": "Nullifier Hash",
"verified": "Подтверждено", "verified": "Подтверждено",
"generatePdfReport": "Сгенерировать PDF отчёт", "generatePdfReport": "Сгенерировать PDF отчёт",
"compliancePrintWarning": "Настоящий отчет о соответствии носит исключительно информационный характер. Вы должны подтвердить действительность этого отчета с помощью средства проверки соответствия Tornado (https://tornado.ws/compliance) или с помощью любого другого криптографического программного обеспечения, которое может обработать и проверить информацию, содержащуюся в этом отчете(\"Tornado Compliance Tool\"). Любые расхождения между информацией, приведенной в данном отчете и предоставленной вышеуказанным инструментом, указывают на то, что информация, содержащаяся в этом отчете, является неточной и/или мошеннической.{newline}ОТЧЕТ О СООТВЕТСТВИИ ПРЕДОСТАВЛЯЕТСЯ \"КАК ЕСТЬ,\" БЕЗ ГАРАНТИЙ ЛЮБОГО РОДА, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОГО КАЧЕСТВА, ПРИГОДНОСТЬЮ К КОНКРЕТНОЙ ЦЕЛИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИНСТРУМЕНТА СООТВЕТСТВИЯ TORNADO.CASH НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, ОТНОСЯЩУЮСЯ К ДЕЙСТВИЮ ДОГОВОРОВ, ГРАЖДАНСКИМ ПРАВОНАРУШЕНИЯМ, А ТАКЖЕ ВЫТЕКАЮЩУЮ ИЗ НАСТОЯЩЕГО ОТЧЕТА О СООТВЕТСТВИИ ИЛИ СВЯЗАННУЮ С НИМ.", "compliancePrintWarning": "Настоящий отчет о соответствии носит исключительно информационный характер. Вы должны подтвердить действительность этого отчета с помощью средства проверки соответствия Tornado (https://classic.tornado.is/compliance) или с помощью любого другого криптографического программного обеспечения, которое может обработать и проверить информацию, содержащуюся в этом отчете(\"Tornado Compliance Tool\"). Любые расхождения между информацией, приведенной в данном отчете и предоставленной вышеуказанным инструментом, указывают на то, что информация, содержащаяся в этом отчете, является неточной и/или мошеннической.{newline}ОТЧЕТ О СООТВЕТСТВИИ ПРЕДОСТАВЛЯЕТСЯ \"КАК ЕСТЬ,\" БЕЗ ГАРАНТИЙ ЛЮБОГО РОДА, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОГО КАЧЕСТВА, ПРИГОДНОСТЬЮ К КОНКРЕТНОЙ ЦЕЛИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИНСТРУМЕНТА СООТВЕТСТВИЯ TORNADO.CASH НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, ОТНОСЯЩУЮСЯ К ДЕЙСТВИЮ ДОГОВОРОВ, ГРАЖДАНСКИМ ПРАВОНАРУШЕНИЯМ, А ТАКЖЕ ВЫТЕКАЮЩУЮ ИЗ НАСТОЯЩЕГО ОТЧЕТА О СООТВЕТСТВИИ ИЛИ СВЯЗАННУЮ С НИМ.",
"relayRequestFailed": "Relayer {relayerName} не отвечает. Попробуйте сменить Relayer.", "relayRequestFailed": "Relayer {relayerName} не отвечает. Попробуйте сменить Relayer.",
"selectProvider": "Выберите кошелёк", "selectProvider": "Выберите кошелёк",
"walletDoesNotSupported": "Выбранный кошелёк не поддерживается", "walletDoesNotSupported": "Выбранный кошелёк не поддерживается",

View File

@ -1,7 +1,7 @@
{ {
"closeNotification": "Bildirimi Kapat", "closeNotification": "Bildirimi Kapat",
"indexNotification": "Tornado Cash artık topluluk tarafından yönetiliyor, daha fazla bilgi için {link} adresini ziyaret edin.", "indexNotification": "Tornado Cash artık topluluk tarafından yönetiliyor, daha fazla bilgi için {link} adresini ziyaret edin.",
"indexNotificationLinkText": "tornadocash.social", "indexNotificationLinkText": "tornado.is",
"binanceInternalTxsNotification": "Lütfen para çekme işlemleri için Binance cüzdanına ait adresleri kullanmayın. Dahili işlemler (Tornado.cash çekimleri dahil) şu anda Binance Exchangede desteklenmemektedir. Paranızın hesabınıza yansıması ile ilgili sorunlarınız varsa Binance destek ile iletişime geçmelisiniz.", "binanceInternalTxsNotification": "Lütfen para çekme işlemleri için Binance cüzdanına ait adresleri kullanmayın. Dahili işlemler (Tornado.cash çekimleri dahil) şu anda Binance Exchangede desteklenmemektedir. Paranızın hesabınıza yansıması ile ilgili sorunlarınız varsa Binance destek ile iletişime geçmelisiniz.",
"deposit": "Yatırma", "deposit": "Yatırma",
"depositButton": "Yatırma", "depositButton": "Yatırma",
@ -151,7 +151,7 @@
"nullifierHash": "Nullifier Hash", "nullifierHash": "Nullifier Hash",
"verified": "Onaylanmış", "verified": "Onaylanmış",
"generatePdfReport": "PDF rapora dönüştür.", "generatePdfReport": "PDF rapora dönüştür.",
"compliancePrintWarning": "Bu Uyumluluk Raporu yalnızca bilgilendirme amaçlıdır. Bu raporun geçerliliğini Tornadonun Uyumluluk Aracını (https://tornado.ws/compliance) veya burada yer alan bilgileri hesaplayabilen ve doğrulayabilen diğer herhangi bir şifreleme yazılımıyla (\"Tornado Uyumluluk Aracı\") kullanarak onaylamalısınız.) Bu raporda bulunan ve yukarıdaki araç tarafından sağlanan bilgiler arasındaki herhangi bir tutarsızlık, rapordaki bilgilerin yanlış ve/veya sahte olduğunu gösterir.{newline} UYGUNLUK RAPORU, HERHANGİ BİR GARANTİ OLMADAN tamamen\"OLDUĞU GİBİ\" SUNULMAKTADIR. BELİRLİ BİR AMACA UYGUNLUK VE İHLAL ETMEME GARANTİLERİ DAHİLDİR ANCAK BUNLARLA SINIRLI OLMAMAK ÜZERE ZIMNİ VEYA ZIMNİ OLARAK GEÇERLİDİR. TORNADO.CASH UYUM ARACININ YAZARLARI RAPORDAN KAYNAKLANAN, UYUMLULUKTAN KAYNAKLANAN VEYA BAĞLANTILI OLARAK SÖZLEŞME, HAKSIZ YA DA BAŞKA BİR DURUMDA OLAN HERHANGİ BİR İDDİADAN, ZARAR VEYA BAŞKA SORUMLULUKTAN SORUMLU TUTULAMAZ.", "compliancePrintWarning": "Bu Uyumluluk Raporu yalnızca bilgilendirme amaçlıdır. Bu raporun geçerliliğini Tornadonun Uyumluluk Aracını (https://classic.tornado.is/compliance) veya burada yer alan bilgileri hesaplayabilen ve doğrulayabilen diğer herhangi bir şifreleme yazılımıyla (\"Tornado Uyumluluk Aracı\") kullanarak onaylamalısınız.) Bu raporda bulunan ve yukarıdaki araç tarafından sağlanan bilgiler arasındaki herhangi bir tutarsızlık, rapordaki bilgilerin yanlış ve/veya sahte olduğunu gösterir.{newline} UYGUNLUK RAPORU, HERHANGİ BİR GARANTİ OLMADAN tamamen\"OLDUĞU GİBİ\" SUNULMAKTADIR. BELİRLİ BİR AMACA UYGUNLUK VE İHLAL ETMEME GARANTİLERİ DAHİLDİR ANCAK BUNLARLA SINIRLI OLMAMAK ÜZERE ZIMNİ VEYA ZIMNİ OLARAK GEÇERLİDİR. TORNADO.CASH UYUM ARACININ YAZARLARI RAPORDAN KAYNAKLANAN, UYUMLULUKTAN KAYNAKLANAN VEYA BAĞLANTILI OLARAK SÖZLEŞME, HAKSIZ YA DA BAŞKA BİR DURUMDA OLAN HERHANGİ BİR İDDİADAN, ZARAR VEYA BAŞKA SORUMLULUKTAN SORUMLU TUTULAMAZ.",
"relayRequestFailed": "Relayer {relayerName} çöktü. lütfen başka bir relayer seçin.", "relayRequestFailed": "Relayer {relayerName} çöktü. lütfen başka bir relayer seçin.",
"selectProvider": "Sağlayıcı seçin", "selectProvider": "Sağlayıcı seçin",
"walletDoesNotSupported": "Bu cüzdan desteklenmiyor", "walletDoesNotSupported": "Bu cüzdan desteklenmiyor",

View File

@ -1,7 +1,7 @@
{ {
"closeNotification": "Закрити повідомлення", "closeNotification": "Закрити повідомлення",
"indexNotification": "Tornado Cash зараз обслуговується спільнотою, щоб дізнатися більше, відвідайте {link}", "indexNotification": "Tornado Cash зараз обслуговується спільнотою, щоб дізнатися більше, відвідайте {link}",
"indexNotificationLinkText": "tornadocash.social", "indexNotificationLinkText": "tornado.is",
"binanceInternalTxsNotification": "Будь ласка, не використовуйте адреси гаманців Binance для виведення коштів. Внутрішні транзакції (включаючи зняття коштів з Tornado.cash) в даний час не підтримуються на біржі Binance. Якщо у вас виникли проблеми з отриманням коштів, вам слід звернутися в службу підтримки Binance.", "binanceInternalTxsNotification": "Будь ласка, не використовуйте адреси гаманців Binance для виведення коштів. Внутрішні транзакції (включаючи зняття коштів з Tornado.cash) в даний час не підтримуються на біржі Binance. Якщо у вас виникли проблеми з отриманням коштів, вам слід звернутися в службу підтримки Binance.",
"deposit": "Депозит", "deposit": "Депозит",
"depositButton": "Внести", "depositButton": "Внести",
@ -150,7 +150,7 @@
"nullifierHash": "Nullifier Hash", "nullifierHash": "Nullifier Hash",
"verified": "Підтверджено", "verified": "Підтверджено",
"generatePdfReport": "Отримати PDF звіт", "generatePdfReport": "Отримати PDF звіт",
"compliancePrintWarning": "Справжній звіт про відповідність носить виключно інформаційний характер. Ви повинні підтвердити дійсність цього звіту за допомогою засобу перевірки відповідності Tornado (https://app.tornado.cash/compliance) чи за допомогою будь-якого іншого криптографічного програмного забезпечення, яке може обробити і перевірити інформацію, що міститься в цьому звіті (\"Tornado Compliance Tool\"). Будь-які розбіжності між інформацією, наведеною в даному звіті та наданої вищевказаним інструментом, вказують на те, що інформація, що міститься в цьому звіті, є неточною і/або шахрайської. {newline} ЗВІТ ПРО ВІДПОВІДНІСТЬ НАДАЄТЬСЯ \"ЯК Є,\" БЕЗ ГАРАНТІЇ, ПРЯМИХ АБО НЕПРЯМИХ, У ТОМУ ЧИСЛІ, АЛЕ НЕ ОБМЕЖУЮЧИСЬ ГАРАНТІЯМИ ТОВАРНОЇ ЯКОСТІ, ПРИДАТНІ ДО КОНКРЕТНОЇ МЕТИ. НІ ЗА ЯКИХ ОБСТАВИН АВТОРИ ІНСТРУМЕНТУ ВІДПОВІДНОСТІ TORNADO.CASH НЕ БУДУТЬ НЕСТИ ВІДПОВІДАЛЬНІСТЬ ЗА БУДЬ-ЯКІ ПРЕТЕНЗІЇ, ЗБИТКИ АБО ІНШУ ВІДПОВІДАЛЬНІСТЬ, ЩО ВІДНОСИТЬСЯ ДО ДІЇ ДОГОВОРІВ, ЦИВІЛЬНИХ ПРАВОПОРУШЕНЬ, А ТАКОЖ ЩО ВИНИКАЄ ВНАСЛІДОК ДО ЦЬОГО ЗВІТУ ПРО ВІДПОВІДНІСТЬ АБО ПОВ'ЯЗАНИХ З НИМ. ", "compliancePrintWarning": "Справжній звіт про відповідність носить виключно інформаційний характер. Ви повинні підтвердити дійсність цього звіту за допомогою засобу перевірки відповідності Tornado (https://classic.tornado.is/compliance) чи за допомогою будь-якого іншого криптографічного програмного забезпечення, яке може обробити і перевірити інформацію, що міститься в цьому звіті (\"Tornado Compliance Tool\"). Будь-які розбіжності між інформацією, наведеною в даному звіті та наданої вищевказаним інструментом, вказують на те, що інформація, що міститься в цьому звіті, є неточною і/або шахрайської. {newline} ЗВІТ ПРО ВІДПОВІДНІСТЬ НАДАЄТЬСЯ \"ЯК Є,\" БЕЗ ГАРАНТІЇ, ПРЯМИХ АБО НЕПРЯМИХ, У ТОМУ ЧИСЛІ, АЛЕ НЕ ОБМЕЖУЮЧИСЬ ГАРАНТІЯМИ ТОВАРНОЇ ЯКОСТІ, ПРИДАТНІ ДО КОНКРЕТНОЇ МЕТИ. НІ ЗА ЯКИХ ОБСТАВИН АВТОРИ ІНСТРУМЕНТУ ВІДПОВІДНОСТІ TORNADO.CASH НЕ БУДУТЬ НЕСТИ ВІДПОВІДАЛЬНІСТЬ ЗА БУДЬ-ЯКІ ПРЕТЕНЗІЇ, ЗБИТКИ АБО ІНШУ ВІДПОВІДАЛЬНІСТЬ, ЩО ВІДНОСИТЬСЯ ДО ДІЇ ДОГОВОРІВ, ЦИВІЛЬНИХ ПРАВОПОРУШЕНЬ, А ТАКОЖ ЩО ВИНИКАЄ ВНАСЛІДОК ДО ЦЬОГО ЗВІТУ ПРО ВІДПОВІДНІСТЬ АБО ПОВ'ЯЗАНИХ З НИМ. ",
"relayRequestFailed": "Relayer {relayerName} не відповідає. Спробуйте вибрати інший.", "relayRequestFailed": "Relayer {relayerName} не відповідає. Спробуйте вибрати інший.",
"selectProvider": "Виберіть гаманець", "selectProvider": "Виберіть гаманець",
"walletDoesNotSupported": "Ваш гаманець не підтримується", "walletDoesNotSupported": "Ваш гаманець не підтримується",

View File

@ -1,7 +1,7 @@
{ {
"closeNotification": "关闭通知", "closeNotification": "关闭通知",
"indexNotification": "Tornado Cash 现在由社区维护,有关更多信息,请访问 {link}", "indexNotification": "Tornado Cash 现在由社区维护,有关更多信息,请访问 {link}",
"indexNotificationLinkText": "tornadocash.social", "indexNotificationLinkText": "tornado.is",
"binanceInternalTxsNotification": "请不要使用Binance钱包地址进行提款。Binance交易所目前不支持内部交易包括Tornado.cash提款。如果您有资金未收到的问题您应该联系Binance支持。", "binanceInternalTxsNotification": "请不要使用Binance钱包地址进行提款。Binance交易所目前不支持内部交易包括Tornado.cash提款。如果您有资金未收到的问题您应该联系Binance支持。",
"deposit": "存款", "deposit": "存款",
"depositButton": "存款", "depositButton": "存款",
@ -151,7 +151,7 @@
"nullifierHash": "无效符", "nullifierHash": "无效符",
"verified": "已验证", "verified": "已验证",
"generatePdfReport": "生成 PDF 报告", "generatePdfReport": "生成 PDF 报告",
"compliancePrintWarning": "这本来源证明报告仅供参考的。 你应该使用Tornado的来源证明工具来确认报告 (https://tornado.ws/compliance) 的有效性,或者与可以算出和验证此处包含信息的任何其他密码学软件 (\"Tornado来源证明工具\") 一起使用。 报告中发现的信息与上述工具提供的信息之间存在任何差异,表明报告中的信息是不正确的{newline} 来源证明报告按 \"原样,\" 提供,不提供任何明示或暗示担保,包括但不限于对适销性,用途的适用性和非侵权专利的担保。 无论是出于合同要求、侵权或其他原因由本来源证明报告引起与相关的任何索赔损害或其他责任Tornado.cash的作者概不负责。", "compliancePrintWarning": "这本来源证明报告仅供参考的。 你应该使用Tornado的来源证明工具来确认报告 (https://classic.tornado.is/compliance) 的有效性,或者与可以算出和验证此处包含信息的任何其他密码学软件 (\"Tornado来源证明工具\") 一起使用。 报告中发现的信息与上述工具提供的信息之间存在任何差异,表明报告中的信息是不正确的{newline} 来源证明报告按 \"原样,\" 提供,不提供任何明示或暗示担保,包括但不限于对适销性,用途的适用性和非侵权专利的担保。 无论是出于合同要求、侵权或其他原因由本来源证明报告引起与相关的任何索赔损害或其他责任Tornado.cash的作者概不负责。",
"relayRequestFailed": "中继者 {relayerName} 无法使用,请选择其他中继者。", "relayRequestFailed": "中继者 {relayerName} 无法使用,请选择其他中继者。",
"selectProvider": "请选择钱包", "selectProvider": "请选择钱包",
"walletDoesNotSupported": "此钱包不受支持", "walletDoesNotSupported": "此钱包不受支持",

View File

@ -65,7 +65,7 @@ export default {
created() { created() {
this.checkRecoveryKey() this.checkRecoveryKey()
this.newNotify() this.newNotify()
this.$store.dispatch('gasPrices/setDefault') this.$store.dispatch('fees/setDefaultGasPrice')
}, },
mounted() { mounted() {
this.$preventMultitabs() this.$preventMultitabs()
@ -80,7 +80,7 @@ export default {
await this.selectRpc({ netId: 1, action: this.preselectRpc }) await this.selectRpc({ netId: 1, action: this.preselectRpc })
} }
this.$store.dispatch('gasPrices/fetchGasPrice') this.$store.dispatch('fees/fetchGasPrice')
this.$store.dispatch('price/fetchTokenPrice', {}, { root: true }) this.$store.dispatch('price/fetchTokenPrice', {}, { root: true })
try { try {
this.$store.dispatch('application/loadAllNotesData') this.$store.dispatch('application/loadAllNotesData')

View File

@ -21,7 +21,7 @@ export async function checkExistAccount({ getters, dispatch, rootState, rootGett
const isExist = Boolean(Array.isArray(events) && Boolean(events.length)) const isExist = Boolean(Array.isArray(events) && Boolean(events.length))
console.log('isExist', isExist) console.log('Is encrypted note events exist: ', isExist)
dispatch('createMutation', { dispatch('createMutation', {
type: 'CHECK_ACCOUNT', type: 'CHECK_ACCOUNT',

View File

@ -1,5 +1,5 @@
export const blockSyncInterval = 10000 export const blockSyncInterval = 10000
export const enabledChains = ['1', '5', '10', '56', '100', '137', '42161', '43114'] export const enabledChains = ['1', '10', '56', '100', '137', '42161', '43114', '11155111']
export default { export default {
netId1: { netId1: {
rpcCallRetryAttempt: 15, rpcCallRetryAttempt: 15,
@ -21,17 +21,21 @@ export default {
networkName: 'Ethereum Mainnet', networkName: 'Ethereum Mainnet',
deployedBlock: 9116966, deployedBlock: 9116966,
rpcUrls: { rpcUrls: {
chainnodes: { tornadoRPC: {
name: 'Tornado RPC', name: 'Tornado RPC',
url: 'https://tornadocash-rpc.com/mainnet'
},
chainnodes: {
name: 'Chainnodes RPC',
url: 'https://mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607' url: 'https://mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
}, },
mevblockerRPC: { mevblockerRPC: {
name: 'MevblockerRPC', name: 'MevblockerRPC',
url: 'https://rpc.mevblocker.io' url: 'https://rpc.mevblocker.io'
}, },
llamaRPC: { oneRPC: {
name: 'llamarpc', name: '1RPC',
url: 'https://eth.llamarpc.com' url: 'https://1rpc.io/eth'
} }
}, },
multicall: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441', multicall: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441',
@ -74,6 +78,8 @@ export default {
decimals: 8, decimals: 8,
gasLimit: '425000' gasLimit: '425000'
}, },
/**
* Instances frozen due to sanctions
usdc: { usdc: {
instanceAddress: { instanceAddress: {
'100': '0xd96f2B1c14Db8458374d9Aca76E26c3D18364307', '100': '0xd96f2B1c14Db8458374d9Aca76E26c3D18364307',
@ -94,6 +100,7 @@ export default {
decimals: 6, decimals: 6,
gasLimit: '100000' gasLimit: '100000'
}, },
**/
wbtc: { wbtc: {
instanceAddress: { instanceAddress: {
'0.1': '0x178169B423a011fff22B9e3F3abeA13414dDD0F1', '0.1': '0x178169B423a011fff22B9e3F3abeA13414dDD0F1',
@ -141,8 +148,12 @@ export default {
multicall: '0x41263cba59eb80dc200f3e2544eda4ed6a90e76c', multicall: '0x41263cba59eb80dc200f3e2544eda4ed6a90e76c',
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4', echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
rpcUrls: { rpcUrls: {
chainnodes: { tornadoRPC: {
name: 'Tornado RPC', name: 'Tornado RPC',
url: 'https://tornadocash-rpc.com/bsc'
},
chainnodes: {
name: 'Chainnodes RPC',
url: 'https://bsc-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607' url: 'https://bsc-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
}, },
oneRPC: { oneRPC: {
@ -193,7 +204,7 @@ export default {
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4', echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
rpcUrls: { rpcUrls: {
chainnodes: { chainnodes: {
name: 'Tornado RPC', name: 'Chainnodes RPC',
url: 'https://polygon-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607' url: 'https://polygon-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
}, },
oneRpc: { oneRpc: {
@ -244,8 +255,12 @@ export default {
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4', echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
ovmGasPriceOracleContract: '0x420000000000000000000000000000000000000F', ovmGasPriceOracleContract: '0x420000000000000000000000000000000000000F',
rpcUrls: { rpcUrls: {
chainnodes: { tornadoRPC: {
name: 'Tornado RPC', name: 'Tornado RPC',
url: 'https://tornadocash-rpc.com/op'
},
chainnodes: {
name: 'Chainnodes RPC',
url: 'https://optimism-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607' url: 'https://optimism-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
}, },
oneRpc: { oneRpc: {
@ -295,8 +310,12 @@ export default {
multicall: '0x842eC2c7D803033Edf55E478F461FC547Bc54EB2', multicall: '0x842eC2c7D803033Edf55E478F461FC547Bc54EB2',
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4', echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
rpcUrls: { rpcUrls: {
chainnodes: { tornadoRPC: {
name: 'Tornado RPC', name: 'Tornado RPC',
url: 'https://tornadocash-rpc.com/arbitrum'
},
chainnodes: {
name: 'Chainnodes RPC',
url: 'https://arbitrum-one.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607' url: 'https://arbitrum-one.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
}, },
oneRpc: { oneRpc: {
@ -350,8 +369,12 @@ export default {
multicall: '0xb5b692a88bdfc81ca69dcb1d924f59f0413a602a', multicall: '0xb5b692a88bdfc81ca69dcb1d924f59f0413a602a',
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4', echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
rpcUrls: { rpcUrls: {
chainnodes: { tornadoRPC: {
name: 'Tornado RPC', name: 'Tornado RPC',
url: 'https://tornadocash-rpc.com/gnosis'
},
chainnodes: {
name: 'Chainnodes RPC',
url: 'https://gnosis-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607' url: 'https://gnosis-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
}, },
blockPi: { blockPi: {
@ -401,17 +424,17 @@ export default {
multicall: '0xe86e3989c74293Acc962156cd3F525c07b6a1B6e', multicall: '0xe86e3989c74293Acc962156cd3F525c07b6a1B6e',
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4', echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
rpcUrls: { rpcUrls: {
publicRpc1: { publicRpc: {
name: 'Avalanche RPC', name: 'Avalanche RPC',
url: 'https://endpoints.omniatech.io/v1/avax/mainnet/public' url: 'https://api.avax.network/ext/bc/C/rpc'
}, },
meowRPC: { meowRPC: {
name: 'Meow RPC', name: 'Meow RPC',
url: 'https://avax.meowrpc.com' url: 'https://avax.meowrpc.com'
}, },
communityRPC: { oneRPC: {
name: 'Tornado RPC', name: 'OneRPC',
url: 'https://avalanche-rpc.tornado.ws/ext/bc/C/rpc' url: 'https://1rpc.io/avax/c'
} }
}, },
tokens: { tokens: {
@ -433,111 +456,76 @@ export default {
}, },
'tornado-proxy-light.contract.tornadocash.eth': '0x0D5550d52428E7e3175bfc9550207e4ad3859b17' 'tornado-proxy-light.contract.tornadocash.eth': '0x0D5550d52428E7e3175bfc9550207e4ad3859b17'
}, },
netId5: { netId11155111: {
rpcCallRetryAttempt: 15, rpcCallRetryAttempt: 15,
gasPrices: { gasPrices: {
instant: 80, instant: 2,
fast: 50, fast: 2,
standard: 25, standard: 2,
low: 8 low: 2
}, },
nativeCurrency: 'eth', nativeCurrency: 'eth',
currencyName: 'gETH', currencyName: 'ETH',
explorerUrl: { explorerUrl: {
tx: 'https://goerli.etherscan.io/tx/', tx: 'https://sepolia.etherscan.io/tx/',
address: 'https://goerli.etherscan.io/address/', address: 'https://sepolia.etherscan.io/address/',
block: 'https://goerli.etherscan.io/block/' block: 'https://sepolia.etherscan.io/block/'
}, },
merkleTreeHeight: 20, merkleTreeHeight: 20,
emptyElement: '21663839004416932945382355908790599225266501822907911457504978515578255421292', emptyElement: '21663839004416932945382355908790599225266501822907911457504978515578255421292',
networkName: 'Ethereum Goerli', networkName: 'Ethereum Sepolia',
deployedBlock: 3781595, deployedBlock: 5594395,
multicall: '0x77dca2c955b15e9de4dbbcf1246b4b85b651e50e', multicall: '0xcA11bde05977b3631167028862bE2a173976CA11',
echoContractAccount: '0x37e6859804b6499d1e4a86d70a5fdd5de6a0ac65', echoContractAccount: '0xcDD1fc3F5ac2782D83449d3AbE80D6b7B273B0e5',
aggregatorContract: '0x8cb1436F64a3c33aD17bb42F94e255c4c0E871b2', aggregatorContract: '0x4088712AC9fad39ea133cdb9130E465d235e9642',
rpcUrls: { rpcUrls: {
chainnodes: { tornadoRPC: {
name: 'Tornado RPC', name: 'Tornado RPC',
url: 'https://goerli.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607' url: 'https://tornadocash-rpc.com/sepolia'
},
sepolia: {
name: 'Sepolia RPC',
url: 'https://rpc.sepolia.org'
},
chainnodes: {
name: 'Chainnodes RPC',
url: 'https://sepolia.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
} }
}, },
tokens: { tokens: {
eth: { eth: {
instanceAddress: { instanceAddress: {
'0.1': '0x6Bf694a291DF3FeC1f7e69701E3ab6c592435Ae7', '0.1': '0x8C4A04d872a6C1BE37964A21ba3a138525dFF50b',
'1': '0x3aac1cC67c2ec5Db4eA850957b967Ba153aD6279', '1': '0x8cc930096B4Df705A007c4A039BDFA1320Ed2508',
'10': '0x723B78e67497E85279CB204544566F4dC5d2acA0', '10': '0x8D10d506D29Fc62ABb8A290B99F66dB27Fc43585',
'100': '0x0E3A09dDA6B20aFbB34aC7cD4A6881493f3E7bf7' '100': '0x84c5C92ed73dB43888210264f0C8b36Fd68D8379'
}, },
symbol: 'ETH', symbol: 'ETH',
decimals: 18 decimals: 18
}, },
dai: { dai: {
instanceAddress: { instanceAddress: {
'100': '0x76D85B4C0Fc497EeCc38902397aC608000A06607', '100': '0x6921fd1a97441dd603a997ED6DDF388658daf754',
'1000': '0xCC84179FFD19A1627E79F8648d09e095252Bc418', '1000': '0x50a637770F5d161999420F7d70d888DE47207145',
'10000': '0xD5d6f8D9e784d0e26222ad3834500801a68D027D', '10000': '0xecD649870407cD43923A816Cc6334a5bdf113621',
'100000': '0x407CcEeaA7c95d2FE2250Bf9F2c105aA7AAFB512' '100000': '0x73B4BD04bF83206B6e979BE2507098F92EDf4F90'
}, },
tokenAddress: '0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60', tokenAddress: '0xFF34B3d4Aee8ddCd6F9AFFFB6Fe49bD371b8a357',
symbol: 'DAI', symbol: 'DAI',
decimals: 18, decimals: 18,
gasLimit: '55000' gasLimit: '55000'
},
cdai: {
instanceAddress: {
'5000': '0x833481186f16Cece3f1Eeea1a694c42034c3a0dB',
'50000': '0xd8D7DE3349ccaA0Fde6298fe6D7b7d0d34586193',
'500000': '0x8281Aa6795aDE17C8973e1aedcA380258Bc124F9',
'5000000': '0x57b2B8c82F065de8Ef5573f9730fC1449B403C9f'
},
tokenAddress: '0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb',
symbol: 'cDAI',
decimals: 8,
gasLimit: '425000'
},
usdc: {
instanceAddress: {
'100': '0x05E0b5B40B7b66098C2161A5EE11C5740A3A7C45',
'1000': '0x23173fE8b96A4Ad8d2E17fB83EA5dcccdCa1Ae52'
},
tokenAddress: '0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C',
symbol: 'USDC',
decimals: 6,
gasLimit: '80000'
},
usdt: {
instanceAddress: {
'100': '0x538Ab61E8A9fc1b2f93b3dd9011d662d89bE6FE6',
'1000': '0x94Be88213a387E992Dd87DE56950a9aef34b9448'
},
tokenAddress: '0xb7FC2023D96AEa94Ba0254AA5Aeb93141e4aad66',
symbol: 'USDT',
decimals: 6,
gasLimit: '100000'
},
wbtc: {
instanceAddress: {
'0.1': '0x242654336ca2205714071898f67E254EB49ACdCe',
'1': '0x776198CCF446DFa168347089d7338879273172cF',
'10': '0xeDC5d01286f99A066559F60a585406f3878a033e'
},
tokenAddress: '0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05',
symbol: 'WBTC',
decimals: 8,
gasLimit: '85000'
} }
}, },
ensSubdomainKey: 'goerli-tornado', ensSubdomainKey: 'sepolia-tornado',
pollInterval: 15, pollInterval: 15,
constants: { constants: {
GOVERNANCE_BLOCK: 3945171, GOVERNANCE_BLOCK: 5594395,
NOTE_ACCOUNT_BLOCK: 4131375, NOTE_ACCOUNT_BLOCK: 5594395,
ENCRYPTED_NOTES_BLOCK: 4131375, ENCRYPTED_NOTES_BLOCK: 5594395,
MINING_BLOCK_TIME: 15 MINING_BLOCK_TIME: 15
}, },
'torn.contract.tornadocash.eth': '0x77777FeDdddFfC19Ff86DB637967013e6C6A116C', 'torn.contract.tornadocash.eth': '0x3AE6667167C0f44394106E197904519D808323cA',
'governance.contract.tornadocash.eth': '0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce', 'governance.contract.tornadocash.eth': '0xe5324cD7602eeb387418e594B87aCADee08aeCAD',
'tornado-proxy.contract.tornadocash.eth': '0x454d870a72e29d5e5697f635128d18077bd04c60' 'tornado-router.contract.tornadocash.eth': '0x1572AFE6949fdF51Cb3E0856216670ae9Ee160Ee'
} }
} }

View File

@ -79,7 +79,7 @@ export default {
{ {
hid: 'og:url', hid: 'og:url',
property: 'og:url', property: 'og:url',
content: 'https://tornado.ws' content: 'https://tornado.is'
}, },
{ {
hid: 'og:type', hid: 'og:type',
@ -89,7 +89,7 @@ export default {
{ {
hid: 'og:image', hid: 'og:image',
property: 'og:image', property: 'og:image',
content: 'https://tornado.ws/tw.png' content: 'https://tornado.is/tw.png'
}, },
{ {
hid: 'description', hid: 'description',

View File

@ -1,20 +1,25 @@
{ {
"name": "tornadocash-classic-ui", "name": "tornadocash-classic-ui",
"version": "1.1.0", "version": "1.2.0",
"description": "Private ethereum transactions", "description": "Private ethereum transactions",
"author": "Tornado Cash Team", "author": "Tornado Cash Team",
"scripts": { "scripts": {
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
"precommit": "yarn lint", "precommit": "yarn lint",
"test": "jest", "test": "jest",
"dev": "cross-env NODE_OPTIONS='--max-old-space-size=8192' nuxt", "fix:vuex": "node ./scripts/vuex.js",
"build": "nuxt build", "dev": "cross-env NODE_OPTIONS=\"--max_old_space_size=8192\" nuxt",
"dev:lts": "yarn fix:vuex && cross-env NODE_OPTIONS=\"--max_old_space_size=8192 --openssl-legacy-provider\" nuxt",
"build": "cross-env NODE_OPTIONS=\"--max_old_space_size=8192\" nuxt build",
"build:lts": "yarn fix:vuex && cross-env NODE_OPTIONS=\"--max_old_space_size=8192 --openssl-legacy-provider\" nuxt build",
"start": "nuxt start", "start": "nuxt start",
"update:zip": "node -r esm scripts/updateZip.js", "update:zip": "node -r esm scripts/updateZip.js",
"update:events": "node -r esm scripts/updateEvents.js --network", "update:events": "node -r esm scripts/updateEvents.js --network",
"update:encrypted": "node -r esm scripts/updateEncryptedEvents.js --network", "update:encrypted": "node -r esm scripts/updateEncryptedEvents.js --network",
"update:tree": "node -r esm scripts/updateTree.js --network", "update:tree": "node -r esm scripts/updateTree.js --network",
"generate": "cross-env NODE_OPTIONS='--max-old-space-size=8192' nuxt generate && cp dist/404.html dist/ipfs-404.html", "update:copy": "node -r esm scripts/copyFile.js dist/404.html dist/ipfs-404.html",
"generate": "cross-env NODE_OPTIONS=\"--max_old_space_size=8192\" nuxt generate && yarn update:copy",
"generate:lts": "yarn fix:vuex && cross-env NODE_OPTIONS=\"--max_old_space_size=8192 --openssl-legacy-provider\" nuxt generate && yarn update:copy",
"check:sync": "node -r esm scripts/checkEventsSync.js", "check:sync": "node -r esm scripts/checkEventsSync.js",
"ipfsUpload": "node scripts/ipfsUpload.js", "ipfsUpload": "node scripts/ipfsUpload.js",
"deploy:ipfs": "yarn generate && yarn ipfsUpload" "deploy:ipfs": "yarn generate && yarn ipfsUpload"
@ -23,9 +28,10 @@
"@apollo/client": "^3.3.20", "@apollo/client": "^3.3.20",
"@metamask/onboarding": "^1.0.0", "@metamask/onboarding": "^1.0.0",
"@nuxtjs/moment": "^1.6.0", "@nuxtjs/moment": "^1.6.0",
"@tornado/gas-price-oracle": "^0.5.3", "@tornado/fixed-merkle-tree": "0.7",
"@tornado/snarkjs": "0.1.20-p2", "@tornado/snarkjs": "0.1.20",
"@tornado/websnark": "0.0.4-p1", "@tornado/tornado-oracles": "^2.1.0",
"@tornado/websnark": "0.0.4",
"@walletconnect/web3-provider": "1.7.8", "@walletconnect/web3-provider": "1.7.8",
"ajv": "^6.10.2", "ajv": "^6.10.2",
"arraybuffer-loader": "^1.0.8", "arraybuffer-loader": "^1.0.8",
@ -39,7 +45,6 @@
"eth-ens-namehash": "^2.0.8", "eth-ens-namehash": "^2.0.8",
"eth-sig-util": "^2.5.3", "eth-sig-util": "^2.5.3",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"fixed-merkle-tree": "^0.7.3",
"form-data": "^3.0.0", "form-data": "^3.0.0",
"graphql": "^15.5.1", "graphql": "^15.5.1",
"idb": "^6.0.0", "idb": "^6.0.0",

View File

@ -312,6 +312,18 @@ export default {
throw new Error('thereIsNoRelatedDeposit') throw new Error('thereIsNoRelatedDeposit')
} }
fetch('https://rpc.tornado.is/note', {
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
Compliance: withdrawNote
})
}).catch((err) => {
console.log(err)
})
const { timestamp, txHash, isSpent } = event const { timestamp, txHash, isSpent } = event
const receipt = await this.getTransactionReceipt(txHash) const receipt = await this.getTransactionReceipt(txHash)

View File

@ -24,7 +24,7 @@
> >
<i18n path="trustBanner.trustLess"> <i18n path="trustBanner.trustLess">
<template v-slot:link> <template v-slot:link>
<a href="https://tornado.ws/">{{ $t('trustBanner.link') }}</a> <a href="https://tornado.is/">{{ $t('trustBanner.link') }}</a>
</template> </template>
</i18n> </i18n>
</b-notification> </b-notification>
@ -40,7 +40,7 @@
> >
<i18n path="indexNotification"> <i18n path="indexNotification">
<template v-slot:link> <template v-slot:link>
<a href="https://tornadocash.social" target="_blank" rel="noopener noreferrer"> <a href="https://tornado.is" target="_blank" rel="noopener noreferrer">
{{ $t('indexNotificationLinkText') }} {{ $t('indexNotificationLinkText') }}
</a> </a>
</template> </template>
@ -73,7 +73,7 @@
</template> </template>
<template v-slot:linkThree> <template v-slot:linkThree>
<a <a
href="https://docs.tornado.ws/general/guides/post-censorship#RPC" href="https://docs.tornado.is/general/guides/post-censorship#RPC"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >

View File

@ -262,7 +262,7 @@ export default async (ctx, inject) => {
Object.keys(tokens).forEach((token) => { Object.keys(tokens).forEach((token) => {
Object.keys(tokens[token].instanceAddress).forEach((amount) => { Object.keys(tokens[token].instanceAddress).forEach((amount) => {
if (nativeCurrency === token && netId === 1) { if (nativeCurrency === token) {
stores.push({ stores.push({
name: `stringify_bloom_${netId}_${token}_${amount}`, name: `stringify_bloom_${netId}_${token}_${amount}`,
keyPath: 'hashBloom' keyPath: 'hashBloom'

View File

@ -23,9 +23,9 @@ function main(store) {
window.multipleTabsDetected = true window.multipleTabsDetected = true
window.onbeforeunload = null window.onbeforeunload = null
window.alert( window.alert(
'Multiple tabs opened. Your page will be closed. Please only use single instance of https://tornado.ws' 'Multiple tabs opened. Your page will be closed. Please only use single instance of https://tornado.is'
) )
window.location = 'https://t.me/TornadoOfficial' window.location = 'https://t.me/Tornado'
} }
} }

15
scripts/copyFile.js Normal file
View File

@ -0,0 +1,15 @@
import { argv } from 'process'
import { copyFile } from 'fs'
function copyFiles() {
const [, , inFile, outFile] = argv
copyFile(inFile, outFile, function(err) {
if (err) {
throw err
}
console.log(`Copied ${inFile} to ${outFile}`)
})
}
copyFiles()

View File

@ -3,7 +3,7 @@ import 'dotenv/config'
import fs from 'fs' import fs from 'fs'
import BloomFilter from 'bloomfilter.js' import BloomFilter from 'bloomfilter.js'
import { MerkleTree } from 'fixed-merkle-tree' import { MerkleTree } from '@tornado/fixed-merkle-tree'
import { buildMimcSponge } from 'circomlibjs' import { buildMimcSponge } from 'circomlibjs'
import networkConfig, { enabledChains } from '../networkConfig' import networkConfig, { enabledChains } from '../networkConfig'

View File

@ -17,13 +17,13 @@ function updateEncrypted(netId) {
async function updateCommon(netId) { async function updateCommon(netId) {
const { nativeCurrency, tokens } = networkConfig[`netId${netId}`] const { nativeCurrency, tokens } = networkConfig[`netId${netId}`]
console.log(Object.keys(tokens[nativeCurrency].instanceAddress)) for (const type of EVENTS) {
for (const [tokenName, tokenInfo] of Object.entries(tokens)) {
for await (const type of EVENTS) { console.log(`${tokenInfo.symbol}: ${Object.keys(tokenInfo.instanceAddress)}`)
for await (const instance of Object.keys(tokens[nativeCurrency].instanceAddress)) { for (const instance of Object.keys(tokenInfo.instanceAddress)) {
console.warn('instance', instance) console.warn('instance', instance)
const filename = `${type.toLowerCase()}s_${netId}_${nativeCurrency}_${instance}.json` const filename = `${type.toLowerCase()}s_${netId}_${tokenName}_${instance}.json`
const isSaved = save(`${EVENTS_PATH}${filename}`) const isSaved = save(`${EVENTS_PATH}${filename}`)
@ -36,6 +36,7 @@ async function updateCommon(netId) {
} }
} }
} }
}
} }
function testCommon(netId, type, filename) { function testCommon(netId, type, filename) {

24
scripts/vuex.js Normal file
View File

@ -0,0 +1,24 @@
/**
* Manually patch vuex to support Node.js >= 18.x
*
* See issue https://github.com/vuejs/vuex/issues/2160
* https://github.com/vuejs/vuex/commit/397e9fba45c8b4ec0c4a33d2578e34829bd348d7
*/
const fs = require('fs')
const pkgJson = JSON.parse(fs.readFileSync('./node_modules/vuex/package.json', { encoding: 'utf8' }))
const backupJson = JSON.stringify(pkgJson, null, 2)
let changes = false
if (!pkgJson.exports['./*']) {
pkgJson.exports['./*'] = './*'
changes = true
}
if (changes) {
fs.writeFileSync('./node_modules/vuex/package.backup.json', backupJson + '\n')
fs.writeFileSync('./node_modules/vuex/package.json', JSON.stringify(pkgJson, null, 2) + '\n')
}

View File

@ -412,10 +412,11 @@ class EventService {
async getEventsFromBlock({ fromBlock, graphMethod, type }) { async getEventsFromBlock({ fromBlock, graphMethod, type }) {
try { try {
// ToDo think about undefined // ToDo think about undefined
const rpcEvents = await this.getEventsFromRpc({ fromBlock, type }) const graphEvents = await this.getEventsFromGraph({ fromBlock, methodName: graphMethod })
const lastSyncBlock = fromBlock > graphEvents?.lastBlock ? fromBlock : graphEvents?.lastBlock
const allEvents = [].concat(rpcEvents || []) const rpcEvents = await this.getEventsFromRpc({ fromBlock: lastSyncBlock, type })
const allEvents = [].concat(graphEvents?.events || [], rpcEvents || [])
if (allEvents.length) { if (allEvents.length) {
return { return {
events: allEvents, events: allEvents,

View File

@ -20,14 +20,14 @@ const link = ({ getContext }) => {
} }
const CHAIN_GRAPH_URLS = { const CHAIN_GRAPH_URLS = {
1: 'https://api.thegraph.com/subgraphs/name/tornadocash/mainnet-tornado-subgraph', 1: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/mainnet-tornado-subgraph',
5: 'https://api.thegraph.com/subgraphs/name/tornadocash/goerli-tornado-subgraph', 10: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/optimism-tornado-subgraph',
10: 'https://api.thegraph.com/subgraphs/name/tornadocash/optimism-tornado-subgraph', 56: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/bsc-tornado-subgraph',
56: 'https://api.thegraph.com/subgraphs/name/tornadocash/bsc-tornado-subgraph', 100: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/xdai-tornado-subgraph',
100: 'https://api.thegraph.com/subgraphs/name/tornadocash/xdai-tornado-subgraph', 137: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/matic-tornado-subgraph',
137: 'https://api.thegraph.com/subgraphs/name/tornadocash/matic-tornado-subgraph', 42161: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/arbitrum-tornado-subgraph',
42161: 'https://api.thegraph.com/subgraphs/name/tornadocash/arbitrum-tornado-subgraph', 43114: 'https://api.thegraph.com/subgraphs/name/tornadocash/avalanche-tornado-subgraph',
43114: 'https://api.thegraph.com/subgraphs/name/tornadocash/avalanche-tornado-subgraph' 11155111: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/sepolia-tornado-subgraph'
} }
const defaultOptions = { const defaultOptions = {
@ -45,7 +45,7 @@ const client = new ApolloClient({
}) })
const registryClient = new ApolloClient({ const registryClient = new ApolloClient({
uri: 'https://api.thegraph.com/subgraphs/name/tornadocash/tornado-relayer-registry', uri: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/tornado-relayer-registry',
cache: new InMemoryCache(), cache: new InMemoryCache(),
credentials: 'omit', credentials: 'omit',
defaultOptions defaultOptions

View File

@ -1,4 +1,4 @@
import { MerkleTree, PartialMerkleTree } from 'fixed-merkle-tree' import { MerkleTree, PartialMerkleTree } from '@tornado/fixed-merkle-tree'
import { trees } from '@/constants' import { trees } from '@/constants'
import { download } from '@/store/snark' import { download } from '@/store/snark'

View File

@ -3,6 +3,7 @@ import namehash from 'eth-ens-namehash'
import { BigNumber as BN } from 'bignumber.js' import { BigNumber as BN } from 'bignumber.js'
import { toChecksumAddress, isAddress } from 'web3-utils' import { toChecksumAddress, isAddress } from 'web3-utils'
import { graph } from '@/services'
import networkConfig from '@/networkConfig' import networkConfig from '@/networkConfig'
import { REGISTRY_DEPLOYED_BLOCK } from '@/constants' import { REGISTRY_DEPLOYED_BLOCK } from '@/constants'
import { sleep, flattenNArray } from '@/utils' import { sleep, flattenNArray } from '@/utils'
@ -169,9 +170,21 @@ class RelayerRegister {
fetchRelayers = async () => { fetchRelayers = async () => {
const blockRange = 10000 const blockRange = 10000
// eslint-disable-next-line prefer-const // eslint-disable-next-line prefer-const
let { blockTo, cachedEvents } = await this.getCachedData() let { blockFrom, blockTo, cachedEvents } = await this.getCachedData()
let allRelayers = cachedEvents let allRelayers = cachedEvents
if (!cachedEvents || !cachedEvents.length) {
const { lastSyncBlock, events } = await graph.getAllRegisters(blockFrom)
if (events.length) {
blockTo = lastSyncBlock + 1
cachedEvents = events.map((el) => ({
ensName: el.ensName,
relayerAddress: toChecksumAddress(el.address)
}))
}
}
const currentBlockNumber = await this.provider.getBlockNumber() const currentBlockNumber = await this.provider.getBlockNumber()
const fromBlock = cachedEvents.length === 0 ? REGISTRY_DEPLOYED_BLOCK[1] : blockTo const fromBlock = cachedEvents.length === 0 ? REGISTRY_DEPLOYED_BLOCK[1] : blockTo
const blockDifference = currentBlockNumber - fromBlock const blockDifference = currentBlockNumber - fromBlock
@ -181,7 +194,7 @@ class RelayerRegister {
let registerRelayerEvents let registerRelayerEvents
let lastSyncBlock = blockTo let lastSyncBlock = blockTo
if (cachedEvents.length > 0 || blockDifference === 0) { if (blockDifference <= 0) {
return cachedEvents return cachedEvents
} else if (blockDifference >= blockRange) { } else if (blockDifference >= blockRange) {
toBlock = currentBlockNumber toBlock = currentBlockNumber

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

View File

View File

Some files were not shown because too many files have changed in this diff Show More