Compare commits

...

12 Commits

Author SHA1 Message Date
torndao
30c4b44a5c fix ipfs detection
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
2025-07-23 15:50:32 +08:00
torndao
10a96e4ecc Update Ethereum RPCs 2025-07-23 14:14:43 +08:00
torndao
c82771d9d5 rename tornado dot cash to tornado cash 2025-07-23 14:03:28 +08:00
torndao
b1e9965c62 Merge ETC code and add Pool Fee calculation 2025-06-09 16:32:01 +08:00
torndao
79af93bc69 add ETC Network 2025-06-08 21:59:57 +08:00
torndao
b1ae1c1623 Fixed the issue with incorrect relayers data in cache 2025-06-05 12:26:29 +08:00
torndao
170765864c Fixed the issue of not being able to fetch new relayers 2025-06-04 15:15:31 +08:00
torndao
5f7521882b Add USDT and USDC risk warnings 2025-05-29 14:32:15 +08:00
torndao
cc901c105c Fix block number of register_events 2025-05-23 14:52:13 +08:00
torndao
6634754a0e The relayer list is sorted by the stakeBalance from largest to smallest 2025-05-17 21:07:09 +08:00
torndao
54a9dd40cb filter out duplicate relayers 2025-04-26 13:44:11 +08:00
torndao
9c41c63dd0 rename tornado dot cash to tornado cash 2025-03-28 13:34:44 +08:00
23 changed files with 366 additions and 138 deletions

View File

@ -125,7 +125,7 @@ jobs:
with: with:
to: ${{ secrets.TELEGRAM_CHAT_ID }} to: ${{ secrets.TELEGRAM_CHAT_ID }}
token: ${{ secrets.TELEGRAM_BOT_TOKEN}} token: ${{ secrets.TELEGRAM_BOT_TOKEN}}
message: 🚀 Deployed commit [${{ steps.vars.outputs.sha_short }}](https://github.com/tornadocash/tornado-cash-ui/commit/${{ github.sha }}) of tornado.cash UI message: 🚀 Deployed commit [${{ steps.vars.outputs.sha_short }}](https://github.com/tornadocash/tornado-cash-ui/commit/${{ github.sha }}) of tornado cash UI
format: markdown format: markdown
- name: Telegram Failure Notification - name: Telegram Failure Notification
uses: appleboy/telegram-action@v0.1.1 uses: appleboy/telegram-action@v0.1.1

1
.gitignore vendored
View File

@ -93,3 +93,4 @@ static/*/*.json
# UI build archive # UI build archive
dist.zip dist.zip
package-lock.json

View File

@ -317,6 +317,10 @@
mask-image: url('../img/icons/ethereum.svg'); mask-image: url('../img/icons/ethereum.svg');
} }
&-ethereum-classic {
mask-image: url('../img/icons/ethereum.svg');
}
&-ethereum-sepolia { &-ethereum-sepolia {
mask-image: url('../img/icons/ethereum.svg'); mask-image: url('../img/icons/ethereum.svg');
} }

View File

@ -52,7 +52,7 @@
type="is-primary is-fullwidth" type="is-primary is-fullwidth"
:loading="isDepositBtnClicked" :loading="isDepositBtnClicked"
data-test="button_deposit" data-test="button_deposit"
@click="onDeposit" @click="onPreDeposit"
> >
{{ $t('depositButton') }} {{ $t('depositButton') }}
</b-button> </b-button>
@ -65,6 +65,7 @@ import { mapGetters } from 'vuex'
import ApproveModalBox from '@/components/ApproveModalBox' import ApproveModalBox from '@/components/ApproveModalBox'
import BalanceModalBox from '@/components/BalanceModalBox' import BalanceModalBox from '@/components/BalanceModalBox'
import DepositModalBox from '@/components/DepositModalBox' import DepositModalBox from '@/components/DepositModalBox'
import RiskModalBox from '@/components/RiskModalBox'
import { ConnectButton } from '@/components/web3Connect' import { ConnectButton } from '@/components/web3Connect'
@ -194,6 +195,19 @@ export default {
approveModal.$on('close', onApproval) approveModal.$on('close', onApproval)
} }
this.isDepositBtnClicked = false this.isDepositBtnClicked = false
},
onPreDeposit() {
if (this.selectedToken.toUpperCase() === 'USDT' || this.selectedToken.toUpperCase() === 'USDC') {
const riskModal = this.$buefy.modal.open({
parent: this,
component: RiskModalBox,
hasModalCard: true,
width: 440
})
riskModal.$on('close', this.onDeposit)
} else {
this.onDeposit()
}
} }
} }
} }

View File

@ -17,7 +17,7 @@
> >
</div> </div>
<div class="level-subitem"> <div class="level-subitem">
Tornado.cash version: Tornado Cash version:
<span class="footer-version__value">{{ commit }}</span> <span class="footer-version__value">{{ commit }}</span>
</div> </div>
</div> </div>
@ -58,6 +58,14 @@
rel="noopener noreferrer" rel="noopener noreferrer"
icon-right="telegram" icon-right="telegram"
></b-button> ></b-button>
<b-button
tag="a"
type="is-icon"
href="https://codeberg.org/torndao/classic-ui"
target="_blank"
rel="noopener noreferrer"
icon-right="git"
></b-button>
<b-button <b-button
tag="a" tag="a"
type="is-icon" type="is-icon"
@ -117,13 +125,7 @@ export default {
...mapGetters('metamask', ['networkConfig', 'netId']), ...mapGetters('metamask', ['networkConfig', 'netId']),
...mapGetters('txHashKeeper', ['addressExplorerUrl']), ...mapGetters('txHashKeeper', ['addressExplorerUrl']),
duneLink() { duneLink() {
const mainnetNetworks = [1, 5]
if (mainnetNetworks.includes(Number(this.netId))) {
return 'https://dune.com/davidcaviar/tornado-cash' return 'https://dune.com/davidcaviar/tornado-cash'
}
return 'https://dune.com/stakingbutterfly/tornado-cash-staking'
}, },
locales() { locales() {
return this.$i18n.availableLocales return this.$i18n.availableLocales

View File

@ -0,0 +1,28 @@
<template>
<div class="modal-card box box-modal">
<header class="box-modal-header is-spaced">
<div class="box-modal-title">{{ $t('information') }}</div>
<button type="button" class="delete" @click="$emit('close')" />
</header>
<i18n path="freezeRisk" tag="div" class="note">
<template v-slot:currency>{{ selectedCurrency }}</template>
</i18n>
<b-button type="is-primary is-fullwidth" @click="close">{{ $t('close') }}</b-button>
</div>
</template>
<script>
/* eslint-disable no-console */
import { mapGetters } from 'vuex'
export default {
components: {},
computed: {
...mapGetters('application', ['selectedCurrency'])
},
methods: {
close() {
this.$parent.close()
}
}
}
</script>

View File

@ -26,6 +26,10 @@
{{ $t('relayerFee') }} {{ $t('relayerFee') }}
<span data-test="label_relayer_fee">{{ toDecimals(relayerFee, null, 6) }} {{ currency }}</span> <span data-test="label_relayer_fee">{{ toDecimals(relayerFee, null, 6) }} {{ currency }}</span>
</div> </div>
<div v-if="currency === 'ETC'" class="withdraw-data-item">
{{ $t('poolFee') }}
<span data-test="label_relayer_fee">{{ toDecimals(poolFee, null, 6) }} {{ currency }}</span>
</div>
<div v-if="withdrawType === 'relayer'" class="withdraw-data-item"> <div v-if="withdrawType === 'relayer'" class="withdraw-data-item">
{{ $t('totalFee') }} {{ $t('totalFee') }}
<span data-test="label_total_fee">{{ toDecimals(totalRelayerFee, null, 6) }} {{ currency }}</span> <span data-test="label_total_fee">{{ toDecimals(totalRelayerFee, null, 6) }} {{ currency }}</span>
@ -79,6 +83,16 @@ export default {
...mapGetters('fees', ['gasPriceInGwei']), ...mapGetters('fees', ['gasPriceInGwei']),
...mapGetters('token', ['toDecimals', 'fromDecimals']), ...mapGetters('token', ['toDecimals', 'fromDecimals']),
...mapGetters('price', ['tokenRate']), ...mapGetters('price', ['tokenRate']),
poolFee() {
const { amount } = this.selectedStatistic
const total = toBN(this.fromDecimals(amount.toString()))
const fee = 0.03
const decimalsPoint = decimalPlaces(fee)
const roundDecimal = 10 ** decimalsPoint
const aroundFee = toBN(parseInt(fee * roundDecimal, 10))
const tornadoServiceFee = total.mul(toBN(aroundFee)).div(toBN(roundDecimal * 100))
return tornadoServiceFee
},
relayerFee() { relayerFee() {
const { amount } = this.selectedStatistic const { amount } = this.selectedStatistic
const total = toBN(this.fromDecimals(amount.toString())) const total = toBN(this.fromDecimals(amount.toString()))
@ -95,8 +109,13 @@ export default {
const { decimals } = this.networkConfig.tokens[currency] const { decimals } = this.networkConfig.tokens[currency]
const ethFee = this.withdrawalNetworkFee const ethFee = this.withdrawalNetworkFee
if (currency === this.nativeCurrency) { if (currency === this.nativeCurrency) {
if (currency === 'etc') {
const poolServiceFee = this.poolFee
return ethFee.add(poolServiceFee).add(tornadoServiceFee)
} else {
return ethFee.add(tornadoServiceFee) return ethFee.add(tornadoServiceFee)
} }
}
const tokenFee = ethFee.mul(toBN(10 ** decimals)).div(toBN(this.tokenRate)) const tokenFee = ethFee.mul(toBN(10 ** decimals)).div(toBN(this.tokenRate))
return tokenFee.add(tornadoServiceFee) return tokenFee.add(tornadoServiceFee)
}, },
@ -119,14 +138,15 @@ export default {
return fromWei(this.ethToReceive) return fromWei(this.ethToReceive)
}, },
total() { total() {
const { amount } = this.selectedStatistic const { amount, currency } = 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.withdrawalFeeViaRelayer const totalRelayerFee = this.withdrawalFeeViaRelayer
total = total.sub(relayerFee) total = total.sub(totalRelayerFee)
} else if (currency === 'etc') {
const poolFee = this.poolFee
total = total.sub(poolFee)
} }
return this.toDecimals(total, null, 6) return this.toDecimals(total, null, 6)
} }
} }

View File

