Compare commits
50 Commits
proposal-2
...
master
Author | SHA1 | Date | |
---|---|---|---|
e218b22e86 | |||
25c2fd15d2 | |||
b946a091fa | |||
400263107f | |||
3428e839ed | |||
32fc9e9bb8 | |||
a9998d3a34 | |||
4a1ece4a12 | |||
638a084011 | |||
5ad7a7acb4 | |||
b4526cb4d6 | |||
848217571f | |||
2e255b1e86 | |||
d9f070fefa | |||
835bcfbb8c | |||
|
57d3ba5ac5 | ||
|
2fcf0cb443 | ||
|
1221aad973 | ||
|
bf3d37dad6 | ||
|
5de0210127 | ||
|
63e770cf12 | ||
|
340d32b2ad | ||
|
aaa4205145 | ||
|
ca946343d2 | ||
780ccdc44c | |||
|
5ebf55204d | ||
|
2cf3b33b62 | ||
|
b288ce9356 | ||
|
9e1a3c16d2 | ||
|
d0cee4aa9a | ||
|
820a651615 | ||
|
d9d32f54a5 | ||
|
5b643d2848 | ||
|
e5bf96f896 | ||
|
1494315784 | ||
|
91889af448 | ||
|
558b6fcd0c | ||
b4e23e96b4 | |||
023c4634c3 | |||
e8a7fec326 | |||
500d2bd0a4 | |||
334412c803 | |||
6137e1328a | |||
879c8549e6 | |||
d10ea812db | |||
9210330208 | |||
fb0a5131f4 | |||
d16449bcf8 | |||
d9ae37ebb2 | |||
7db929cc8c |
5
.gitignore
vendored
5
.gitignore
vendored
@ -88,5 +88,8 @@ sw.*
|
||||
# Mac OSX
|
||||
.DS_Store
|
||||
|
||||
|
||||
# Events unarchived files
|
||||
static/*/*.json
|
||||
|
||||
# UI build archive
|
||||
dist.zip
|
2
.npmrc
2
.npmrc
@ -1 +1 @@
|
||||
@tornado:registry=https://git.tornado.ws/api/packages/tornado-packages/npm/
|
||||
@tornado:registry=https://git.tornado.is/api/packages/tornado-packages/npm/
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## 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.
|
||||
- Install [Yarn](https://yarnpkg.com/en/docs/install)
|
||||
- Install dependencies: `yarn`
|
||||
|
@ -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"
|
||||
}
|
||||
]
|
@ -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"
|
||||
}
|
||||
]
|
@ -317,8 +317,8 @@
|
||||
mask-image: url('../img/icons/ethereum.svg');
|
||||
}
|
||||
|
||||
&-ethereum-goerli {
|
||||
mask-image: url('../img/icons/goerli.svg');
|
||||
&-ethereum-sepolia {
|
||||
mask-image: url('../img/icons/ethereum.svg');
|
||||
}
|
||||
|
||||
&-optimism {
|
||||
|
@ -127,6 +127,18 @@ export default {
|
||||
},
|
||||
async _sendDeposit() {
|
||||
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 })
|
||||
this.$store.dispatch('loading/disable')
|
||||
this.$parent.close()
|
||||
|
@ -37,7 +37,15 @@
|
||||
<b-button
|
||||
tag="a"
|
||||
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"
|
||||
rel="noopener noreferrer"
|
||||
icon-right="git"
|
||||
@ -101,7 +109,7 @@ export default {
|
||||
...mapGetters('metamask', ['networkConfig', 'netId']),
|
||||
...mapGetters('txHashKeeper', ['addressExplorerUrl']),
|
||||
duneLink() {
|
||||
const mainnetNetworks = [1, 5]
|
||||
const mainnetNetworks = [1]
|
||||
|
||||
if (mainnetNetworks.includes(Number(this.netId))) {
|
||||
return 'https://dune.xyz/poma/tornado-cash_1'
|
||||
|
@ -20,7 +20,7 @@
|
||||
{{ $t('compliance') }}
|
||||
</b-navbar-item>
|
||||
<b-navbar-item
|
||||
href="https://docs.tornado.ws"
|
||||
href="https://docs.tornado.is"
|
||||
target="_blank"
|
||||
data-test="docs_link"
|
||||
rel="noopener noreferrer"
|
||||
|
@ -17,8 +17,6 @@ export default {
|
||||
switch (this.netId) {
|
||||
case 1:
|
||||
return 'Ethereum'
|
||||
case 5:
|
||||
return 'Goerli'
|
||||
case 56:
|
||||
return 'BSC Mainnet'
|
||||
case 137:
|
||||
@ -27,6 +25,8 @@ export default {
|
||||
return 'Arbitrum'
|
||||
case 43114:
|
||||
return 'Avalanche'
|
||||
case 11155111:
|
||||
return 'Sepolia'
|
||||
default:
|
||||
return this.networkName
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
</template>
|
||||
<template v-slot:description>{{ notice.description }}</template>
|
||||
</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
|
||||
</a>
|
||||
<a
|
||||
|
@ -4,7 +4,10 @@
|
||||
<div class="box-modal-title">{{ $t('withdrawalSettings') }}</div>
|
||||
<button type="button" class="delete" @click="$parent.cancel('escape')" />
|
||||
</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 />
|
||||
<WalletTab />
|
||||
</b-tabs>
|
||||
@ -46,7 +49,11 @@ export default {
|
||||
computed: {
|
||||
...mapState('application', {
|
||||
defaultWithdrawType: 'withdrawType'
|
||||
})
|
||||
}),
|
||||
...mapState('relayer', ['isLoadingRelayers', 'validRelayers']),
|
||||
isRelayersAvailable() {
|
||||
return !this.isLoadingRelayers && this.validRelayers.length > 0
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.withdrawType = this.defaultWithdrawType
|
||||
|
@ -192,7 +192,7 @@ export default {
|
||||
...mapState('relayer', ['isLoadingRelayers']),
|
||||
...mapGetters('txHashKeeper', ['txExplorerUrl']),
|
||||
...mapGetters('application', ['isNotEnoughTokens', 'selectedStatisticCurrency']),
|
||||
...mapGetters('metamask', ['networkConfig', 'netId', 'isLoggedIn', 'nativeCurrency']),
|
||||
...mapGetters('metamask', ['networkConfig', 'netId', 'isLoggedIn']),
|
||||
notEnoughDeposits() {
|
||||
if (this.depositsPast < 5) {
|
||||
return true
|
||||
@ -200,7 +200,7 @@ export default {
|
||||
return false
|
||||
},
|
||||
shouldSettingsShow() {
|
||||
return !this.hasErrorNote && !this.error.message
|
||||
return !this.isLoading && !this.error.type && !this.hasErrorNote
|
||||
},
|
||||
hasErrorNote() {
|
||||
const note = this.withdrawNote.split('-')[4]
|
||||
@ -337,9 +337,7 @@ export default {
|
||||
})
|
||||
}
|
||||
this.$store.dispatch('application/setAndUpdateStatistic', { currency, amount: Number(amount) })
|
||||
if (currency !== this.nativeCurrency) {
|
||||
this.$store.dispatch('application/setDefaultEthToReceive', { currency })
|
||||
}
|
||||
this.$store.dispatch('fees/calculateWithdrawalFeeViaRelayer', {})
|
||||
this.$store.dispatch('loading/updateProgress', { progress: -1 })
|
||||
this.depositsPast = Number(depositsPast) <= 0 ? 0 : depositsPast
|
||||
this.depositTxHash = txHash
|
||||
@ -425,9 +423,20 @@ export default {
|
||||
|
||||
console.log('\n\nYOUR NOTE DATA:')
|
||||
console.log('note:', note)
|
||||
|
||||
console.log('commitment:', commitmentHex)
|
||||
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) {
|
||||
console.log(`Get logs: ${err.message}`)
|
||||
}
|
||||
@ -453,11 +462,16 @@ export default {
|
||||
}
|
||||
|
||||
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') })
|
||||
|
||||
await this.$store.dispatch('application/prepareWithdraw', {
|
||||
note: this.withdrawNote,
|
||||
recipient: this.withdrawAddress
|
||||
recipient: rpcSend
|
||||
})
|
||||
|
||||
this.$buefy.modal.open({
|
||||
|
@ -18,7 +18,9 @@
|
||||
</div>
|
||||
<div v-if="withdrawType === 'relayer'" class="withdraw-data-item">
|
||||
{{ $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 v-if="withdrawType === 'relayer'" class="withdraw-data-item">
|
||||
{{ $t('relayerFee') }}
|
||||
@ -69,13 +71,13 @@ export default {
|
||||
},
|
||||
computed: {
|
||||
...mapState('application', ['selectedStatistic']),
|
||||
...mapState('fees', ['withdrawalNetworkFee', 'withdrawalFeeViaRelayer']),
|
||||
...mapGetters('metamask', ['networkConfig', 'nativeCurrency']),
|
||||
...mapGetters('metamask', {
|
||||
networkCurrency: 'currency'
|
||||
}),
|
||||
...mapGetters('gasPrices', ['gasPriceInGwei']),
|
||||
...mapGetters('fees', ['gasPriceInGwei']),
|
||||
...mapGetters('token', ['toDecimals', 'fromDecimals']),
|
||||
...mapGetters('application', ['networkFee']),
|
||||
...mapGetters('price', ['tokenRate']),
|
||||
relayerFee() {
|
||||
const { amount } = this.selectedStatistic
|
||||
@ -91,7 +93,7 @@ export default {
|
||||
const tornadoServiceFee = this.relayerFee
|
||||
const { currency } = this.selectedStatistic
|
||||
const { decimals } = this.networkConfig.tokens[currency]
|
||||
const ethFee = this.networkFee
|
||||
const ethFee = this.withdrawalNetworkFee
|
||||
if (currency === this.nativeCurrency) {
|
||||
return ethFee.add(tornadoServiceFee)
|
||||
}
|
||||
@ -117,17 +119,12 @@ export default {
|
||||
return fromWei(this.ethToReceive)
|
||||
},
|
||||
total() {
|
||||
const { amount, currency } = this.selectedStatistic
|
||||
const { amount } = this.selectedStatistic
|
||||
let total = toBN(this.fromDecimals(amount.toString()))
|
||||
|
||||
if (this.withdrawType === 'relayer') {
|
||||
const relayerFee = this.totalRelayerFee
|
||||
|
||||
if (currency === this.nativeCurrency) {
|
||||
const relayerFee = this.withdrawalFeeViaRelayer
|
||||
total = total.sub(relayerFee)
|
||||
} else {
|
||||
total = total.sub(relayerFee).sub(this.ethToReceiveInToken)
|
||||
}
|
||||
}
|
||||
|
||||
return this.toDecimals(total, null, 6)
|
||||
|
@ -52,9 +52,6 @@ export const cachedEventsLength = {
|
||||
mainnet: {
|
||||
ENCRYPTED_NOTES: 16898
|
||||
},
|
||||
goerli: {
|
||||
ENCRYPTED_NOTES: 1662
|
||||
},
|
||||
bsc: {
|
||||
ENCRYPTED_NOTES: 11333
|
||||
}
|
||||
@ -90,7 +87,7 @@ export const PROVIDERS = {
|
||||
export const REGISTRY_DEPLOYED_BLOCK = {
|
||||
1: 14173129
|
||||
}
|
||||
export const DONATIONS_ADDRESS = '0xB008Ce23852Be9e7d43638432617617b2e07B41e'
|
||||
export const DONATIONS_ADDRESS = '0xb444382F32F865AD7C1e7CD3d2Bb66A717c8575e'
|
||||
|
||||
export const trees = {
|
||||
PARTS_COUNT: 4,
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"closeNotification": "Close notification",
|
||||
"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.",
|
||||
"deposit": "Deposit",
|
||||
"depositButton": "Deposit",
|
||||
@ -151,7 +151,7 @@
|
||||
"nullifierHash": "Nullifier Hash",
|
||||
"verified": "Verified",
|
||||
"generatePdfReport": "Generate PDF report",
|
||||
"compliancePrintWarning": "This Compliance Report is for informational purposes only. You should confirm the validity of this report by using Tornado’s 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 Tornado’s 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.",
|
||||
"selectProvider": "Select provider",
|
||||
"walletDoesNotSupported": "The wallet is not supported",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"closeNotification": "Cerrar notificación",
|
||||
"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.",
|
||||
"deposit": "Depósito",
|
||||
"depositButton": "Depósito",
|
||||
@ -151,7 +151,7 @@
|
||||
"nullifierHash": "Hash del Nullifier",
|
||||
"verified": "Verificador",
|
||||
"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.",
|
||||
"selectProvider": "Seleccione proveedor",
|
||||
"walletDoesNotSupported": "El monedero no es compatible",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"closeNotification": "Fermer notification",
|
||||
"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.",
|
||||
"deposit": "Déposer",
|
||||
"depositButton": "Déposer",
|
||||
@ -151,7 +151,7 @@
|
||||
"nullifierHash": "Hash Nullifié",
|
||||
"verified": "Verifié",
|
||||
"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.",
|
||||
"selectProvider": "Sélectionner le fournisseur",
|
||||
"walletDoesNotSupported": "Le portefeuille n'est pas supporté",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"closeNotification": "Закрыть",
|
||||
"indexNotification": "Tornado Cash в настоящее время поддерживается сообществом, для получения дополнительной информации посетите {link}",
|
||||
"indexNotificationLinkText": "tornadocash.social",
|
||||
"indexNotificationLinkText": "tornado.is",
|
||||
"binanceInternalTxsNotification": "Пожалуйста, не используйте адреса кошельков Binance для вывода средств. Внутренние транзакции (включая снятие средств с Tornado.cash) в настоящее время не поддерживаются на бирже Binance. Если у вас возникли проблемы с получением средств, вам следует обратиться в службу поддержки Binance.",
|
||||
"deposit": "Депозит",
|
||||
"depositButton": "Внести",
|
||||
@ -151,7 +151,7 @@
|
||||
"nullifierHash": "Nullifier Hash",
|
||||
"verified": "Подтверждено",
|
||||
"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.",
|
||||
"selectProvider": "Выберите кошелёк",
|
||||
"walletDoesNotSupported": "Выбранный кошелёк не поддерживается",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"closeNotification": "Bildirimi Kapat",
|
||||
"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 Exchange’de 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",
|
||||
"depositButton": "Yatırma",
|
||||
@ -151,7 +151,7 @@
|
||||
"nullifierHash": "Nullifier Hash",
|
||||
"verified": "Onaylanmış",
|
||||
"generatePdfReport": "PDF rapora dönüştür.",
|
||||
"compliancePrintWarning": "Bu Uyumluluk Raporu yalnızca bilgilendirme amaçlıdır. Bu raporun geçerliliğini Tornado’nun 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 Tornado’nun 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.",
|
||||
"selectProvider": "Sağlayıcı seçin",
|
||||
"walletDoesNotSupported": "Bu cüzdan desteklenmiyor",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"closeNotification": "Закрити повідомлення",
|
||||
"indexNotification": "Tornado Cash зараз обслуговується спільнотою, щоб дізнатися більше, відвідайте {link}",
|
||||
"indexNotificationLinkText": "tornadocash.social",
|
||||
"indexNotificationLinkText": "tornado.is",
|
||||
"binanceInternalTxsNotification": "Будь ласка, не використовуйте адреси гаманців Binance для виведення коштів. Внутрішні транзакції (включаючи зняття коштів з Tornado.cash) в даний час не підтримуються на біржі Binance. Якщо у вас виникли проблеми з отриманням коштів, вам слід звернутися в службу підтримки Binance.",
|
||||
"deposit": "Депозит",
|
||||
"depositButton": "Внести",
|
||||
@ -150,7 +150,7 @@
|
||||
"nullifierHash": "Nullifier Hash",
|
||||
"verified": "Підтверджено",
|
||||
"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} не відповідає. Спробуйте вибрати інший.",
|
||||
"selectProvider": "Виберіть гаманець",
|
||||
"walletDoesNotSupported": "Ваш гаманець не підтримується",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"closeNotification": "关闭通知",
|
||||
"indexNotification": "Tornado Cash 现在由社区维护,有关更多信息,请访问 {link}",
|
||||
"indexNotificationLinkText": "tornadocash.social",
|
||||
"indexNotificationLinkText": "tornado.is",
|
||||
"binanceInternalTxsNotification": "请不要使用Binance钱包地址进行提款。Binance交易所目前不支持内部交易(包括Tornado.cash提款)。如果您有资金未收到的问题,您应该联系Binance支持。",
|
||||
"deposit": "存款",
|
||||
"depositButton": "存款",
|
||||
@ -151,7 +151,7 @@
|
||||
"nullifierHash": "无效符",
|
||||
"verified": "已验证",
|
||||
"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} 无法使用,请选择其他中继者。",
|
||||
"selectProvider": "请选择钱包",
|
||||
"walletDoesNotSupported": "此钱包不受支持",
|
||||
|
@ -65,7 +65,7 @@ export default {
|
||||
created() {
|
||||
this.checkRecoveryKey()
|
||||
this.newNotify()
|
||||
this.$store.dispatch('gasPrices/setDefault')
|
||||
this.$store.dispatch('fees/setDefaultGasPrice')
|
||||
},
|
||||
mounted() {
|
||||
this.$preventMultitabs()
|
||||
@ -80,7 +80,7 @@ export default {
|
||||
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 })
|
||||
try {
|
||||
this.$store.dispatch('application/loadAllNotesData')
|
||||
|
@ -21,7 +21,7 @@ export async function checkExistAccount({ getters, dispatch, rootState, rootGett
|
||||
|
||||
const isExist = Boolean(Array.isArray(events) && Boolean(events.length))
|
||||
|
||||
console.log('isExist', isExist)
|
||||
console.log('Is encrypted note events exist: ', isExist)
|
||||
|
||||
dispatch('createMutation', {
|
||||
type: 'CHECK_ACCOUNT',
|
||||
|
168
networkConfig.js
168
networkConfig.js
@ -1,5 +1,5 @@
|
||||
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 {
|
||||
netId1: {
|
||||
rpcCallRetryAttempt: 15,
|
||||
@ -21,17 +21,21 @@ export default {
|
||||
networkName: 'Ethereum Mainnet',
|
||||
deployedBlock: 9116966,
|
||||
rpcUrls: {
|
||||
chainnodes: {
|
||||
tornadoRPC: {
|
||||
name: 'Tornado RPC',
|
||||
url: 'https://tornadocash-rpc.com/mainnet'
|
||||
},
|
||||
chainnodes: {
|
||||
name: 'Chainnodes RPC',
|
||||
url: 'https://mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
|
||||
},
|
||||
mevblockerRPC: {
|
||||
name: 'MevblockerRPC',
|
||||
url: 'https://rpc.mevblocker.io'
|
||||
},
|
||||
llamaRPC: {
|
||||
name: 'llamarpc',
|
||||
url: 'https://eth.llamarpc.com'
|
||||
oneRPC: {
|
||||
name: '1RPC',
|
||||
url: 'https://1rpc.io/eth'
|
||||
}
|
||||
},
|
||||
multicall: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441',
|
||||
@ -74,6 +78,8 @@ export default {
|
||||
decimals: 8,
|
||||
gasLimit: '425000'
|
||||
},
|
||||
/**
|
||||
* Instances frozen due to sanctions
|
||||
usdc: {
|
||||
instanceAddress: {
|
||||
'100': '0xd96f2B1c14Db8458374d9Aca76E26c3D18364307',
|
||||
@ -94,6 +100,7 @@ export default {
|
||||
decimals: 6,
|
||||
gasLimit: '100000'
|
||||
},
|
||||
**/
|
||||
wbtc: {
|
||||
instanceAddress: {
|
||||
'0.1': '0x178169B423a011fff22B9e3F3abeA13414dDD0F1',
|
||||
@ -141,8 +148,12 @@ export default {
|
||||
multicall: '0x41263cba59eb80dc200f3e2544eda4ed6a90e76c',
|
||||
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
|
||||
rpcUrls: {
|
||||
chainnodes: {
|
||||
tornadoRPC: {
|
||||
name: 'Tornado RPC',
|
||||
url: 'https://tornadocash-rpc.com/bsc'
|
||||
},
|
||||
chainnodes: {
|
||||
name: 'Chainnodes RPC',
|
||||
url: 'https://bsc-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
|
||||
},
|
||||
oneRPC: {
|
||||
@ -193,7 +204,7 @@ export default {
|
||||
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
|
||||
rpcUrls: {
|
||||
chainnodes: {
|
||||
name: 'Tornado RPC',
|
||||
name: 'Chainnodes RPC',
|
||||
url: 'https://polygon-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
|
||||
},
|
||||
oneRpc: {
|
||||
@ -244,8 +255,12 @@ export default {
|
||||
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
|
||||
ovmGasPriceOracleContract: '0x420000000000000000000000000000000000000F',
|
||||
rpcUrls: {
|
||||
chainnodes: {
|
||||
tornadoRPC: {
|
||||
name: 'Tornado RPC',
|
||||
url: 'https://tornadocash-rpc.com/op'
|
||||
},
|
||||
chainnodes: {
|
||||
name: 'Chainnodes RPC',
|
||||
url: 'https://optimism-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
|
||||
},
|
||||
oneRpc: {
|
||||
@ -295,8 +310,12 @@ export default {
|
||||
multicall: '0x842eC2c7D803033Edf55E478F461FC547Bc54EB2',
|
||||
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
|
||||
rpcUrls: {
|
||||
chainnodes: {
|
||||
tornadoRPC: {
|
||||
name: 'Tornado RPC',
|
||||
url: 'https://tornadocash-rpc.com/arbitrum'
|
||||
},
|
||||
chainnodes: {
|
||||
name: 'Chainnodes RPC',
|
||||
url: 'https://arbitrum-one.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
|
||||
},
|
||||
oneRpc: {
|
||||
@ -350,8 +369,12 @@ export default {
|
||||
multicall: '0xb5b692a88bdfc81ca69dcb1d924f59f0413a602a',
|
||||
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
|
||||
rpcUrls: {
|
||||
chainnodes: {
|
||||
tornadoRPC: {
|
||||
name: 'Tornado RPC',
|
||||
url: 'https://tornadocash-rpc.com/gnosis'
|
||||
},
|
||||
chainnodes: {
|
||||
name: 'Chainnodes RPC',
|
||||
url: 'https://gnosis-mainnet.chainnodes.org/d692ae63-0a7e-43e0-9da9-fe4f4cc6c607'
|
||||
},
|
||||
blockPi: {
|
||||
@ -401,17 +424,17 @@ export default {
|
||||
multicall: '0xe86e3989c74293Acc962156cd3F525c07b6a1B6e',
|
||||
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
|
||||
rpcUrls: {
|
||||
publicRpc1: {
|
||||
publicRpc: {
|
||||
name: 'Avalanche RPC',
|
||||
url: 'https://endpoints.omniatech.io/v1/avax/mainnet/public'
|
||||
url: 'https://api.avax.network/ext/bc/C/rpc'
|
||||
},
|
||||
meowRPC: {
|
||||
name: 'Meow RPC',
|
||||
url: 'https://avax.meowrpc.com'
|
||||
},
|
||||
communityRPC: {
|
||||
name: 'Tornado RPC',
|
||||
url: 'https://avalanche-rpc.tornado.ws/ext/bc/C/rpc'
|
||||
oneRPC: {
|
||||
name: 'OneRPC',
|
||||
url: 'https://1rpc.io/avax/c'
|
||||
}
|
||||
},
|
||||
tokens: {
|
||||
@ -433,111 +456,76 @@ export default {
|
||||
},
|
||||
'tornado-proxy-light.contract.tornadocash.eth': '0x0D5550d52428E7e3175bfc9550207e4ad3859b17'
|
||||
},
|
||||
netId5: {
|
||||
netId11155111: {
|
||||
rpcCallRetryAttempt: 15,
|
||||
gasPrices: {
|
||||
instant: 80,
|
||||
fast: 50,
|
||||
standard: 25,
|
||||
low: 8
|
||||
instant: 2,
|
||||
fast: 2,
|
||||
standard: 2,
|
||||
low: 2
|
||||
},
|
||||
nativeCurrency: 'eth',
|
||||
currencyName: 'gETH',
|
||||
currencyName: 'ETH',
|
||||
explorerUrl: {
|
||||
tx: 'https://goerli.etherscan.io/tx/',
|
||||
address: 'https://goerli.etherscan.io/address/',
|
||||
block: 'https://goerli.etherscan.io/block/'
|
||||
tx: 'https://sepolia.etherscan.io/tx/',
|
||||
address: 'https://sepolia.etherscan.io/address/',
|
||||
block: 'https://sepolia.etherscan.io/block/'
|
||||
},
|
||||
merkleTreeHeight: 20,
|
||||
emptyElement: '21663839004416932945382355908790599225266501822907911457504978515578255421292',
|
||||
networkName: 'Ethereum Goerli',
|
||||
deployedBlock: 3781595,
|
||||
multicall: '0x77dca2c955b15e9de4dbbcf1246b4b85b651e50e',
|
||||
echoContractAccount: '0x37e6859804b6499d1e4a86d70a5fdd5de6a0ac65',
|
||||
aggregatorContract: '0x8cb1436F64a3c33aD17bb42F94e255c4c0E871b2',
|
||||
networkName: 'Ethereum Sepolia',
|
||||
deployedBlock: 5594395,
|
||||
multicall: '0xcA11bde05977b3631167028862bE2a173976CA11',
|
||||
echoContractAccount: '0xcDD1fc3F5ac2782D83449d3AbE80D6b7B273B0e5',
|
||||
aggregatorContract: '0x4088712AC9fad39ea133cdb9130E465d235e9642',
|
||||
rpcUrls: {
|
||||
chainnodes: {
|
||||
tornadoRPC: {
|
||||
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: {
|
||||
eth: {
|
||||
instanceAddress: {
|
||||
'0.1': '0x6Bf694a291DF3FeC1f7e69701E3ab6c592435Ae7',
|
||||
'1': '0x3aac1cC67c2ec5Db4eA850957b967Ba153aD6279',
|
||||
'10': '0x723B78e67497E85279CB204544566F4dC5d2acA0',
|
||||
'100': '0x0E3A09dDA6B20aFbB34aC7cD4A6881493f3E7bf7'
|
||||
'0.1': '0x8C4A04d872a6C1BE37964A21ba3a138525dFF50b',
|
||||
'1': '0x8cc930096B4Df705A007c4A039BDFA1320Ed2508',
|
||||
'10': '0x8D10d506D29Fc62ABb8A290B99F66dB27Fc43585',
|
||||
'100': '0x84c5C92ed73dB43888210264f0C8b36Fd68D8379'
|
||||
},
|
||||
symbol: 'ETH',
|
||||
decimals: 18
|
||||
},
|
||||
dai: {
|
||||
instanceAddress: {
|
||||
'100': '0x76D85B4C0Fc497EeCc38902397aC608000A06607',
|
||||
'1000': '0xCC84179FFD19A1627E79F8648d09e095252Bc418',
|
||||
'10000': '0xD5d6f8D9e784d0e26222ad3834500801a68D027D',
|
||||
'100000': '0x407CcEeaA7c95d2FE2250Bf9F2c105aA7AAFB512'
|
||||
'100': '0x6921fd1a97441dd603a997ED6DDF388658daf754',
|
||||
'1000': '0x50a637770F5d161999420F7d70d888DE47207145',
|
||||
'10000': '0xecD649870407cD43923A816Cc6334a5bdf113621',
|
||||
'100000': '0x73B4BD04bF83206B6e979BE2507098F92EDf4F90'
|
||||
},
|
||||
tokenAddress: '0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60',
|
||||
tokenAddress: '0xFF34B3d4Aee8ddCd6F9AFFFB6Fe49bD371b8a357',
|
||||
symbol: 'DAI',
|
||||
decimals: 18,
|
||||
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,
|
||||
constants: {
|
||||
GOVERNANCE_BLOCK: 3945171,
|
||||
NOTE_ACCOUNT_BLOCK: 4131375,
|
||||
ENCRYPTED_NOTES_BLOCK: 4131375,
|
||||
GOVERNANCE_BLOCK: 5594395,
|
||||
NOTE_ACCOUNT_BLOCK: 5594395,
|
||||
ENCRYPTED_NOTES_BLOCK: 5594395,
|
||||
MINING_BLOCK_TIME: 15
|
||||
},
|
||||
'torn.contract.tornadocash.eth': '0x77777FeDdddFfC19Ff86DB637967013e6C6A116C',
|
||||
'governance.contract.tornadocash.eth': '0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce',
|
||||
'tornado-proxy.contract.tornadocash.eth': '0x454d870a72e29d5e5697f635128d18077bd04c60'
|
||||
'torn.contract.tornadocash.eth': '0x3AE6667167C0f44394106E197904519D808323cA',
|
||||
'governance.contract.tornadocash.eth': '0xe5324cD7602eeb387418e594B87aCADee08aeCAD',
|
||||
'tornado-router.contract.tornadocash.eth': '0x1572AFE6949fdF51Cb3E0856216670ae9Ee160Ee'
|
||||
}
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ export default {
|
||||
{
|
||||
hid: 'og:url',
|
||||
property: 'og:url',
|
||||
content: 'https://tornado.ws'
|
||||
content: 'https://tornado.is'
|
||||
},
|
||||
{
|
||||
hid: 'og:type',
|
||||
@ -89,7 +89,7 @@ export default {
|
||||
{
|
||||
hid: 'og:image',
|
||||
property: 'og:image',
|
||||
content: 'https://tornado.ws/tw.png'
|
||||
content: 'https://tornado.is/tw.png'
|
||||
},
|
||||
{
|
||||
hid: 'description',
|
||||
|
21
package.json
21
package.json
@ -1,20 +1,25 @@
|
||||
{
|
||||
"name": "tornadocash-classic-ui",
|
||||
"version": "1.1.0",
|
||||
"version": "1.2.0",
|
||||
"description": "Private ethereum transactions",
|
||||
"author": "Tornado Cash Team",
|
||||
"scripts": {
|
||||
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
|
||||
"precommit": "yarn lint",
|
||||
"test": "jest",
|
||||
"dev": "cross-env NODE_OPTIONS='--max-old-space-size=8192' nuxt",
|
||||
"build": "nuxt build",
|
||||
"fix:vuex": "node ./scripts/vuex.js",
|
||||
"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",
|
||||
"update:zip": "node -r esm scripts/updateZip.js",
|
||||
"update:events": "node -r esm scripts/updateEvents.js --network",
|
||||
"update:encrypted": "node -r esm scripts/updateEncryptedEvents.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",
|
||||
"ipfsUpload": "node scripts/ipfsUpload.js",
|
||||
"deploy:ipfs": "yarn generate && yarn ipfsUpload"
|
||||
@ -23,9 +28,10 @@
|
||||
"@apollo/client": "^3.3.20",
|
||||
"@metamask/onboarding": "^1.0.0",
|
||||
"@nuxtjs/moment": "^1.6.0",
|
||||
"@tornado/gas-price-oracle": "^0.5.3",
|
||||
"@tornado/snarkjs": "0.1.20-p2",
|
||||
"@tornado/websnark": "0.0.4-p1",
|
||||
"@tornado/fixed-merkle-tree": "0.7",
|
||||
"@tornado/snarkjs": "0.1.20",
|
||||
"@tornado/tornado-oracles": "^2.1.0",
|
||||
"@tornado/websnark": "0.0.4",
|
||||
"@walletconnect/web3-provider": "1.7.8",
|
||||
"ajv": "^6.10.2",
|
||||
"arraybuffer-loader": "^1.0.8",
|
||||
@ -39,7 +45,6 @@
|
||||
"eth-ens-namehash": "^2.0.8",
|
||||
"eth-sig-util": "^2.5.3",
|
||||
"file-saver": "^2.0.5",
|
||||
"fixed-merkle-tree": "^0.7.3",
|
||||
"form-data": "^3.0.0",
|
||||
"graphql": "^15.5.1",
|
||||
"idb": "^6.0.0",
|
||||
|
@ -312,6 +312,18 @@ export default {
|
||||
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 receipt = await this.getTransactionReceipt(txHash)
|
||||
|
@ -24,7 +24,7 @@
|
||||
>
|
||||
<i18n path="trustBanner.trustLess">
|
||||
<template v-slot:link>
|
||||
<a href="https://tornado.ws/">{{ $t('trustBanner.link') }}</a>
|
||||
<a href="https://tornado.is/">{{ $t('trustBanner.link') }}</a>
|
||||
</template>
|
||||
</i18n>
|
||||
</b-notification>
|
||||
@ -40,7 +40,7 @@
|
||||
>
|
||||
<i18n path="indexNotification">
|
||||
<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') }}
|
||||
</a>
|
||||
</template>
|
||||
@ -73,7 +73,7 @@
|
||||
</template>
|
||||
<template v-slot:linkThree>
|
||||
<a
|
||||
href="https://docs.tornado.ws/general/guides/post-censorship#RPC"
|
||||
href="https://docs.tornado.is/general/guides/post-censorship#RPC"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
|
@ -262,7 +262,7 @@ export default async (ctx, inject) => {
|
||||
|
||||
Object.keys(tokens).forEach((token) => {
|
||||
Object.keys(tokens[token].instanceAddress).forEach((amount) => {
|
||||
if (nativeCurrency === token && netId === 1) {
|
||||
if (nativeCurrency === token) {
|
||||
stores.push({
|
||||
name: `stringify_bloom_${netId}_${token}_${amount}`,
|
||||
keyPath: 'hashBloom'
|
||||
|
@ -23,9 +23,9 @@ function main(store) {
|
||||
window.multipleTabsDetected = true
|
||||
window.onbeforeunload = null
|
||||
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
15
scripts/copyFile.js
Normal 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()
|
@ -3,7 +3,7 @@ import 'dotenv/config'
|
||||
import fs from 'fs'
|
||||
|
||||
import BloomFilter from 'bloomfilter.js'
|
||||
import { MerkleTree } from 'fixed-merkle-tree'
|
||||
import { MerkleTree } from '@tornado/fixed-merkle-tree'
|
||||
import { buildMimcSponge } from 'circomlibjs'
|
||||
|
||||
import networkConfig, { enabledChains } from '../networkConfig'
|
||||
|
@ -17,13 +17,13 @@ function updateEncrypted(netId) {
|
||||
async function updateCommon(netId) {
|
||||
const { nativeCurrency, tokens } = networkConfig[`netId${netId}`]
|
||||
|
||||
console.log(Object.keys(tokens[nativeCurrency].instanceAddress))
|
||||
|
||||
for await (const type of EVENTS) {
|
||||
for await (const instance of Object.keys(tokens[nativeCurrency].instanceAddress)) {
|
||||
for (const type of EVENTS) {
|
||||
for (const [tokenName, tokenInfo] of Object.entries(tokens)) {
|
||||
console.log(`${tokenInfo.symbol}: ${Object.keys(tokenInfo.instanceAddress)}`)
|
||||
for (const instance of Object.keys(tokenInfo.instanceAddress)) {
|
||||
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}`)
|
||||
|
||||
@ -37,6 +37,7 @@ async function updateCommon(netId) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function testCommon(netId, type, filename) {
|
||||
const { deployedBlock } = networkConfig[`netId${netId}`]
|
||||
|
24
scripts/vuex.js
Normal file
24
scripts/vuex.js
Normal 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')
|
||||
}
|
@ -412,10 +412,11 @@ class EventService {
|
||||
async getEventsFromBlock({ fromBlock, graphMethod, type }) {
|
||||
try {
|
||||
// ToDo think about undefined
|
||||
const rpcEvents = await this.getEventsFromRpc({ fromBlock, type })
|
||||
|
||||
const allEvents = [].concat(rpcEvents || [])
|
||||
const graphEvents = await this.getEventsFromGraph({ fromBlock, methodName: graphMethod })
|
||||
const lastSyncBlock = fromBlock > graphEvents?.lastBlock ? fromBlock : graphEvents?.lastBlock
|
||||
const rpcEvents = await this.getEventsFromRpc({ fromBlock: lastSyncBlock, type })
|
||||
|
||||
const allEvents = [].concat(graphEvents?.events || [], rpcEvents || [])
|
||||
if (allEvents.length) {
|
||||
return {
|
||||
events: allEvents,
|
||||
|
@ -20,14 +20,14 @@ const link = ({ getContext }) => {
|
||||
}
|
||||
|
||||
const CHAIN_GRAPH_URLS = {
|
||||
1: 'https://api.thegraph.com/subgraphs/name/tornadocash/mainnet-tornado-subgraph',
|
||||
5: 'https://api.thegraph.com/subgraphs/name/tornadocash/goerli-tornado-subgraph',
|
||||
10: 'https://api.thegraph.com/subgraphs/name/tornadocash/optimism-tornado-subgraph',
|
||||
56: 'https://api.thegraph.com/subgraphs/name/tornadocash/bsc-tornado-subgraph',
|
||||
100: 'https://api.thegraph.com/subgraphs/name/tornadocash/xdai-tornado-subgraph',
|
||||
137: 'https://api.thegraph.com/subgraphs/name/tornadocash/matic-tornado-subgraph',
|
||||
42161: 'https://api.thegraph.com/subgraphs/name/tornadocash/arbitrum-tornado-subgraph',
|
||||
43114: 'https://api.thegraph.com/subgraphs/name/tornadocash/avalanche-tornado-subgraph'
|
||||
1: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/mainnet-tornado-subgraph',
|
||||
10: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/optimism-tornado-subgraph',
|
||||
56: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/bsc-tornado-subgraph',
|
||||
100: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/xdai-tornado-subgraph',
|
||||
137: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/matic-tornado-subgraph',
|
||||
42161: 'https://tornadocash-rpc.com/subgraphs/name/tornadocash/arbitrum-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 = {
|
||||
@ -45,7 +45,7 @@ const client = 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(),
|
||||
credentials: 'omit',
|
||||
defaultOptions
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { MerkleTree, PartialMerkleTree } from 'fixed-merkle-tree'
|
||||
import { MerkleTree, PartialMerkleTree } from '@tornado/fixed-merkle-tree'
|
||||
|
||||
import { trees } from '@/constants'
|
||||
import { download } from '@/store/snark'
|
||||
|
@ -3,6 +3,7 @@ import namehash from 'eth-ens-namehash'
|
||||
import { BigNumber as BN } from 'bignumber.js'
|
||||
import { toChecksumAddress, isAddress } from 'web3-utils'
|
||||
|
||||
import { graph } from '@/services'
|
||||
import networkConfig from '@/networkConfig'
|
||||
import { REGISTRY_DEPLOYED_BLOCK } from '@/constants'
|
||||
import { sleep, flattenNArray } from '@/utils'
|
||||
@ -169,9 +170,21 @@ class RelayerRegister {
|
||||
fetchRelayers = async () => {
|
||||
const blockRange = 10000
|
||||
// eslint-disable-next-line prefer-const
|
||||
let { blockTo, cachedEvents } = await this.getCachedData()
|
||||
let { blockFrom, blockTo, cachedEvents } = await this.getCachedData()
|
||||
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 fromBlock = cachedEvents.length === 0 ? REGISTRY_DEPLOYED_BLOCK[1] : blockTo
|
||||
const blockDifference = currentBlockNumber - fromBlock
|
||||
@ -181,7 +194,7 @@ class RelayerRegister {
|
||||
let registerRelayerEvents
|
||||
let lastSyncBlock = blockTo
|
||||
|
||||
if (cachedEvents.length > 0 || blockDifference === 0) {
|
||||
if (blockDifference <= 0) {
|
||||
return cachedEvents
|
||||
} else if (blockDifference >= blockRange) {
|
||||
toBlock = currentBlockNumber
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
static/events/deposits_1_cdai_5000.json.gz
Normal file
BIN
static/events/deposits_1_cdai_5000.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_cdai_50000.json.gz
Normal file
BIN
static/events/deposits_1_cdai_50000.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_cdai_500000.json.gz
Normal file
BIN
static/events/deposits_1_cdai_500000.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_cdai_5000000.json.gz
Normal file
BIN
static/events/deposits_1_cdai_5000000.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_dai_100.json.gz
Normal file
BIN
static/events/deposits_1_dai_100.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_dai_1000.json.gz
Normal file
BIN
static/events/deposits_1_dai_1000.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_dai_10000.json.gz
Normal file
BIN
static/events/deposits_1_dai_10000.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_dai_100000.json.gz
Normal file
BIN
static/events/deposits_1_dai_100000.json.gz
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
static/events/deposits_1_usdc_100.json.gz
Normal file
BIN
static/events/deposits_1_usdc_100.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_usdc_1000.json.gz
Normal file
BIN
static/events/deposits_1_usdc_1000.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_usdt_100.json.gz
Normal file
BIN
static/events/deposits_1_usdt_100.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_usdt_1000.json.gz
Normal file
BIN
static/events/deposits_1_usdt_1000.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_wbtc_0.1.json.gz
Normal file
BIN
static/events/deposits_1_wbtc_0.1.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_wbtc_1.json.gz
Normal file
BIN
static/events/deposits_1_wbtc_1.json.gz
Normal file
Binary file not shown.
BIN
static/events/deposits_1_wbtc_10.json.gz
Normal file
BIN
static/events/deposits_1_wbtc_10.json.gz
Normal file
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.
0
static/events/deposits_5_cdai_5000.json.gz
Normal file
0
static/events/deposits_5_cdai_5000.json.gz
Normal file
0
static/events/deposits_5_cdai_50000.json.gz
Normal file
0
static/events/deposits_5_cdai_50000.json.gz
Normal file
0
static/events/deposits_5_cdai_500000.json.gz
Normal file
0
static/events/deposits_5_cdai_500000.json.gz
Normal file
0
static/events/deposits_5_cdai_5000000.json.gz
Normal file
0
static/events/deposits_5_cdai_5000000.json.gz
Normal file
0
static/events/deposits_5_dai_100.json.gz
Normal file
0
static/events/deposits_5_dai_100.json.gz
Normal file
0
static/events/deposits_5_dai_1000.json.gz
Normal file
0
static/events/deposits_5_dai_1000.json.gz
Normal file
0
static/events/deposits_5_dai_10000.json.gz
Normal file
0
static/events/deposits_5_dai_10000.json.gz
Normal file
0
static/events/deposits_5_dai_100000.json.gz
Normal file
0
static/events/deposits_5_dai_100000.json.gz
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
0
static/events/deposits_5_usdc_100.json.gz
Normal file
0
static/events/deposits_5_usdc_100.json.gz
Normal file
0
static/events/deposits_5_usdc_1000.json.gz
Normal file
0
static/events/deposits_5_usdc_1000.json.gz
Normal file
0
static/events/deposits_5_usdt_100.json.gz
Normal file
0
static/events/deposits_5_usdt_100.json.gz
Normal file
0
static/events/deposits_5_usdt_1000.json.gz
Normal file
0
static/events/deposits_5_usdt_1000.json.gz
Normal file
0
static/events/deposits_5_wbtc_0.1.json.gz
Normal file
0
static/events/deposits_5_wbtc_0.1.json.gz
Normal file
0
static/events/deposits_5_wbtc_1.json.gz
Normal file
0
static/events/deposits_5_wbtc_1.json.gz
Normal file
0
static/events/deposits_5_wbtc_10.json.gz
Normal file
0
static/events/deposits_5_wbtc_10.json.gz
Normal file
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.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user