@ -2,7 +2,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": "https://t.me/TornadoCashOfficialDAO", "indexNotificationLinkText": "https://t.me/TornadoCashOfficialDAO",
"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",
"withdraw": "Withdraw", "withdraw": "Withdraw",
@ -22,7 +22,7 @@
"amount": "Amount", "amount": "Amount",
"amountTooltip": "Each amount is a standalone Tornado Cash instance with a separate anonymity set. Check the Stats tab for more info.", "amountTooltip": "Each amount is a standalone Tornado Cash instance with a separate anonymity set. Check the Stats tab for more info.",
"approvalIsRequired": "Approval is required", "approvalIsRequired": "Approval is required",
"inOrderToUse": "In order to use {currency} you have to enable it for Tornado.cash. Select the amount you would like to approve:", "inOrderToUse": "In order to use {currency} you have to enable it for Tornado Cash. Select the amount you would like to approve:",
"unlimited": "Unlimited", "unlimited": "Unlimited",
"unlimitedTooltip": "The unlimited approval is more convenient if you are going to make multiple deposits.", "unlimitedTooltip": "The unlimited approval is more convenient if you are going to make multiple deposits.",
"enable": "Enable", "enable": "Enable",
@ -32,7 +32,7 @@
"close": "Close", "close": "Close",
"yourNote": "Your private note", "yourNote": "Your private note",
"pleaseBackupYourNote": "Please back up your note. You will need it later to withdraw your deposit.", "pleaseBackupYourNote": "Please back up your note. You will need it later to withdraw your deposit.",
"treatYourNote": "Treat your note as a private key - never share it with anyone, including tornado.cash developers.", "treatYourNote": "Treat your note as a private key - never share it with anyone, including tornado cash developers.",
"saveAsFile": "The browser will ask to save your note as a file:", "saveAsFile": "The browser will ask to save your note as a file:",
"iBackedUpTheNote": "I backed up the note", "iBackedUpTheNote": "I backed up the note",
"iEncryptedTheNote": "Create an on-chain backup of this note with your Account {address}", "iEncryptedTheNote": "Create an on-chain backup of this note with your Account {address}",
@ -56,7 +56,7 @@
"pleaseEnterYourNote": "Please enter your note", "pleaseEnterYourNote": "Please enter your note",
"turnOnWasm": "Error: Please turn on WebAssembly in your browser settings.<br /> If you are using Tor browser, enable javascript.options.wasm in about:config", "turnOnWasm": "Error: Please turn on WebAssembly in your browser settings.<br /> If you are using Tor browser, enable javascript.options.wasm in about:config",
"timePassed": "Time passed", "timePassed": "Time passed",
"timePassedTooltip": "Even if multiple deposits were made after yours, they could have been made by the same user. Therefore, we recommend waiting for at least 24 hours before withdrawing funds to ensure that multiple other users transacted via Tornado.сash during that time.", "timePassedTooltip": "Even if multiple deposits were made after yours, they could have been made by the same user. Therefore, we recommend waiting for at least 24 hours before withdrawing funds to ensure that multiple other users transacted via Tornado Cash during that time.",
"subsequentDeposits": "Subsequent deposits", "subsequentDeposits": "Subsequent deposits",
"subsequentDepositsTooltip": "The most likely source of a withdrawal points to recent deposits. Therefore, we recommend allowing at least 5 deposits after yours for better anonymity.", "subsequentDepositsTooltip": "The most likely source of a withdrawal points to recent deposits. Therefore, we recommend allowing at least 5 deposits after yours for better anonymity.",
"recipientAddress": "Recipient Address", "recipientAddress": "Recipient Address",
@ -124,6 +124,7 @@
"userDeposit": "no deposits | only 1 deposit | {n} deposits", "userDeposit": "no deposits | only 1 deposit | {n} deposits",
"gasPrice": "Gas Price", "gasPrice": "Gas Price",
"totalFee": "Total fee", "totalFee": "Total fee",
"poolFee": "Pool fee",
"networkFee": "Network fee", "networkFee": "Network fee",
"connectYourWalletFirst": "Connect your wallet first", "connectYourWalletFirst": "Connect your wallet first",
"changeNetwork": "Change network", "changeNetwork": "Change network",
@ -137,7 +138,7 @@
"compliance": "Compliance", "compliance": "Compliance",
"complianceTool": "compliance tool", "complianceTool": "compliance tool",
"complianceReport": "Compliance Report", "complianceReport": "Compliance Report",
"complianceSubtitle": "Maintaining financial privacy is essential to preserving our freedom.{newline}However, it should not come at the cost of non-compliance. With Tornado.cash, you can always provide cryptographically verified proof of transactional history using the Ethereum address you used to deposit or withdraw funds. This might be necessary to show the source of assets held in your withdrawal address.{newline}To generate a compliance report, please enter your Tornado.сash Note below.", "complianceSubtitle": "Maintaining financial privacy is essential to preserving our freedom.{newline}However, it should not come at the cost of non-compliance. With Tornado Cash, you can always provide cryptographically verified proof of transactional history using the Ethereum address you used to deposit or withdraw funds. This might be necessary to show the source of assets held in your withdrawal address.{newline}To generate a compliance report, please enter your Tornado Cash Note below.",
"from": "From", "from": "From",
"to": "To", "to": "To",
"withdrawal": "Withdrawal", "withdrawal": "Withdrawal",
@ -151,7 +152,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://tornadocash.eth.limo/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://tornadocash.eth.limo/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",
@ -337,7 +338,7 @@
"setupAccount": { "setupAccount": {
"title": "Account setup", "title": "Account setup",
"label": "Note Account key", "label": "Note Account key",
"description": "This key is used to encrypt and store your Tornado.cash private notes on Ethereum blockchain. Please back it up and never share it with anyone.", "description": "This key is used to encrypt and store your Tornado Cash private notes on Ethereum blockchain. Please back it up and never share it with anyone.",
"setupAccount": "Setup account", "setupAccount": "Setup account",
"setAccount": "Finish", "setAccount": "Finish",
"backedUp": "I backed up the Note Account key", "backedUp": "I backed up the Note Account key",
@ -394,7 +395,7 @@
"recover": "Recover account", "recover": "Recover account",
"enterRawDesc": "Use previously set Note Account key", "enterRawDesc": "Use previously set Note Account key",
"enterRaw": "Enter account key", "enterRaw": "Enter account key",
"accSetupDescription": "This key is used to encrypt and store your Tornado.cash private notes on Ethereum blockchain. Please back it up and never share it with anyone." "accSetupDescription": "This key is used to encrypt and store your Tornado Cash private notes on Ethereum blockchain. Please back it up and never share it with anyone."
}, },
"control": { "control": {
"balance": "Note account balance: {value}", "balance": "Note account balance: {value}",
@ -407,7 +408,7 @@
"fileDesc": "Download raw private notes by default when you make a deposit" "fileDesc": "Download raw private notes by default when you make a deposit"
}, },
"notification": { "notification": {
"text": "Tornado.cash added on-chain note backups. Setup your {note} now or {medium} info.", "text": "Tornado Cash added on-chain note backups. Setup your {note} now or {medium} info.",
"link": { "link": {
"note": "note account", "note": "note account",
"medium": "read more" "medium": "read more"
@ -476,5 +477,6 @@
"notification": "Due to the {issue} with eth.link domain, we highly recommend avoiding using this gateway. Consider {alternative} gateways.", "notification": "Due to the {issue} with eth.link domain, we highly recommend avoiding using this gateway. Consider {alternative} gateways.",
"issue": "issue", "issue": "issue",
"alternative": "alternative" "alternative": "alternative"
} },
"freezeRisk": "{currency} is a centralized token with the risk of freezing."
} }

View File

@ -2,7 +2,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": "https://t.me/TornadoCashOfficialDAO", "indexNotificationLinkText": "https://t.me/TornadoCashOfficialDAO",
"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",
"withdraw": "Retiro", "withdraw": "Retiro",
@ -22,7 +22,7 @@
"amount": "Cantidad", "amount": "Cantidad",
"amountTooltip": "Cada cantidad es una instancia independiente de Tornado Cash del conjunto anónimo correspondiente. Consulte el apartado Estadísticas para más información.", "amountTooltip": "Cada cantidad es una instancia independiente de Tornado Cash del conjunto anónimo correspondiente. Consulte el apartado Estadísticas para más información.",
"approvalIsRequired": "Se requiere aprobación", "approvalIsRequired": "Se requiere aprobación",
"inOrderToUse": "Para usar {currency} debe habilitarla para Tornado.cash. Seleccione la cantidad que desee aprobar:", "inOrderToUse": "Para usar {currency} debe habilitarla para Tornado Cash. Seleccione la cantidad que desee aprobar:",
"unlimited": "Ilimitada", "unlimited": "Ilimitada",
"unlimitedTooltip": "La aprobación ilimitada resulta más conveniente si usted quiere realizar múltiples depósitos.", "unlimitedTooltip": "La aprobación ilimitada resulta más conveniente si usted quiere realizar múltiples depósitos.",
"enable": "Habilitar", "enable": "Habilitar",
@ -32,7 +32,7 @@
"close": "cerrar", "close": "cerrar",
"yourNote": "Su ticket privado", "yourNote": "Su ticket privado",
"pleaseBackupYourNote": "Por favor, guarde y asegure su ticket. Lo necesitará más adelante para recuperar su depósito.", "pleaseBackupYourNote": "Por favor, guarde y asegure su ticket. Lo necesitará más adelante para recuperar su depósito.",
"treatYourNote": "Considere su ticket como una clave privada - nunca lo comparta con nadie, incluyendo desarrolladores de tornado.cash.", "treatYourNote": "Considere su ticket como una clave privada - nunca lo comparta con nadie, incluyendo desarrolladores de tornado cash.",
"saveAsFile": "El buscador le preguntara si quiere guardar su ticket como un archivo:", "saveAsFile": "El buscador le preguntara si quiere guardar su ticket como un archivo:",
"iBackedUpTheNote": "He guardado y asegurado el ticket", "iBackedUpTheNote": "He guardado y asegurado el ticket",
"iEncryptedTheNote": "Cree una copia segura on-chain de este ticket con su Cuenta {address}", "iEncryptedTheNote": "Cree una copia segura on-chain de este ticket con su Cuenta {address}",
@ -56,7 +56,7 @@
"pleaseEnterYourNote": "Por favor introduzca su ticket", "pleaseEnterYourNote": "Por favor introduzca su ticket",
"turnOnWasm": "Error: Por favor active WebAssembly en las opciones de su buscador.<br /> Si usted utiliza el buscador Tor, habilite javascript.options.wasm en about:config", "turnOnWasm": "Error: Por favor active WebAssembly en las opciones de su buscador.<br /> Si usted utiliza el buscador Tor, habilite javascript.options.wasm en about:config",
"timePassed": "Tiempo transcurrido", "timePassed": "Tiempo transcurrido",
"timePassedTooltip": "Incluso si hay múltiples depósitos posteriores al suyo, podrían pertenecer a un mismo usuario. Por tanto, le recomendamos esperar un mínimo de 24 horas antes de retirar fondos para asegurar que varios usuarios hayan utilizado Tornado.cash durante ese periodo.", "timePassedTooltip": "Incluso si hay múltiples depósitos posteriores al suyo, podrían pertenecer a un mismo usuario. Por tanto, le recomendamos esperar un mínimo de 24 horas antes de retirar fondos para asegurar que varios usuarios hayan utilizado Tornado Cash durante ese periodo.",
"subsequentDeposits": "Depósitos subsiguientes", "subsequentDeposits": "Depósitos subsiguientes",
"subsequentDepositsTooltip": "La fuente mas probable de un retiro son los depósitos recientes. Por tanto, recomendamos esperar un mínimo de 5 depósitos posteriores al suyo para un mayor anonimato.", "subsequentDepositsTooltip": "La fuente mas probable de un retiro son los depósitos recientes. Por tanto, recomendamos esperar un mínimo de 5 depósitos posteriores al suyo para un mayor anonimato.",
"recipientAddress": "Dirección de Recepción", "recipientAddress": "Dirección de Recepción",
@ -124,6 +124,7 @@
"userDeposit": "sin depósitos | solamente 1 depósito | {n} depósitos", "userDeposit": "sin depósitos | solamente 1 depósito | {n} depósitos",
"gasPrice": "Precio de Gas", "gasPrice": "Precio de Gas",
"totalFee": "Comisión total", "totalFee": "Comisión total",
"poolFee": "tarifa del pool",
"networkFee": "Comisión de red", "networkFee": "Comisión de red",
"connectYourWalletFirst": "Conecte su monedero primero", "connectYourWalletFirst": "Conecte su monedero primero",
"changeNetwork": "Cambiar red", "changeNetwork": "Cambiar red",
@ -137,7 +138,7 @@
"compliance": "Cumplimiento", "compliance": "Cumplimiento",
"complianceTool": "herramienta de cumplimiento legal", "complianceTool": "herramienta de cumplimiento legal",
"complianceReport": "Informe de cumplimiento legal", "complianceReport": "Informe de cumplimiento legal",
"complianceSubtitle": "Maintaining financial privacy is essential to preserving our freedom.{newline}However, it should not come at the cost of non-compliance. With Tornado.cash, you can always provide cryptographically verified proof of transactional history using the Ethereum address you used to deposit or withdraw funds. This might be necessary to show the source of assets held in your withdrawal address.{newline}To generate a compliance report, please enter your Tornado.сash Note below.", "complianceSubtitle": "Maintaining financial privacy is essential to preserving our freedom.{newline}However, it should not come at the cost of non-compliance. With Tornado Cash, you can always provide cryptographically verified proof of transactional history using the Ethereum address you used to deposit or withdraw funds. This might be necessary to show the source of assets held in your withdrawal address.{newline}To generate a compliance report, please enter your Tornado Cash Note below.",
"from": "Desde", "from": "Desde",
"to": "A", "to": "A",
"withdrawal": "Retiro", "withdrawal": "Retiro",
@ -151,7 +152,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://tornadocash.eth.limo/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://tornadocash.eth.limo/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",
@ -315,7 +316,7 @@
"setupAccount": { "setupAccount": {
"title": "Configuración de cuenta", "title": "Configuración de cuenta",
"label": "Clave de Cuenta de Tickets", "label": "Clave de Cuenta de Tickets",
"description": "Esta clave se usa para encriptar y guardar sus tickets privados de Tornado.cash en la blockchain Ethereum. Por favor haga una copia de seguridad y nunca la comparta con nadie.", "description": "Esta clave se usa para encriptar y guardar sus tickets privados de Tornado Cash en la blockchain Ethereum. Por favor haga una copia de seguridad y nunca la comparta con nadie.",
"setupAccount": "Configurar cuenta", "setupAccount": "Configurar cuenta",
"setAccount": "Finalizar", "setAccount": "Finalizar",
"backedUp": "He asegurado la clave de Cuenta de Tickets", "backedUp": "He asegurado la clave de Cuenta de Tickets",
@ -372,7 +373,7 @@
"recover": "Recuperar cuenta", "recover": "Recuperar cuenta",
"enterRawDesc": "Usar la clave de Cuenta de Tickets configurada", "enterRawDesc": "Usar la clave de Cuenta de Tickets configurada",
"enterRaw": "Introducir clave de cuenta", "enterRaw": "Introducir clave de cuenta",
"accSetupDescription": "Esta clave se usa para encriptar y guardar sus tickets privados de Tornado.cash en la blockchain Ethereum. Por favor haga una copia de seguridad y nunca la comparta con nadie." "accSetupDescription": "Esta clave se usa para encriptar y guardar sus tickets privados de Tornado Cash en la blockchain Ethereum. Por favor haga una copia de seguridad y nunca la comparta con nadie."
}, },
"control": { "control": {
"balance": "Balance de cuenta: {value}", "balance": "Balance de cuenta: {value}",
@ -385,7 +386,7 @@
"fileDesc": "Descargar tickets privados en bruto por defecto cuando haga un depósito" "fileDesc": "Descargar tickets privados en bruto por defecto cuando haga un depósito"
}, },
"notification": { "notification": {
"text": "Tornado.cash añadió un copia segura on-chain. Configure su {note} ahora o {medium} info.", "text": "Tornado Cash añadió un copia segura on-chain. Configure su {note} ahora o {medium} info.",
"link": { "link": {
"note": "cuenta de tickets", "note": "cuenta de tickets",
"medium": "leer más" "medium": "leer más"
@ -441,5 +442,6 @@
"name": "Name", "name": "Name",
"fee": "Fee" "fee": "Fee"
}, },
"withdrawalQueueIsOverloaded": "Withdrawal queue is overloaded" "withdrawalQueueIsOverloaded": "Withdrawal queue is overloaded",
"freezeRisk": "{currency} es un token centralizado con riesgo de congelación."
} }

View File

@ -2,7 +2,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": "https://t.me/TornadoCashOfficialDAO", "indexNotificationLinkText": "https://t.me/TornadoCashOfficialDAO",
"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",
"withdraw": "Retirer", "withdraw": "Retirer",
@ -22,7 +22,7 @@
"amount": "Montant", "amount": "Montant",
"amountTooltip": "Chaque montant dispose d'une instance autonome de Tornado Cash avec un seuil d'anonymat distinct. Consultez l'onglet statistiques pour plus d'informations.", "amountTooltip": "Chaque montant dispose d'une instance autonome de Tornado Cash avec un seuil d'anonymat distinct. Consultez l'onglet statistiques pour plus d'informations.",
"approvalIsRequired": "Une approbation est requise", "approvalIsRequired": "Une approbation est requise",
"inOrderToUse": "Afin d'utiliser cette devise: {currency} vous devez l'activer pour Tornado.cash. Sélectionnez le montant que vous souhaitez approuver:", "inOrderToUse": "Afin d'utiliser cette devise: {currency} vous devez l'activer pour Tornado Cash. Sélectionnez le montant que vous souhaitez approuver:",
"unlimited": "Illimité", "unlimited": "Illimité",
"unlimitedTooltip": "L'approbation illimitée est plus pratique dans le cas où vous devez effectuer plusieurs dépôts.", "unlimitedTooltip": "L'approbation illimitée est plus pratique dans le cas où vous devez effectuer plusieurs dépôts.",
"enable": "Activer", "enable": "Activer",
@ -32,7 +32,7 @@
"close": "Fermer", "close": "Fermer",
"yourNote": "Votre note d'enregistrement privée", "yourNote": "Votre note d'enregistrement privée",
"pleaseBackupYourNote": "Veuillez sauvegarder votre note d'enregistrement. Vous allez en avoir besoin plus tard pour retirer votre dépôt.", "pleaseBackupYourNote": "Veuillez sauvegarder votre note d'enregistrement. Vous allez en avoir besoin plus tard pour retirer votre dépôt.",
"treatYourNote": "Traitez votre note d'enregistrement comme une clé privée - ne la partagez jamais avec quiconque, y compris les développeurs de tornado.cash.", "treatYourNote": "Traitez votre note d'enregistrement comme une clé privée - ne la partagez jamais avec quiconque, y compris les développeurs de tornado cash.",
"saveAsFile": "Le navigateur va vous demander de sauvegarder votre note d'enregistrement sous forme de fichier:", "saveAsFile": "Le navigateur va vous demander de sauvegarder votre note d'enregistrement sous forme de fichier:",
"iBackedUpTheNote": "J'ai sauvegardé ma note d'enregistrement", "iBackedUpTheNote": "J'ai sauvegardé ma note d'enregistrement",
"iEncryptedTheNote": "Créer une sauvegarde de cette note d'enregistrement dans la Blockchain avec votre Compte : {address}", "iEncryptedTheNote": "Créer une sauvegarde de cette note d'enregistrement dans la Blockchain avec votre Compte : {address}",
@ -56,7 +56,7 @@
"pleaseEnterYourNote": "Veuillez entrer votre note d'enregistrement", "pleaseEnterYourNote": "Veuillez entrer votre note d'enregistrement",
"turnOnWasm": "Erreur: Veuillez activer WebAssembly dans vos réglages de navigateur.<br /> Si vous utilisez le navigateur Tor, activez javascript.options.wasm dans about:config", "turnOnWasm": "Erreur: Veuillez activer WebAssembly dans vos réglages de navigateur.<br /> Si vous utilisez le navigateur Tor, activez javascript.options.wasm dans about:config",
"timePassed": "Temps passé", "timePassed": "Temps passé",
"timePassedTooltip": "Même s'il y a plusieurs dépôts après le vôtre, ils pourraient avoir été effectués par le même utilisateur. Par conséquent, nous vous recommandons d'attendre au moins 24 heures avant de retirer des fonds pour vous assurer que plusieurs utilisateurs ont utilisé Tornado.cash pendant cette période.", "timePassedTooltip": "Même s'il y a plusieurs dépôts après le vôtre, ils pourraient avoir été effectués par le même utilisateur. Par conséquent, nous vous recommandons d'attendre au moins 24 heures avant de retirer des fonds pour vous assurer que plusieurs utilisateurs ont utilisé Tornado Cash pendant cette période.",
"subsequentDeposits": "Dépôts postérieurs", "subsequentDeposits": "Dépôts postérieurs",
"subsequentDepositsTooltip": "La preuve la plus probable d'un retrait est celle d'un dépôt récent. De ce fait, nous vous recommandons d'attendre au moins 5 dépôts suivants le vôtre afin d'obtenir un meilleur anonymat.", "subsequentDepositsTooltip": "La preuve la plus probable d'un retrait est celle d'un dépôt récent. De ce fait, nous vous recommandons d'attendre au moins 5 dépôts suivants le vôtre afin d'obtenir un meilleur anonymat.",
"recipientAddress": "Adresse de réception", "recipientAddress": "Adresse de réception",
@ -124,6 +124,7 @@
"userDeposit": "aucun dépôt | seulement 1 dépôt | {n} dépôts", "userDeposit": "aucun dépôt | seulement 1 dépôt | {n} dépôts",
"gasPrice": "Prix du gas", "gasPrice": "Prix du gas",
"totalFee": "Frais total", "totalFee": "Frais total",
"poolFee": "frais de pool",
"networkFee": "Frais de réseau", "networkFee": "Frais de réseau",
"connectYourWalletFirst": "Connecter d'abord votre portefeuille", "connectYourWalletFirst": "Connecter d'abord votre portefeuille",
"changeNetwork": "Changer de réseau", "changeNetwork": "Changer de réseau",
@ -137,7 +138,7 @@
"compliance": "Conformité", "compliance": "Conformité",
"complianceTool": "outil de conformité", "complianceTool": "outil de conformité",
"complianceReport": "Rapport de Conformité", "complianceReport": "Rapport de Conformité",
"complianceSubtitle": "Maintaining financial privacy is essential to preserving our freedom.{newline}However, it should not come at the cost of non-compliance. With Tornado.cash, you can always provide cryptographically verified proof of transactional history using the Ethereum address you used to deposit or withdraw funds. This might be necessary to show the source of assets held in your withdrawal address.{newline}To generate a compliance report, please enter your Tornado.сash Note below.", "complianceSubtitle": "Maintaining financial privacy is essential to preserving our freedom.{newline}However, it should not come at the cost of non-compliance. With Tornado Cash, you can always provide cryptographically verified proof of transactional history using the Ethereum address you used to deposit or withdraw funds. This might be necessary to show the source of assets held in your withdrawal address.{newline}To generate a compliance report, please enter your Tornado Cash Note below.",
"from": "De", "from": "De",
"to": "À", "to": "À",
"withdrawal": "Retrait", "withdrawal": "Retrait",
@ -151,7 +152,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://tornadocash.eth.limo/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://tornadocash.eth.limo/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é",
@ -315,7 +316,7 @@
"setupAccount": { "setupAccount": {
"title": "Configuration de compte", "title": "Configuration de compte",
"label": "Clé de Compte de Notes", "label": "Clé de Compte de Notes",
"description": "Cette clé est utilisée pour encrypter et stocker vos notes privées Tornado.cash sur la blockchain Ethereum. Veuillez la sauvegarder et ne jamais la partager avec qui que ce soit.", "description": "Cette clé est utilisée pour encrypter et stocker vos notes privées Tornado Cash sur la blockchain Ethereum. Veuillez la sauvegarder et ne jamais la partager avec qui que ce soit.",
"setupAccount": "Configurer compte", "setupAccount": "Configurer compte",
"setAccount": "Terminé", "setAccount": "Terminé",
"backedUp": "J'ai sauvegardé la clé du compte de notes", "backedUp": "J'ai sauvegardé la clé du compte de notes",
@ -372,7 +373,7 @@
"recover": "Récupérer le compte", "recover": "Récupérer le compte",
"enterRawDesc": "Utiliser la clé de compte de notes précédemment définie", "enterRawDesc": "Utiliser la clé de compte de notes précédemment définie",
"enterRaw": "Entrez la clé du compte", "enterRaw": "Entrez la clé du compte",
"accSetupDescription": "Cette clé est utilisée pour encrypter et stocker vos notes privées Tornado.cash sur la blockchain Ethereum. Veuillez la sauvegarder et ne jamais la partager avec qui que ce soit." "accSetupDescription": "Cette clé est utilisée pour encrypter et stocker vos notes privées Tornado Cash sur la blockchain Ethereum. Veuillez la sauvegarder et ne jamais la partager avec qui que ce soit."
}, },
"control": { "control": {
"balance": "Solde du compte de notes: {value}", "balance": "Solde du compte de notes: {value}",
@ -385,7 +386,7 @@
"fileDesc": "Télécharger des notes privées brutes par défaut lorsque vous effectuez un dépôt" "fileDesc": "Télécharger des notes privées brutes par défaut lorsque vous effectuez un dépôt"
}, },
"notification": { "notification": {
"text": "Tornado.cash a ajouté la possibilité d'effectuer des sauvegardes de notes sur la blockchaîn. Configurez votre {note} maintenant et pour plus d'informations : {medium}.", "text": "Tornado Cash a ajouté la possibilité d'effectuer des sauvegardes de notes sur la blockchaîn. Configurez votre {note} maintenant et pour plus d'informations : {medium}.",
"link": { "link": {
"note": "compte de notes", "note": "compte de notes",
"medium": "lire plus" "medium": "lire plus"
@ -441,5 +442,6 @@
"name": "Name", "name": "Name",
"fee": "Fee" "fee": "Fee"
}, },
"withdrawalQueueIsOverloaded": "Withdrawal queue is overloaded" "withdrawalQueueIsOverloaded": "Withdrawal queue is overloaded",
"freezeRisk": "{currency} est un jeton centralisé avec un risque de gel."
} }

View File

@ -2,7 +2,7 @@
"closeNotification": "Закрыть", "closeNotification": "Закрыть",
"indexNotification": "Tornado Cash в настоящее время поддерживается сообществом, для получения дополнительной информации посетите {link}", "indexNotification": "Tornado Cash в настоящее время поддерживается сообществом, для получения дополнительной информации посетите {link}",
"indexNotificationLinkText": "https://t.me/TornadoCashOfficialDAO", "indexNotificationLinkText": "https://t.me/TornadoCashOfficialDAO",
"binanceInternalTxsNotification": "Пожалуйста, не используйте адреса кошельков Binance для вывода средств. Внутренние транзакции (включая снятие средств с Tornado.cash) в настоящее время не поддерживаются на бирже Binance. Если у вас возникли проблемы с получением средств, вам следует обратиться в службу поддержки Binance.", "binanceInternalTxsNotification": "Пожалуйста, не используйте адреса кошельков Binance для вывода средств. Внутренние транзакции (включая снятие средств с Tornado Cash) в настоящее время не поддерживаются на бирже Binance. Если у вас возникли проблемы с получением средств, вам следует обратиться в службу поддержки Binance.",
"deposit": "Депозит", "deposit": "Депозит",
"depositButton": "Внести", "depositButton": "Внести",
"withdraw": "Вывод", "withdraw": "Вывод",
@ -20,9 +20,9 @@
"connect": "Подключить", "connect": "Подключить",
"token": "Токен", "token": "Токен",
"amount": "Сумма", "amount": "Сумма",
"amountTooltip": "Каждая сумма представляет собой отдельный экземпляр Tornado.cash с отдельным набором анонимности. Вы можете получить больше информации во вкладке Статистика.", "amountTooltip": "Каждая сумма представляет собой отдельный экземпляр Tornado Cash с отдельным набором анонимности. Вы можете получить больше информации во вкладке Статистика.",
"approvalIsRequired": "Требуется разрешение", "approvalIsRequired": "Требуется разрешение",
"inOrderToUse": "Чтобы использовать {currency}, вы должны активировать его для Tornado.cash. Выберите сумму, которую хотите утвердить:", "inOrderToUse": "Чтобы использовать {currency}, вы должны активировать его для Tornado Cash. Выберите сумму, которую хотите утвердить:",
"unlimited": "Неограниченное", "unlimited": "Неограниченное",
"unlimitedTooltip": "Неограниченное разрешение удобнее, если вы собираетесь сделать несколько депозитов.", "unlimitedTooltip": "Неограниченное разрешение удобнее, если вы собираетесь сделать несколько депозитов.",
"enable": "Включить", "enable": "Включить",
@ -32,7 +32,7 @@
"close": "Закрыть", "close": "Закрыть",
"yourNote": "Ваша приватная Note", "yourNote": "Ваша приватная Note",
"pleaseBackupYourNote": "Пожалуйста, сделайте резервную копию приватной Note, расположенной ниже. Она понадобится вам позже для снятия вашего депозита.", "pleaseBackupYourNote": "Пожалуйста, сделайте резервную копию приватной Note, расположенной ниже. Она понадобится вам позже для снятия вашего депозита.",
"treatYourNote": "Относитесь к приватной Note, как к приватному ключу - никогда и ни с кем не делитесь ею, включая разработчиков Tornado.cash.", "treatYourNote": "Относитесь к приватной Note, как к приватному ключу - никогда и ни с кем не делитесь ею, включая разработчиков Tornado Cash.",
"saveAsFile": "Браузер предложит сохранить вашу Note как файл:", "saveAsFile": "Браузер предложит сохранить вашу Note как файл:",
"iBackedUpTheNote": "Я сделал резервную копию", "iBackedUpTheNote": "Я сделал резервную копию",
"iEncryptedTheNote": "Создать резервную копию этой Note в блокчейне с помощью Аккаунта {address}", "iEncryptedTheNote": "Создать резервную копию этой Note в блокчейне с помощью Аккаунта {address}",
@ -56,7 +56,7 @@
"pleaseEnterYourNote": "Введите Note", "pleaseEnterYourNote": "Введите Note",
"turnOnWasm": "Ошибка: включите WebAssembly в настройках вашего браузера.<br /> Если вы используете браузер Tor, включите javascript.options.wasm в about:config", "turnOnWasm": "Ошибка: включите WebAssembly в настройках вашего браузера.<br /> Если вы используете браузер Tor, включите javascript.options.wasm в about:config",
"timePassed": "Время", "timePassed": "Время",
"timePassedTooltip": "Даже если после вас сделано несколько депозитов, они могли быть сделаны одним и тем же пользователем. Поэтому мы рекомендуем подождать не менее 24 часов, прежде чем снимать средства, чтобы убедиться, что за это время несколько пользователей использовали Tornado.cash.", "timePassedTooltip": "Даже если после вас сделано несколько депозитов, они могли быть сделаны одним и тем же пользователем. Поэтому мы рекомендуем подождать не менее 24 часов, прежде чем снимать средства, чтобы убедиться, что за это время несколько пользователей использовали Tornado Cash.",
"subsequentDeposits": "Депозитов после", "subsequentDeposits": "Депозитов после",
"subsequentDepositsTooltip": "Наиболее вероятным источником снятия средств являются недавние депозиты. Поэтому, мы рекомендуем подождать как минимум 5 депозитов после вашего, чтобы улучшить анонимность.", "subsequentDepositsTooltip": "Наиболее вероятным источником снятия средств являются недавние депозиты. Поэтому, мы рекомендуем подождать как минимум 5 депозитов после вашего, чтобы улучшить анонимность.",
"recipientAddress": "Адрес получателя", "recipientAddress": "Адрес получателя",
@ -94,7 +94,7 @@
"generatingProof": "Создание доказательства", "generatingProof": "Создание доказательства",
"statistics": "Статистика", "statistics": "Статистика",
"anonymitySet": "Количество депозитов", "anonymitySet": "Количество депозитов",
"anonymitySetTooltip": "Общее количество депозитов этой суммы в Tornado.сash. Чем больше это количество, тем лучше (анонимнее)", "anonymitySetTooltip": "Общее количество депозитов этой суммы в Tornado Cash. Чем больше это количество, тем лучше (анонимнее)",
"latestDeposits": "Последние депозиты", "latestDeposits": "Последние депозиты",
"yourIP": "Ваш IP {ip}", "yourIP": "Ваш IP {ip}",
"filterBy": "Фильтр по", "filterBy": "Фильтр по",
@ -124,6 +124,7 @@
"userDeposit": "депозиты отсутствуют | 1 депозит | {n} депозита | {n} депозитов", "userDeposit": "депозиты отсутствуют | 1 депозит | {n} депозита | {n} депозитов",
"gasPrice": "Цена Газа", "gasPrice": "Цена Газа",
"totalFee": "Итоговая комиссия", "totalFee": "Итоговая комиссия",
"poolFee": "лата за пул",
"networkFee": "Комиссия сети", "networkFee": "Комиссия сети",
"connectYourWalletFirst": "Подключите свой кошелек", "connectYourWalletFirst": "Подключите свой кошелек",
"changeNetwork": "Сменить сеть", "changeNetwork": "Сменить сеть",
@ -137,7 +138,7 @@
"compliance": "Соответствие", "compliance": "Соответствие",
"complianceTool": "Проверка соответствия", "complianceTool": "Проверка соответствия",
"complianceReport": "Отчет о соответствии", "complianceReport": "Отчет о соответствии",
"complianceSubtitle": "Maintaining financial privacy is essential to preserving our freedom.{newline}However, it should not come at the cost of non-compliance. With Tornado.cash, you can always provide cryptographically verified proof of transactional history using the Ethereum address you used to deposit or withdraw funds. This might be necessary to show the source of assets held in your withdrawal address.{newline}To generate a compliance report, please enter your Tornado.сash Note below.", "complianceSubtitle": "Maintaining financial privacy is essential to preserving our freedom.{newline}However, it should not come at the cost of non-compliance. With Tornado Cash, you can always provide cryptographically verified proof of transactional history using the Ethereum address you used to deposit or withdraw funds. This might be necessary to show the source of assets held in your withdrawal address.{newline}To generate a compliance report, please enter your Tornado Cash Note below.",
"from": "Отправитель", "from": "Отправитель",
"to": "Получатель", "to": "Получатель",
"withdrawal": "Вывод", "withdrawal": "Вывод",
@ -151,7 +152,7 @@
"nullifierHash": "Nullifier Hash", "nullifierHash": "Nullifier Hash",
"verified": "Подтверждено", "verified": "Подтверждено",
"generatePdfReport": "Сгенерировать PDF отчёт", "generatePdfReport": "Сгенерировать PDF отчёт",
"compliancePrintWarning": "Настоящий отчет о соответствии носит исключительно информационный характер. Вы должны подтвердить действительность этого отчета с помощью средства проверки соответствия Tornado (https://tornadocash.eth.limo/compliance) или с помощью любого другого криптографического программного обеспечения, которое может обработать и проверить информацию, содержащуюся в этом отчете(\"Tornado Compliance Tool\"). Любые расхождения между информацией, приведенной в данном отчете и предоставленной вышеуказанным инструментом, указывают на то, что информация, содержащаяся в этом отчете, является неточной и/или мошеннической.{newline}ОТЧЕТ О СООТВЕТСТВИИ ПРЕДОСТАВЛЯЕТСЯ \"КАК ЕСТЬ,\" БЕЗ ГАРАНТИЙ ЛЮБОГО РОДА, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОГО КАЧЕСТВА, ПРИГОДНОСТЬЮ К КОНКРЕТНОЙ ЦЕЛИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИНСТРУМЕНТА СООТВЕТСТВИЯ TORNADO.CASH НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, ОТНОСЯЩУЮСЯ К ДЕЙСТВИЮ ДОГОВОРОВ, ГРАЖДАНСКИМ ПРАВОНАРУШЕНИЯМ, А ТАКЖЕ ВЫТЕКАЮЩУЮ ИЗ НАСТОЯЩЕГО ОТЧЕТА О СООТВЕТСТВИИ ИЛИ СВЯЗАННУЮ С НИМ.", "compliancePrintWarning": "Настоящий отчет о соответствии носит исключительно информационный характер. Вы должны подтвердить действительность этого отчета с помощью средства проверки соответствия Tornado (https://tornadocash.eth.limo/compliance) или с помощью любого другого криптографического программного обеспечения, которое может обработать и проверить информацию, содержащуюся в этом отчете(\"Tornado Compliance Tool\"). Любые расхождения между информацией, приведенной в данном отчете и предоставленной вышеуказанным инструментом, указывают на то, что информация, содержащаяся в этом отчете, является неточной и/или мошеннической.{newline}ОТЧЕТ О СООТВЕТСТВИИ ПРЕДОСТАВЛЯЕТСЯ \"КАК ЕСТЬ,\" БЕЗ ГАРАНТИЙ ЛЮБОГО РОДА, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОГО КАЧЕСТВА, ПРИГОДНОСТЬЮ К КОНКРЕТНОЙ ЦЕЛИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИНСТРУМЕНТА СООТВЕТСТВИЯ TORNADO CASH НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, ОТНОСЯЩУЮСЯ К ДЕЙСТВИЮ ДОГОВОРОВ, ГРАЖДАНСКИМ ПРАВОНАРУШЕНИЯМ, А ТАКЖЕ ВЫТЕКАЮЩУЮ ИЗ НАСТОЯЩЕГО ОТЧЕТА О СООТВЕТСТВИИ ИЛИ СВЯЗАННУЮ С НИМ.",
"relayRequestFailed": "Relayer {relayerName} не отвечает. Попробуйте сменить Relayer.", "relayRequestFailed": "Relayer {relayerName} не отвечает. Попробуйте сменить Relayer.",
"selectProvider": "Выберите кошелёк", "selectProvider": "Выберите кошелёк",
"walletDoesNotSupported": "Выбранный кошелёк не поддерживается", "walletDoesNotSupported": "Выбранный кошелёк не поддерживается",
@ -376,7 +377,7 @@
"recover": "Восстановить", "recover": "Восстановить",
"enterRawDesc": "Вход с помощью ключа", "enterRawDesc": "Вход с помощью ключа",
"enterRaw": "Ввести ключ аккаунта", "enterRaw": "Ввести ключ аккаунта",
"accSetupDescription": "Этот ключ используется для шифрования и хранения ваших Tornado.cash Note в блокчейне Ethereum. Пожалуйста, сохраните его и никогда никому не передавайте." "accSetupDescription": "Этот ключ используется для шифрования и хранения ваших Tornado Cash Note в блокчейне Ethereum. Пожалуйста, сохраните его и никогда никому не передавайте."
}, },
"control": { "control": {
"balance": "Баланс аккаунта: {value}", "balance": "Баланс аккаунта: {value}",
@ -389,7 +390,7 @@
"fileDesc": "Автоматическое скачивание приватных Note по умолчанию при внесении депозита" "fileDesc": "Автоматическое скачивание приватных Note по умолчанию при внесении депозита"
}, },
"notification": { "notification": {
"text": "Tornado.cash поддерживает резервное копирование Note в блокчейн. Создайте ваш {note} сейчас или узнать {medium}.", "text": "Tornado Cash поддерживает резервное копирование Note в блокчейн. Создайте ваш {note} сейчас или узнать {medium}.",
"link": { "link": {
"note": "аккаунт для Note", "note": "аккаунт для Note",
"medium": "больше информации" "medium": "больше информации"
@ -445,5 +446,6 @@
"name": "Name", "name": "Name",
"fee": "Fee" "fee": "Fee"
}, },
"withdrawalQueueIsOverloaded": "Withdrawal queue is overloaded" "withdrawalQueueIsOverloaded": "Withdrawal queue is overloaded",
"freezeRisk": "{currency} - это централизованный токен с риском заморозки."
} }

View File

@ -2,7 +2,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": "https://t.me/TornadoCashOfficialDAO", "indexNotificationLinkText": "https://t.me/TornadoCashOfficialDAO",
"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",
"withdraw": "Çekme", "withdraw": "Çekme",
@ -22,7 +22,7 @@
"amount": "Miktar", "amount": "Miktar",
"amountTooltip": "Her değer, ayrı bir anonimlik kümesine sahip bağımsız bir Tornado Cash yansımasıdır. Daha fazla bilgi için istatistikler sekmesini kontrol edin.", "amountTooltip": "Her değer, ayrı bir anonimlik kümesine sahip bağımsız bir Tornado Cash yansımasıdır. Daha fazla bilgi için istatistikler sekmesini kontrol edin.",
"approvalIsRequired": "Onay gerekmekte", "approvalIsRequired": "Onay gerekmekte",
"inOrderToUse": "{currency} kullanmak için Tornado.cashi etkinleştirmeniz gerekir. Onaylamak istediğiniz tutarı seçin:", "inOrderToUse": "{currency} kullanmak için Tornado Cashi etkinleştirmeniz gerekir. Onaylamak istediğiniz tutarı seçin:",
"unlimited": "Limitsiz", "unlimited": "Limitsiz",
"unlimitedTooltip": "Birden fazla para yatırma işlemi yapacaksanız sınırsız onay daha uygundur.", "unlimitedTooltip": "Birden fazla para yatırma işlemi yapacaksanız sınırsız onay daha uygundur.",
"enable": "Etkinleştir", "enable": "Etkinleştir",
@ -32,7 +32,7 @@
"close": "Kapat", "close": "Kapat",
"yourNote": "Özel notunuz", "yourNote": "Özel notunuz",
"pleaseBackupYourNote": "Lütfen notunuzu yedekleyin. Yüklediğiniz tokenları geri çekmek için daha sonra ihtiyacınız olacak.", "pleaseBackupYourNote": "Lütfen notunuzu yedekleyin. Yüklediğiniz tokenları geri çekmek için daha sonra ihtiyacınız olacak.",
"treatYourNote": "Notunuza özel bir anahtar gibi davranın. tornado.cash geliştiricileri dahil hiç kimseyle paylaşmayın.", "treatYourNote": "Notunuza özel bir anahtar gibi davranın. tornado cash geliştiricileri dahil hiç kimseyle paylaşmayın.",
"saveAsFile": "Tarayıcınız notunuzu bir dosya olarak kaydetmenizi isteyecektir:", "saveAsFile": "Tarayıcınız notunuzu bir dosya olarak kaydetmenizi isteyecektir:",
"iBackedUpTheNote": "Notumu yedekledim.", "iBackedUpTheNote": "Notumu yedekledim.",
"iEncryptedTheNote": "Hesabınıza ait notun zincir üzerinde yedeğini oluşturun {address}", "iEncryptedTheNote": "Hesabınıza ait notun zincir üzerinde yedeğini oluşturun {address}",
@ -56,7 +56,7 @@
"pleaseEnterYourNote": "Lütfen notunuzu girin", "pleaseEnterYourNote": "Lütfen notunuzu girin",
"turnOnWasm": "Hata: Lütfen tarayıcı ayarlarınızda WebAssemblyıın. Tor tarayıcı kullanıyorsanız, about:config içinde javascript.options.wasmı etkinleştirin.", "turnOnWasm": "Hata: Lütfen tarayıcı ayarlarınızda WebAssemblyıın. Tor tarayıcı kullanıyorsanız, about:config içinde javascript.options.wasmı etkinleştirin.",
"timePassed": "Zaman aşımı", "timePassed": "Zaman aşımı",
"timePassedTooltip": "Sizin işleminizden sonra birden fazla para yatırma işlemi olsa bile, bunlar aynı kullanıcı tarafından yapılmış olabilir. Bu nedenle, bu süre içinde Tornado.cash kullanan birden fazla kullanıcı olduğundan emin olmak için para çekmeden önce en az 24 saat beklemenizi öneririz.", "timePassedTooltip": "Sizin işleminizden sonra birden fazla para yatırma işlemi olsa bile, bunlar aynı kullanıcı tarafından yapılmış olabilir. Bu nedenle, bu süre içinde Tornado Cash kullanan birden fazla kullanıcı olduğundan emin olmak için para çekmeden önce en az 24 saat beklemenizi öneririz.",
"subsequentDeposits": "Bir sonraki yükleme", "subsequentDeposits": "Bir sonraki yükleme",
"subsequentDepositsTooltip": "En olası para çekme kaynağı, son yüklemelerdir. Bu nedenle, daha iyi anonimlik sağlamak için sizinkinden sonra en az 5 para yatırmaya izin vermenizi öneririz.", "subsequentDepositsTooltip": "En olası para çekme kaynağı, son yüklemelerdir. Bu nedenle, daha iyi anonimlik sağlamak için sizinkinden sonra en az 5 para yatırmaya izin vermenizi öneririz.",
"recipientAddress": "Alıcı adresi", "recipientAddress": "Alıcı adresi",
@ -124,6 +124,7 @@
"userDeposit": "Yükleme yok | Sadece bir yükleme | {n} yüklemeler", "userDeposit": "Yükleme yok | Sadece bir yükleme | {n} yüklemeler",
"gasPrice": "Gas Ücreti", "gasPrice": "Gas Ücreti",
"totalFee": "Toplam ücret", "totalFee": "Toplam ücret",
"poolFee": "havuz ücreti",
"networkFee": "Ağ ücreti", "networkFee": "Ağ ücreti",
"connectYourWalletFirst": "Önce cüzdanınızı bağlayın", "connectYourWalletFirst": "Önce cüzdanınızı bağlayın",
"changeNetwork": "Ağ değiştir", "changeNetwork": "Ağ değiştir",
@ -137,7 +138,7 @@
"compliance": "Uyumluluk", "compliance": "Uyumluluk",
"complianceTool": "uyumluluk aracı", "complianceTool": "uyumluluk aracı",
"complianceReport": "Uyumluluk Raporu", "complianceReport": "Uyumluluk Raporu",
"complianceSubtitle": "Finansal gizliliği korumak, özgürlüğümüzü korumak için çok önemlidir.{newline}Ancak, uyumsuzluk pahasına olmamalıdır. Tornado.cash ile,para yatırmak veya para çekmek için kullandığınız Ethereum adresini kullanarak her zaman kriptografik olarak doğrulanmış işlem geçmişi kanıtını sağlayabilirsiniz. Çekim adresinizde tutulan varlıkların kaynağını göstermek için gerekli olabilir.{newline}Bir uygunluk raporu oluşturmak için lütfen aşağıya Tornado.сash Notunuzu girin.", "complianceSubtitle": "Finansal gizliliği korumak, özgürlüğümüzü korumak için çok önemlidir.{newline}Ancak, uyumsuzluk pahasına olmamalıdır. Tornado Cash ile,para yatırmak veya para çekmek için kullandığınız Ethereum adresini kullanarak her zaman kriptografik olarak doğrulanmış işlem geçmişi kanıtını sağlayabilirsiniz. Çekim adresinizde tutulan varlıkların kaynağını göstermek için gerekli olabilir.{newline}Bir uygunluk raporu oluşturmak için lütfen aşağıya Tornado Cash Notunuzu girin.",
"from": "Kimden", "from": "Kimden",
"to": "Kime", "to": "Kime",
"withdrawal": "Çekim", "withdrawal": "Çekim",
@ -151,7 +152,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://tornadocash.eth.limo/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://tornadocash.eth.limo/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",
@ -315,7 +316,7 @@
"setupAccount": { "setupAccount": {
"title": "Hesap kurulumu", "title": "Hesap kurulumu",
"label": "Not hesabı anahtarı", "label": "Not hesabı anahtarı",
"description": "Bu anahtar, Tornado.cash özel notlarınızı Ethereum blok zincirinde şifrelemek ve saklamak için kullanılır. Lütfen yedekleyin ve asla kimseyle paylaşmayın.", "description": "Bu anahtar, Tornado Cash özel notlarınızı Ethereum blok zincirinde şifrelemek ve saklamak için kullanılır. Lütfen yedekleyin ve asla kimseyle paylaşmayın.",
"setupAccount": "Hesap kurulumu", "setupAccount": "Hesap kurulumu",
"setAccount": "Tamamla", "setAccount": "Tamamla",
"backedUp": "Not hesabı anahtarımı yedekledim", "backedUp": "Not hesabı anahtarımı yedekledim",
@ -372,7 +373,7 @@
"recover": "Hesabı kurtar", "recover": "Hesabı kurtar",
"enterRawDesc": "Önceden ayarlanmış Not Hesabı anahtarını kullan", "enterRawDesc": "Önceden ayarlanmış Not Hesabı anahtarını kullan",
"enterRaw": "Hesap anahtarını girin", "enterRaw": "Hesap anahtarını girin",
"accSetupDescription": "Bu anahtar, Tornado.cash özel notlarınızı Ethereum blok zincirinde şifrelemek ve saklamak için kullanılır. Lütfen yedekleyin ve asla kimseyle paylaşmayın." "accSetupDescription": "Bu anahtar, Tornado Cash özel notlarınızı Ethereum blok zincirinde şifrelemek ve saklamak için kullanılır. Lütfen yedekleyin ve asla kimseyle paylaşmayın."
}, },
"control": { "control": {
"balance": "Not hesabı bakiyesi: {value}", "balance": "Not hesabı bakiyesi: {value}",
@ -385,7 +386,7 @@
"fileDesc": "Para yatırırken ham özel notları varsayılan olarak indirin" "fileDesc": "Para yatırırken ham özel notları varsayılan olarak indirin"
}, },
"notification": { "notification": {
"text": "Tornado.cash, zincir üstü not yedeklemeleri ekledi. {note} veya {medium} bilgilerinizi şimdi ayarlayın.", "text": "Tornado Cash, zincir üstü not yedeklemeleri ekledi. {note} veya {medium} bilgilerinizi şimdi ayarlayın.",
"link": { "link": {
"note": "Not hesabı", "note": "Not hesabı",
"medium": "Daha fazla bilgi" "medium": "Daha fazla bilgi"
@ -441,5 +442,6 @@
"name": "İsim", "name": "İsim",
"fee": "Ücret" "fee": "Ücret"
}, },
"withdrawalQueueIsOverloaded": "Çekim kuyruğu aşırı yoğun" "withdrawalQueueIsOverloaded": "Çekim kuyruğu aşırı yoğun",
"freezeRisk": "{currency} merkezileştirilmiş bir token olup dondurulma riski taşır."
} }

View File

@ -2,7 +2,7 @@
"closeNotification": "Закрити повідомлення", "closeNotification": "Закрити повідомлення",
"indexNotification": "Tornado Cash зараз обслуговується спільнотою, щоб дізнатися більше, відвідайте {link}", "indexNotification": "Tornado Cash зараз обслуговується спільнотою, щоб дізнатися більше, відвідайте {link}",
"indexNotificationLinkText": "https://t.me/TornadoCashOfficialDAO", "indexNotificationLinkText": "https://t.me/TornadoCashOfficialDAO",
"binanceInternalTxsNotification": "Будь ласка, не використовуйте адреси гаманців Binance для виведення коштів. Внутрішні транзакції (включаючи зняття коштів з Tornado.cash) в даний час не підтримуються на біржі Binance. Якщо у вас виникли проблеми з отриманням коштів, вам слід звернутися в службу підтримки Binance.", "binanceInternalTxsNotification": "Будь ласка, не використовуйте адреси гаманців Binance для виведення коштів. Внутрішні транзакції (включаючи зняття коштів з Tornado Cash) в даний час не підтримуються на біржі Binance. Якщо у вас виникли проблеми з отриманням коштів, вам слід звернутися в службу підтримки Binance.",
"deposit": "Депозит", "deposit": "Депозит",
"depositButton": "Внести", "depositButton": "Внести",
"withdraw": "Вивід", "withdraw": "Вивід",
@ -22,7 +22,7 @@
"amount": "Кількість", "amount": "Кількість",
"amountTooltip": "Кожна сума являє собою окремий екземпляр Tornado Cash з окремим набором анонімності. Ви можете отримати більше інформації у вкладці Статистика.", "amountTooltip": "Кожна сума являє собою окремий екземпляр Tornado Cash з окремим набором анонімності. Ви можете отримати більше інформації у вкладці Статистика.",
"approvalIsRequired": "Потрібен дозвіл", "approvalIsRequired": "Потрібен дозвіл",
"inOrderToUse": "Щоб використовувати {currency} ви повинні активувати його для Tornado.cash. Виберіть суму, яку хочете затвердити::", "inOrderToUse": "Щоб використовувати {currency} ви повинні активувати його для Tornado Cash. Виберіть суму, яку хочете затвердити::",
"unlimited": "Необмежено", "unlimited": "Необмежено",
"unlimitedTooltip": "Необмежений дозвіл зручніше, якщо ви збираєтеся зробити кілька депозитів.", "unlimitedTooltip": "Необмежений дозвіл зручніше, якщо ви збираєтеся зробити кілька депозитів.",
"enable": "Увімкнути", "enable": "Увімкнути",
@ -32,7 +32,7 @@
"close": "Закрити", "close": "Закрити",
"yourNote": "Ваша приватна Note", "yourNote": "Ваша приватна Note",
"pleaseBackupYourNote": "Будь ласка, зробіть резервну копію приватної Note, розташованої нижче. Вона знадобиться вам пізніше для зняття вашого депозиту.", "pleaseBackupYourNote": "Будь ласка, зробіть резервну копію приватної Note, розташованої нижче. Вона знадобиться вам пізніше для зняття вашого депозиту.",
"treatYourNote": "Ставтеся до приватної Note так само, як і приватному ключу - ніколи і ні з ким не діліться нею, включаючи розробників tornado.cash.", "treatYourNote": "Ставтеся до приватної Note так само, як і приватному ключу - ніколи і ні з ким не діліться нею, включаючи розробників tornado cash.",
"saveAsFile": "Браузер попросить зберегти вашу Note як файл:", "saveAsFile": "Браузер попросить зберегти вашу Note як файл:",
"iBackedUpTheNote": "Я зробив резервну копію", "iBackedUpTheNote": "Я зробив резервну копію",
"iEncryptedTheNote": "Створити мережеву резервну копію цієї Note за допомогою Акаунта {address}", "iEncryptedTheNote": "Створити мережеву резервну копію цієї Note за допомогою Акаунта {address}",
@ -55,7 +55,7 @@
"pleaseEnterYourNote": "Введіть Note", "pleaseEnterYourNote": "Введіть Note",
"turnOnWasm": "Помилка: увімкніть WebAssembly в налаштуваннях вашого браузера.<br /> Якщо ви використовуєте браузер Tor, включите javascript.options.wasm в about:config", "turnOnWasm": "Помилка: увімкніть WebAssembly в налаштуваннях вашого браузера.<br /> Якщо ви використовуєте браузер Tor, включите javascript.options.wasm в about:config",
"timePassed": "Час", "timePassed": "Час",
"timePassedTooltip": "Навіть якщо після вас зроблено кілька депозитів, вони могли бути зроблені одним і тим же користувачем. Тому ми рекомендуємо почекати не менше 24 годин, перш ніж знімати кошти, щоб переконатися, що за цей час кілька користувачів використовували Tornado.cash.", "timePassedTooltip": "Навіть якщо після вас зроблено кілька депозитів, вони могли бути зроблені одним і тим же користувачем. Тому ми рекомендуємо почекати не менше 24 годин, перш ніж знімати кошти, щоб переконатися, що за цей час кілька користувачів використовували Tornado Cash.",
"subsequentDeposits": "Депозитів після", "subsequentDeposits": "Депозитів після",
"subsequentDepositsTooltip": "Найбільш імовірним джерелом зняття коштів є недавні депозити. Тому, ми рекомендуємо почекати як мінімум 5 депозитів після вашого, щоб поліпшити анонімність.", "subsequentDepositsTooltip": "Найбільш імовірним джерелом зняття коштів є недавні депозити. Тому, ми рекомендуємо почекати як мінімум 5 депозитів після вашого, щоб поліпшити анонімність.",
"recipientAddress": "Адреса одержувача", "recipientAddress": "Адреса одержувача",
@ -93,7 +93,7 @@
"generatingProof": "Створення доказу", "generatingProof": "Створення доказу",
"statistics": "Статистика", "statistics": "Статистика",
"anonymitySet": "Кількість депозитів", "anonymitySet": "Кількість депозитів",
"anonymitySetTooltip": "Загальна кількість депозитів цієї суми в Tornado.Cash. Чим більше це кількість, тим краще (анонімніше)", "anonymitySetTooltip": "Загальна кількість депозитів цієї суми в Tornado Cash. Чим більше це кількість, тим краще (анонімніше)",
"latestDeposits": "Останні депозити", "latestDeposits": "Останні депозити",
"yourIP": "Ваш IP {ip}", "yourIP": "Ваш IP {ip}",
"filterBy": "Фільтр по", "filterBy": "Фільтр по",
@ -123,6 +123,7 @@
"userDeposit": "депозити відсутні | тільки 1 депозит | {n} депозиту | {n} депозитів", "userDeposit": "депозити відсутні | тільки 1 депозит | {n} депозиту | {n} депозитів",
"gasPrice": "Ціна Газу", "gasPrice": "Ціна Газу",
"totalFee": "Підсумкова комісія", "totalFee": "Підсумкова комісія",
"poolFee": "лата за пул",
"networkFee": "Комісія мережі", "networkFee": "Комісія мережі",
"connectYourWalletFirst": "Підключіть свій гаманець", "connectYourWalletFirst": "Підключіть свій гаманець",
"changeNetwork": "Змінити мережу", "changeNetwork": "Змінити мережу",
@ -136,7 +137,7 @@
"compliance": "Відповідність", "compliance": "Відповідність",
"complianceTool": "Перевірка відповідності", "complianceTool": "Перевірка відповідності",
"complianceReport": "Звіт про відповідність", "complianceReport": "Звіт про відповідність",
"complianceSubtitle": "Конфіденційність фінансів є необхідною умовою збереження наших свобод. {Newline} Однак, вона не повинна досягатися за рахунок недотримання встановлених правил і стандартів. {Newline} З Tornado.cash ви завжди зможете отримати криптографічно достовірне підтвердження історії транзакцій. Для цього вам знадобиться лише адреса Ethereum, яку ви використовували для введення або виведення коштів. Підтвердження може бути необхідно для того, щоб обґрунтувати походження активів, що зберігаються на вашу адресу. {newline} Для створення звіту про відповідність, будь ласка, введіть ідентифікатор вашої Note Tornado.cash нижче. ", "complianceSubtitle": "Конфіденційність фінансів є необхідною умовою збереження наших свобод. {Newline} Однак, вона не повинна досягатися за рахунок недотримання встановлених правил і стандартів. {Newline} З Tornado Cash ви завжди зможете отримати криптографічно достовірне підтвердження історії транзакцій. Для цього вам знадобиться лише адреса Ethereum, яку ви використовували для введення або виведення коштів. Підтвердження може бути необхідно для того, щоб обґрунтувати походження активів, що зберігаються на вашу адресу. {newline} Для створення звіту про відповідність, будь ласка, введіть ідентифікатор вашої Note Tornado Cash нижче. ",
"from": "Відправник", "from": "Відправник",
"to": "Одержувач", "to": "Одержувач",
"withdrawal": "Вивід", "withdrawal": "Вивід",
@ -150,7 +151,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://tornadocash.eth.limo/compliance) чи за допомогою будь-якого іншого криптографічного програмного забезпечення, яке може обробити і перевірити інформацію, що міститься в цьому звіті (\"Tornado Compliance Tool\"). Будь-які розбіжності між інформацією, наведеною в даному звіті та наданої вищевказаним інструментом, вказують на те, що інформація, що міститься в цьому звіті, є неточною і/або шахрайської. {newline} ЗВІТ ПРО ВІДПОВІДНІСТЬ НАДАЄТЬСЯ \"ЯК Є,\" БЕЗ ГАРАНТІЇ, ПРЯМИХ АБО НЕПРЯМИХ, У ТОМУ ЧИСЛІ, АЛЕ НЕ ОБМЕЖУЮЧИСЬ ГАРАНТІЯМИ ТОВАРНОЇ ЯКОСТІ, ПРИДАТНІ ДО КОНКРЕТНОЇ МЕТИ. НІ ЗА ЯКИХ ОБСТАВИН АВТОРИ ІНСТРУМЕНТУ ВІДПОВІДНОСТІ TORNADO CASH НЕ БУДУТЬ НЕСТИ ВІДПОВІДАЛЬНІСТЬ ЗА БУДЬ-ЯКІ ПРЕТЕНЗІЇ, ЗБИТКИ АБО ІНШУ ВІДПОВІДАЛЬНІСТЬ, ЩО ВІДНОСИТЬСЯ ДО ДІЇ ДОГОВОРІВ, ЦИВІЛЬНИХ ПРАВОПОРУШЕНЬ, А ТАКОЖ ЩО ВИНИКАЄ ВНАСЛІДОК ДО ЦЬОГО ЗВІТУ ПРО ВІДПОВІДНІСТЬ АБО ПОВ'ЯЗАНИХ З НИМ. ",
"relayRequestFailed": "Relayer {relayerName} не відповідає. Спробуйте вибрати інший.", "relayRequestFailed": "Relayer {relayerName} не відповідає. Спробуйте вибрати інший.",
"selectProvider": "Виберіть гаманець", "selectProvider": "Виберіть гаманець",
"walletDoesNotSupported": "Ваш гаманець не підтримується", "walletDoesNotSupported": "Ваш гаманець не підтримується",
@ -314,7 +315,7 @@
"setupAccount": { "setupAccount": {
"title": "Створення аккаунта для Note", "title": "Створення аккаунта для Note",
"label": "Ключ Акаунта для Note", "label": "Ключ Акаунта для Note",
"description": "Цей ключ використовується для шифрування і зберігання ваших приватних Note Tornado.cash в блокчейне ethereum. Будь ласка, зробіть резервну копію ключа і ніколи ні з ким їм не діліться.", "description": "Цей ключ використовується для шифрування і зберігання ваших приватних Note Tornado Cash в блокчейне ethereum. Будь ласка, зробіть резервну копію ключа і ніколи ні з ким їм не діліться.",
"setupAccount": "Створити обліковий запис", "setupAccount": "Створити обліковий запис",
"setAccount": "Завершити", "setAccount": "Завершити",
"backedUp": "Я зробив резервну копію ключа", "backedUp": "Я зробив резервну копію ключа",
@ -371,7 +372,7 @@
"recover": "Відновити", "recover": "Відновити",
"enterRawDesc": "Вхід за допомогою ключа", "enterRawDesc": "Вхід за допомогою ключа",
"enterRaw": "Ввести ключ аккаунта", "enterRaw": "Ввести ключ аккаунта",
"accSetupDescription": "Цей ключ використовується для шифрування і зберігання ваших Tornado.cash Note на блокчейні ethereum. Будь ласка, зробіть резервну копію ключа і ніколи ні з ким нею не діліться." "accSetupDescription": "Цей ключ використовується для шифрування і зберігання ваших Tornado Cash Note на блокчейні ethereum. Будь ласка, зробіть резервну копію ключа і ніколи ні з ким нею не діліться."
}, },
"control": { "control": {
"balance": "Баланс аккаунта: {value}", "balance": "Баланс аккаунта: {value}",
@ -384,7 +385,7 @@
"fileDesc": "Завантаження необроблених приватних поміток за замовчуванням при внесенні депозиту" "fileDesc": "Завантаження необроблених приватних поміток за замовчуванням при внесенні депозиту"
}, },
"notification": { "notification": {
"text": "В Tornado.cash тепер є мережеве резервне копіювання. Створіть ваш {note} зараз або дізнатися {medium}.", "text": "В Tornado Cash тепер є мережеве резервне копіювання. Створіть ваш {note} зараз або дізнатися {medium}.",
"link": { "link": {
"note": "Note аккаунт", "note": "Note аккаунт",
"medium": "більше інформації" "medium": "більше інформації"
@ -424,5 +425,6 @@
"disabled": "Мобільні гаманці не підтримують цю функцію в даний момент." "disabled": "Мобільні гаманці не підтримують цю функцію в даний момент."
} }
}, },
"dayPlural": "0 днів | {n} день | {n} дні | {n} днів" "dayPlural": "0 днів | {n} день | {n} дні | {n} днів",
"freezeRisk": "{currency} - це централізований токен із ризиком заморожування."
} }

View File

@ -2,7 +2,7 @@
"closeNotification": "关闭通知", "closeNotification": "关闭通知",
"indexNotification": "Tornado Cash 现在由社区维护,有关更多信息,请访问 {link}", "indexNotification": "Tornado Cash 现在由社区维护,有关更多信息,请访问 {link}",
"indexNotificationLinkText": "https://t.me/TornadoCashOfficialDAO", "indexNotificationLinkText": "https://t.me/TornadoCashOfficialDAO",
"binanceInternalTxsNotification": "请不要使用Binance钱包地址进行提款。Binance交易所目前不支持内部交易包括Tornado.cash提款。如果您有资金未收到的问题您应该联系Binance支持。", "binanceInternalTxsNotification": "请不要使用Binance钱包地址进行提款。Binance交易所目前不支持内部交易包括Tornado Cash提款。如果您有资金未收到的问题您应该联系Binance支持。",
"deposit": "存款", "deposit": "存款",
"depositButton": "存款", "depositButton": "存款",
"withdraw": "提款", "withdraw": "提款",
@ -32,7 +32,7 @@
"close": "关闭", "close": "关闭",
"yourNote": "你的凭证", "yourNote": "你的凭证",
"pleaseBackupYourNote": "请备份凭证,这很重要!如果你丢失了该凭证,你将无法找回存款!", "pleaseBackupYourNote": "请备份凭证,这很重要!如果你丢失了该凭证,你将无法找回存款!",
"treatYourNote": "将您的笔记当作私钥-切勿与任何人共享,包括 Tornado.cash 开发人员。", "treatYourNote": "将您的笔记当作私钥-切勿与任何人共享,包括 Tornado Cash 开发人员。",
"saveAsFile": "浏览器将要求将您的笔记另存为文件:", "saveAsFile": "浏览器将要求将您的笔记另存为文件:",
"iBackedUpTheNote": "我已备份了凭证", "iBackedUpTheNote": "我已备份了凭证",
"iEncryptedTheNote": "用您的账户{address}创建此凭证的链上备份", "iEncryptedTheNote": "用您的账户{address}创建此凭证的链上备份",
@ -124,6 +124,7 @@
"userDeposit": "无存款 | 只有 1 笔存款 | {n} 笔存款", "userDeposit": "无存款 | 只有 1 笔存款 | {n} 笔存款",
"gasPrice": "Gas 价格", "gasPrice": "Gas 价格",
"totalFee": "总费用", "totalFee": "总费用",
"poolFee": "池费用",
"networkFee": "网络费", "networkFee": "网络费",
"connectYourWalletFirst": "首先连接你的钱包", "connectYourWalletFirst": "首先连接你的钱包",
"changeNetwork": "切换网络", "changeNetwork": "切换网络",
@ -137,7 +138,7 @@
"compliance": "来源证明", "compliance": "来源证明",
"complianceTool": "来源证明工具", "complianceTool": "来源证明工具",
"complianceReport": "来源证明报告", "complianceReport": "来源证明报告",
"complianceSubtitle": "维护财务隐私对于保全我们的自由至关重要。{newline}但是,它不应该以违规为代价。 借助Tornado.cash您始终可以使用您存/取款的地址提供经过加密验证的交易历史证明。 这将会显示您的提款地址的资产来源。{newline}要生成资产来源报告,请在下面输入您的 Tornado.сash存款凭证。", "complianceSubtitle": "维护财务隐私对于保全我们的自由至关重要。{newline}但是,它不应该以违规为代价。 借助Tornado Cash您始终可以使用您存/取款的地址提供经过加密验证的交易历史证明。 这将会显示您的提款地址的资产来源。{newline}要生成资产来源报告,请在下面输入您的Tornado Cash存款凭证。",
"from": "从", "from": "从",
"to": "到", "to": "到",
"withdrawal": "提款", "withdrawal": "提款",
@ -151,7 +152,7 @@
"nullifierHash": "无效符", "nullifierHash": "无效符",
"verified": "已验证", "verified": "已验证",
"generatePdfReport": "生成 PDF 报告", "generatePdfReport": "生成 PDF 报告",
"compliancePrintWarning": "这本来源证明报告仅供参考的。 你应该使用Tornado的来源证明工具来确认报告 (https://tornadocash.eth.limo/compliance) 的有效性,或者与可以算出和验证此处包含信息的任何其他密码学软件 (\"Tornado来源证明工具\") 一起使用。 报告中发现的信息与上述工具提供的信息之间存在任何差异,表明报告中的信息是不正确的{newline} 来源证明报告按 \"原样,\" 提供,不提供任何明示或暗示担保,包括但不限于对适销性,用途的适用性和非侵权专利的担保。 无论是出于合同要求、侵权或其他原因由本来源证明报告引起与相关的任何索赔损害或其他责任Tornado.cash的作者概不负责。", "compliancePrintWarning": "这本来源证明报告仅供参考的。 你应该使用Tornado的来源证明工具来确认报告 (https://tornadocash.eth.limo/compliance) 的有效性,或者与可以算出和验证此处包含信息的任何其他密码学软件 (\"Tornado来源证明工具\") 一起使用。 报告中发现的信息与上述工具提供的信息之间存在任何差异,表明报告中的信息是不正确的{newline} 来源证明报告按 \"原样,\" 提供,不提供任何明示或暗示担保,包括但不限于对适销性,用途的适用性和非侵权专利的担保。 无论是出于合同要求、侵权或其他原因由本来源证明报告引起与相关的任何索赔损害或其他责任Tornado Cash的作者概不负责。",
"relayRequestFailed": "中继者 {relayerName} 无法使用,请选择其他中继者。", "relayRequestFailed": "中继者 {relayerName} 无法使用,请选择其他中继者。",
"selectProvider": "请选择钱包", "selectProvider": "请选择钱包",
"walletDoesNotSupported": "此钱包不受支持", "walletDoesNotSupported": "此钱包不受支持",
@ -319,7 +320,7 @@
"setupAccount": { "setupAccount": {
"title": "账户设置", "title": "账户设置",
"label": "凭证账户密钥", "label": "凭证账户密钥",
"description": "此密钥用于在以太坊区块链上加密和存储您的 Tornado.cash 私人凭证。 请备份它,永远不要与任何人分享。", "description": "此密钥用于在以太坊区块链上加密和存储您的 Tornado Cash 私人凭证。 请备份它,永远不要与任何人分享。",
"setupAccount": "设置账户", "setupAccount": "设置账户",
"setAccount": "完成", "setAccount": "完成",
"backedUp": "我已备份了凭证账户密钥", "backedUp": "我已备份了凭证账户密钥",
@ -376,7 +377,7 @@
"recover": "恢复账户", "recover": "恢复账户",
"enterRawDesc": "使用之前设置的凭证账户密钥", "enterRawDesc": "使用之前设置的凭证账户密钥",
"enterRaw": "输入账户密钥", "enterRaw": "输入账户密钥",
"accSetupDescription": "此密钥用于在以太坊区块链上加密和存储您的 Tornado.cash 私人凭证。 请备份它,永远不要与任何人分享。" "accSetupDescription": "此密钥用于在以太坊区块链上加密和存储您的 Tornado Cash 私人凭证。 请备份它,永远不要与任何人分享。"
}, },
"control": { "control": {
"balance": "凭证账户余额:{value}", "balance": "凭证账户余额:{value}",
@ -389,7 +390,7 @@
"fileDesc": "存款时默认下载原始私人凭证" "fileDesc": "存款时默认下载原始私人凭证"
}, },
"notification": { "notification": {
"text": "Tornado.cash 添加了链上凭证备份。 立即设置您的 {note} 或 查看{medium}信息。", "text": "Tornado Cash 添加了链上凭证备份。 立即设置您的 {note} 或 查看{medium}信息。",
"link": { "link": {
"note": "凭证账户", "note": "凭证账户",
"medium": "阅读更多" "medium": "阅读更多"
@ -445,5 +446,6 @@
"name": "名", "name": "名",
"fee": "费用" "fee": "费用"
}, },
"withdrawalQueueIsOverloaded": "提款队列已超载" "withdrawalQueueIsOverloaded": "提款队列已超载",
"freezeRisk": "{currency}是中心化代币,存在冻结风险。"
} }

View File

@ -1,5 +1,5 @@
export const blockSyncInterval = 10000 export const blockSyncInterval = 10000
export const enabledChains = ['1', '10', '56', '100', '137', '42161', '43114', '11155111'] export const enabledChains = ['1', '10', '56', '61', '100', '137', '42161', '43114', '11155111']
export default { export default {
netId1: { netId1: {
rpcCallRetryAttempt: 15, rpcCallRetryAttempt: 15,
@ -21,29 +21,29 @@ export default {
networkName: 'Ethereum Mainnet', networkName: 'Ethereum Mainnet',
deployedBlock: 9116966, deployedBlock: 9116966,
rpcUrls: { rpcUrls: {
mevblockerRPC: {
name: 'mevblockerRPC',
url: 'https://rpc.mevblocker.io'
},
poktRPC: {
name: 'poktRPC',
url: 'https://eth-pokt.nodies.app'
},
secureRPC: {
name: 'secureRPC',
url: 'https://api.securerpc.com/v1'
},
flashbotRPC: { flashbotRPC: {
name: 'flashbotRPC', name: 'flashbotRPC',
url: 'https://rpc.flashbots.net' url: 'https://rpc.flashbots.net'
}, },
blockpiRPC: { tornadoRPC: {
name: 'blockpiRPC', name: 'Tornado RPC',
url: 'https://ethereum.blockpi.network/v1/rpc/public' url: 'https://tornadocash-rpc.com/mainnet'
}, },
publicRPC: { blockscoutRPC: {
name: 'publicRPC', name: 'blockscoutRPC',
url: 'https://ethereum-rpc.publicnode.com' url: 'https://eth.blockscout.com/api/eth-rpc'
},
kyberRPC: {
name: 'kyberRPC',
url: 'https://ethereum-mev-protection.kyberengineering.io'
},
gasHawkRPC: {
name: 'GasHawkRPC',
url: 'https://core.gashawk.io/rpc'
},
lavaRPC: {
name: 'lavaRPC',
url: 'https://eth1.lava.build'
} }
}, },
multicall: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441', multicall: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441',
@ -159,6 +159,10 @@ export default {
name: 'bnbRPC', name: 'bnbRPC',
url: 'https://bsc-dataseed.bnbchain.org' url: 'https://bsc-dataseed.bnbchain.org'
}, },
tornadoRPC: {
name: 'Tornado RPC',
url: 'https://tornadocash-rpc.com/bsc'
},
defibitRPC: { defibitRPC: {
name: 'defibitRPC', name: 'defibitRPC',
url: 'https://bsc-dataseed1.defibit.io' url: 'https://bsc-dataseed1.defibit.io'
@ -196,6 +200,72 @@ export default {
}, },
'tornado-proxy-light.contract.tornadocash.eth': '0x0D5550d52428E7e3175bfc9550207e4ad3859b17' 'tornado-proxy-light.contract.tornadocash.eth': '0x0D5550d52428E7e3175bfc9550207e4ad3859b17'
}, },
netId61: {
rpcCallRetryAttempt: 15,
gasPrices: {
instant: 1,
fast: 1,
standard: 1,
low: 1
},
nativeCurrency: 'etc',
currencyName: 'ETC',
explorerUrl: {
tx: 'https://etc.blockscout.com/tx/',
address: 'https://etc.blockscout.com/address/',
block: 'https://etc.blockscout.com/block/'
},
merkleTreeHeight: 20,
emptyElement: '21663839004416932945382355908790599225266501822907911457504978515578255421292',
networkName: 'Ethereum Classic',
deployedBlock: 22385618,
multicall: '0xA52EE88C0F24EF8b96C3989cAb42cfC6008041A8',
echoContractAccount: '0x6e824e64C2B30Eb542b9917AA2FbEA593daEA5D6',
rpcUrls: {
rivet: {
name: 'rivet',
url: 'https://etc.rivet.link'
},
etcdesktop: {
name: 'etcdesktop',
url: 'https://etc.etcdesktop.com'
},
mytokenpocket: {
name: 'mytokenpocket',
url: 'https://etc.mytokenpocket.vip'
},
xrpc: {
name: '0xrpc',
url: 'https://0xrpc.io/etc'
},
geth: {
name: 'geth',
url: 'https://geth-at.etc-network.info'
},
besu: {
name: 'besu',
url: 'https://besu-at.etc-network.info'
}
},
tokens: {
etc: {
instanceAddress: {
'1': '0x2f56d5aFC058B8734350B162EFEe75ee48f034e0',
'10': '0x59fCB629A23e8eD0a60A0188771E221042260118',
'100': '0x784B3a7a7981B959bd8d9D9e73c2013BE819Fbf2'
},
symbol: 'ETC',
decimals: 18
}
},
ensSubdomainKey: 'etc-tornado',
pollInterval: 10,
constants: {
NOTE_ACCOUNT_BLOCK: 22385618,
ENCRYPTED_NOTES_BLOCK: 22385618
},
'tornado-proxy-light.contract.tornadocash.eth': '0xac97AB4fBd872ea762974CbBB0Ee72351afe16F3'
},
netId137: { netId137: {
rpcCallRetryAttempt: 15, rpcCallRetryAttempt: 15,
gasPrices: { gasPrices: {

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="compliance"> <div class="compliance">
<h1 class="title is-size-1 is-size-2-mobile is-spaced"> <h1 class="title is-size-1 is-size-2-mobile is-spaced">
Tornado.cash <span class="not-print">{{ $t('complianceTool') }}</span> Tornado Cash <span class="not-print">{{ $t('complianceTool') }}</span>
<span class="print">{{ $t('complianceReport') }}</span> <span class="print">{{ $t('complianceReport') }}</span>
</h1> </h1>
<p class="p is-size-6"> <p class="p is-size-6">
@ -114,11 +114,16 @@
<div class="block block-withdrawal"> <div class="block block-withdrawal">
<h3 class="block-item block-item--title"> <h3 class="block-item block-item--title">
{{ $t('withdrawal') }} {{ $t('withdrawal') }}
<span>{{ <span v-if="txDepositInfo.currency !== 'etc'">{{
txWithdrawalInfo.amount txWithdrawalInfo.amount
? `${$n(txWithdrawalInfo.amount)} ${getSymbol(txDepositInfo.currency)}` ? `${$n(txWithdrawalInfo.amount)} ${getSymbol(txDepositInfo.currency)}`
: '-' : '-'
}}</span> }}</span>
<span v-if="txDepositInfo.currency === 'etc'">{{
txWithdrawalInfo.amount
? `${$n(txWithdrawalInfo.amount * 0.997)} ${getSymbol(txDepositInfo.currency)}`
: '-'
}}</span>
</h3> </h3>
<div <div
class="block-item block-item--status" class="block-item block-item--status"
@ -135,7 +140,14 @@
: $t('status') : $t('status')
: $t('noteHasNotBeenSpent') : $t('noteHasNotBeenSpent')
}} }}
<span class="fee">{{ <span v-if="txDepositInfo.currency === 'etc'" class="fee">{{
txWithdrawalInfo.fee
? `${$t('poolFee')} ${$n(txWithdrawalInfo.amount * 0.003)}
${getSymbol(txDepositInfo.currency)},
${$t('relayerFee')} ${$n(txWithdrawalInfo.fee)} ${getSymbol(txDepositInfo.currency)}`
: $t('relayerFee')
}}</span>
<span v-if="txDepositInfo.currency !== 'etc'" class="fee">{{
txWithdrawalInfo.fee txWithdrawalInfo.fee
? `${$t('relayerFee')} ${$n(txWithdrawalInfo.fee)} ${getSymbol(txDepositInfo.currency)}` ? `${$t('relayerFee')} ${$n(txWithdrawalInfo.fee)} ${getSymbol(txDepositInfo.currency)}`
: $t('relayerFee') : $t('relayerFee')
@ -485,7 +497,7 @@ export default {
doc.text(commitment, padding, 147) doc.text(commitment, padding, 147)
doc.text(nullifier, startSecondColumnX, 147) doc.text(nullifier, startSecondColumnX, 147)
doc.setFontSize(20).text('Tornado.cash', padding, 40) doc.setFontSize(20).text('Tornado Cash', padding, 40)
doc.setFontStyle('normal').text(this.$t('complianceReport', 'en'), 65, 40) doc.setFontStyle('normal').text(this.$t('complianceReport', 'en'), 65, 40)
doc.setFontSize(8).text(this.$t('verified', 'en'), padding, 81) doc.setFontSize(8).text(this.$t('verified', 'en'), padding, 81)

View File

@ -9,12 +9,11 @@ function main() {
const IPFS_LOCAL_REGEXP = /.ipfs.localhost:/ const IPFS_LOCAL_REGEXP = /.ipfs.localhost:/
const IPFS_SOP_GATEWAY_REGEXP = /\/ipfs\// const IPFS_SOP_GATEWAY_REGEXP = /\/ipfs\//
if (IPFS_LOCAL_REGEXP.test(window.location.host)) { if (IPFS_LOCAL_REGEXP.test(window.location.host) || whiteListedDomains.includes(window.location.host)) {
return false return false
} else if ( } else if (
IPFS_GATEWAY_REGEXP.test(window.location.host) || IPFS_GATEWAY_REGEXP.test(window.location.host) ||
IPFS_SOP_GATEWAY_REGEXP.test(window.location.host) || IPFS_SOP_GATEWAY_REGEXP.test(window.location.host)
whiteListedDomains.includes(window.location.host)
) { ) {
console.warn('The page has been loaded from ipfs.io. LocalStorage is disabled') console.warn('The page has been loaded from ipfs.io. LocalStorage is disabled')
return true return true

View File

@ -47,6 +47,7 @@ const CHAIN_GRAPH_URLS = {
1: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/Ec6fVMDVqXTDQZ3c4jxcyV3zBXqkdgMWfhdtCgtqn7Sh', 1: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/Ec6fVMDVqXTDQZ3c4jxcyV3zBXqkdgMWfhdtCgtqn7Sh',
10: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/GvkbnEVhLD6KArXpEzLFtSKRmspBW29ApKFqR5FjuP2P', 10: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/GvkbnEVhLD6KArXpEzLFtSKRmspBW29ApKFqR5FjuP2P',
56: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/CiwGzefDBZCavXRPnwarnnF8xDDoLw4boBuySomJWYnV', 56: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/CiwGzefDBZCavXRPnwarnnF8xDDoLw4boBuySomJWYnV',
61: 'https://graph.torndao.com/subgraphs/name/tornadocash/etc-tornado-subgraph',
100: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/F1m8vxuGatCBRvP8fPnnWUJ1oK7kfE1DGdRacqoamLjF', 100: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/F1m8vxuGatCBRvP8fPnnWUJ1oK7kfE1DGdRacqoamLjF',
137: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/HUMgwMYNrPQpnBJgesFXyy5u6jSiJ6u5nNWQng9ayCmD', 137: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/HUMgwMYNrPQpnBJgesFXyy5u6jSiJ6u5nNWQng9ayCmD',
42161: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/8x8o6XFAqYZmiPwrJ51UxGTaZLYyW1fFtghvsEy7a1KJ', 42161: 'https://gateway.thegraph.com/api/{apiKey}/subgraphs/id/8x8o6XFAqYZmiPwrJ51UxGTaZLYyW1fFtghvsEy7a1KJ',

View File

@ -133,11 +133,9 @@ class RelayerRegister {
} }
getCachedData = async () => { getCachedData = async () => {
let blockFrom = REGISTRY_DEPLOYED_BLOCK[1] const blockFrom = REGISTRY_DEPLOYED_BLOCK[1]
try { try {
const blockTo = await this.provider.getBlockNumber()
const cachedEvents = await this.$indexedDB.getAll({ const cachedEvents = await this.$indexedDB.getAll({
storeName: 'register_events' storeName: 'register_events'
}) })
@ -148,8 +146,9 @@ class RelayerRegister {
storeName: 'lastEvents' storeName: 'lastEvents'
}) })
let blockTo = blockFrom
if (lastBlock) { if (lastBlock) {
blockFrom = blockTo >= lastBlock.blockNumber ? lastBlock.blockNumber + 1 : blockTo blockTo = lastBlock.blockNumber + 1
} }
return { blockFrom, blockTo, cachedEvents } return { blockFrom, blockTo, cachedEvents }
@ -171,9 +170,12 @@ class RelayerRegister {
const blockRange = 10000 const blockRange = 10000
// eslint-disable-next-line prefer-const // eslint-disable-next-line prefer-const
let { blockFrom, blockTo, cachedEvents } = await this.getCachedData() let { blockFrom, blockTo, cachedEvents } = await this.getCachedData()
let allRelayers = cachedEvents let firstFetch = false
// There are 114 relayers in total so far,
if (!cachedEvents || !cachedEvents.length) { // If there are less than 114 in the cache,
// It means that the historical data is incorrect and needs to be re-fetch through the subgraph
if (!cachedEvents || !cachedEvents.length || cachedEvents.length < 114) {
firstFetch = true // Get all relayers from the subgraph for the first time
const { lastSyncBlock, events } = await graph.getAllRegisters(blockFrom) const { lastSyncBlock, events } = await graph.getAllRegisters(blockFrom)
if (events.length) { if (events.length) {
@ -184,6 +186,7 @@ class RelayerRegister {
})) }))
} }
} }
let allRelayers = cachedEvents
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
@ -191,9 +194,10 @@ class RelayerRegister {
try { try {
let toBlock let toBlock
let registerRelayerEvents let registerRelayerEvents = cachedEvents
let lastSyncBlock = blockTo let lastSyncBlock = blockTo
if (!firstFetch) {
if (blockDifference <= 0) { if (blockDifference <= 0) {
return cachedEvents return cachedEvents
} else if (blockDifference >= blockRange) { } else if (blockDifference >= blockRange) {
@ -201,16 +205,16 @@ class RelayerRegister {
registerRelayerEvents = await this.batchFetchEvents({ fromBlock, toBlock }) registerRelayerEvents = await this.batchFetchEvents({ fromBlock, toBlock })
lastSyncBlock = toBlock lastSyncBlock = toBlock
} else { } else {
toBlock = fromBlock + blockRange toBlock = currentBlockNumber // Fix toBlock greater than the latest blocknumber
registerRelayerEvents = await this.fetchEvents({ fromBlock, toBlock }, true) registerRelayerEvents = await this.fetchEvents({ fromBlock, toBlock }, true)
lastSyncBlock = toBlock lastSyncBlock = toBlock
} }
}
const relayerEvents = cachedEvents.concat(registerRelayerEvents || [])
const events = [] const events = []
for (let x = 0; x < relayerEvents.length; x++) { for (let x = 0; x < registerRelayerEvents.length; x++) {
const { ensName, relayerAddress } = relayerEvents[x] const { ensName, relayerAddress } = registerRelayerEvents[x]
let ensAddress let ensAddress
if (!isAddress(relayerAddress)) { if (!isAddress(relayerAddress)) {
@ -223,9 +227,12 @@ class RelayerRegister {
events.push({ ensName, relayerAddress: ensAddress }) events.push({ ensName, relayerAddress: ensAddress })
} }
await this.saveEvents({ storeName: 'register_events', lastSyncBlock, events }) if (firstFetch) {
allRelayers = events
} else {
allRelayers = allRelayers.concat(events) allRelayers = allRelayers.concat(events)
}
await this.saveEvents({ storeName: 'register_events', lastSyncBlock, events: allRelayers })
} catch (err) { } catch (err) {
console.log(err) console.log(err)
} }

View File

@ -21,6 +21,8 @@ function getRelayerValidateFunction(netId) {
switch (netId) { switch (netId) {
case 56: case 56:
return ajv.getSchema('bscRelayer') return ajv.getSchema('bscRelayer')
case 61:
return ajv.getSchema('etcRelayer')
case 100: case 100:
return ajv.getSchema('xdaiRelayer') return ajv.getSchema('xdaiRelayer')
case 137: case 137:

View File

@ -0,0 +1,44 @@
import { addressType } from '@/constants'
const statusSchema = {
type: 'object',
properties: {
rewardAccount: addressType,
instances: {
type: 'object',
properties: {
etc: {
type: 'object',
properties: {
instanceAddress: {
type: 'object',
properties: {
'1': addressType,
'10': addressType,
'100': addressType
},
required: ['1', '10', '100']
},
decimals: { enum: [18] }
},
required: ['instanceAddress', 'decimals']
}
},
required: ['etc']
},
netId: { type: 'integer' },
tornadoServiceFee: { type: 'number', maximum: 20, minimum: 0 },
health: {
type: 'object',
properties: {
status: { const: 'true' },
error: { type: 'string' }
},
required: ['status']
},
currentQueue: { type: 'number' }
},
required: ['rewardAccount', 'instances', 'netId', 'tornadoServiceFee', 'health']
}
export { statusSchema }

View File

@ -1,5 +1,6 @@
import { statusSchema as l2Relayer } from './l2' import { statusSchema as l2Relayer } from './l2'
import { statusSchema as bscRelayer } from './bsc' import { statusSchema as bscRelayer } from './bsc'
import { statusSchema as etcRelayer } from './etc'
import { statusSchema as xdaiRelayer } from './xdai' import { statusSchema as xdaiRelayer } from './xdai'
import { statusSchema as defaultRelayer } from './default' import { statusSchema as defaultRelayer } from './default'
import { statusSchema as polygonRelayer } from './polygon' import { statusSchema as polygonRelayer } from './polygon'
@ -8,6 +9,7 @@ import { statusSchema as avalancheRelayer } from './avalanche'
export default { export default {
l2Relayer, l2Relayer,
bscRelayer, bscRelayer,
etcRelayer,
xdaiRelayer, xdaiRelayer,
defaultRelayer, defaultRelayer,
polygonRelayer, polygonRelayer,

View File

@ -292,7 +292,15 @@ export const actions = {
} }
let statuses = await Promise.all(requests) let statuses = await Promise.all(requests)
statuses = statuses.filter((status) => status.isValid) // Filter out invalid and duplicate relayers
statuses = Object.values(
statuses
.filter((item) => item.isValid)
.reduce((statuses, item) => {
statuses[item.name] = item // Filter duplicates by relayer's ENS
return statuses
}, {})
).sort((a, b) => new BN(b.stakeBalance).comparedTo(new BN(a.stakeBalance))) // sort by relayer's stakeBalance
// const validRelayerENSnames = statuses.map((relayer) => relayer.name) // const validRelayerENSnames = statuses.map((relayer) => relayer.name)
commit('SAVE_VALIDATED_RELAYERS', statuses) commit('SAVE_VALIDATED_RELAYERS', statuses)
console.log('filtered statuses ', statuses) console.log('filtered statuses ', statuses)