Tornado CLI 1.0.6-alpha

minor improvements
This commit is contained in:
Tornado Contrib 2024-09-22 06:06:10 +00:00
parent b5c7dace45
commit 083479bafc
Signed by: tornadocontrib
GPG Key ID: 60B4DF1A076C64B1
5 changed files with 783 additions and 840 deletions

994
dist/cli.js vendored

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
{ {
"name": "@tornado/cli", "name": "@tornado/cli",
"version": "1.0.5-alpha", "version": "1.0.6-alpha",
"description": "Modern Toolsets for Privacy Pools on Ethereum", "description": "Modern Toolsets for Privacy Pools on Ethereum",
"main": "./dist/cli.js", "main": "./dist/cli.js",
"types": "./dist/cli.d.ts", "types": "./dist/cli.d.ts",
@ -51,7 +51,7 @@
"optionalDependencies": {}, "optionalDependencies": {},
"devDependencies": { "devDependencies": {
"@colors/colors": "1.5.0", "@colors/colors": "1.5.0",
"@tornado/core": "git+https://git.tornado.ws/tornadocontrib/tornado-core.git#700426acb7a7de16884cb314c3a0220a51682d18", "@tornado/core": "git+https://git.tornado.ws/tornadocontrib/tornado-core.git#d6cfea1d1990f07a8faca2e876c0a6ccea4f603f",
"@typechain/ethers-v6": "^0.5.1", "@typechain/ethers-v6": "^0.5.1",
"@types/figlet": "^1.5.8", "@types/figlet": "^1.5.8",
"@typescript-eslint/eslint-plugin": "^8.6.0", "@typescript-eslint/eslint-plugin": "^8.6.0",

@ -30,7 +30,6 @@ import {
Transaction, Transaction,
getAddress, getAddress,
} from 'ethers'; } from 'ethers';
import type MerkleTree from '@tornado/fixed-merkle-tree';
import { import {
ERC20, ERC20,
ERC20__factory, ERC20__factory,
@ -892,20 +891,9 @@ export function tornadoProgram() {
const depositEvents = (await depositsService.updateEvents()).events as DepositsEvents[]; const depositEvents = (await depositsService.updateEvents()).events as DepositsEvents[];
// If we have MERKLE_WORKER_PATH run worker at background otherwise resolve it here // If we have MERKLE_WORKER_PATH run worker at background otherwise resolve it here
const depositTreeInitiator = await (async () => { const depositTreePromise = MERKLE_WORKER_PATH
if (MERKLE_WORKER_PATH) { ? merkleTreeService.verifyTree(depositEvents)
return () => merkleTreeService.verifyTree(depositEvents) as Promise<MerkleTree>; : await merkleTreeService.verifyTree(depositEvents);
}
return (await merkleTreeService.verifyTree(depositEvents)) as MerkleTree;
})();
let depositTreePromise: Promise<MerkleTree> | MerkleTree;
if (typeof depositTreeInitiator === 'function') {
depositTreePromise = depositTreeInitiator();
} else {
depositTreePromise = depositTreeInitiator;
}
const withdrawalEvents = (await withdrawalsService.updateEvents()).events as WithdrawalsEvents[]; const withdrawalEvents = (await withdrawalsService.updateEvents()).events as WithdrawalsEvents[];
@ -1223,16 +1211,13 @@ export function tornadoProgram() {
const depositEvents = (await depositsService.updateEvents()).events as DepositsEvents[]; const depositEvents = (await depositsService.updateEvents()).events as DepositsEvents[];
// If we have MERKLE_WORKER_PATH run worker at background otherwise resolve it here // If we have MERKLE_WORKER_PATH run worker at background otherwise resolve it here
const depositTreePromise = await (async () => { const depositTreePromise = MERKLE_WORKER_PATH
if (MERKLE_WORKER_PATH) { ? merkleTreeService.verifyTree(depositEvents)
return () => merkleTreeService.verifyTree(depositEvents) as Promise<MerkleTree>; : await merkleTreeService.verifyTree(depositEvents);
}
return (await merkleTreeService.verifyTree(depositEvents)) as MerkleTree;
})();
const [withdrawalEvents] = await Promise.all([ const [withdrawalEvents] = await Promise.all([
withdrawalsService.updateEvents().then(({ events }) => events as WithdrawalsEvents[]), withdrawalsService.updateEvents().then(({ events }) => events as WithdrawalsEvents[]),
typeof depositTreePromise === 'function' ? depositTreePromise() : depositTreePromise, depositTreePromise,
]); ]);
const depositEvent = depositEvents.find(({ commitment }) => commitment === commitmentHex); const depositEvent = depositEvents.find(({ commitment }) => commitment === commitmentHex);
@ -1435,17 +1420,11 @@ export function tornadoProgram() {
const depositEvents = (await depositsService.updateEvents()).events as DepositsEvents[]; const depositEvents = (await depositsService.updateEvents()).events as DepositsEvents[];
// If we have MERKLE_WORKER_PATH run worker at background otherwise resolve it here // If we have MERKLE_WORKER_PATH run worker at background otherwise resolve it here
const depositTreePromise = await (async () => { const depositTreePromise = MERKLE_WORKER_PATH
if (MERKLE_WORKER_PATH) { ? merkleTreeService.verifyTree(depositEvents)
return () => merkleTreeService.verifyTree(depositEvents) as Promise<MerkleTree>; : await merkleTreeService.verifyTree(depositEvents);
}
return (await merkleTreeService.verifyTree(depositEvents)) as MerkleTree;
})();
const [tree] = await Promise.all([ const [tree] = await Promise.all([depositTreePromise, withdrawalsService.updateEvents()]);
typeof depositTreePromise === 'function' ? depositTreePromise() : depositTreePromise,
withdrawalsService.updateEvents(),
]);
if (nativeCurrency === currency) { if (nativeCurrency === currency) {
await treeCache.createTree(depositEvents, tree); await treeCache.createTree(depositEvents, tree);

@ -1,277 +1,68 @@
{ {
"timestamp": 1726890359, "timestamp": 1726984895,
"relayers": [ "relayers": [
{ {
"ensName": "okrelayer.eth", "ensName": "therelayer.eth",
"relayerAddress": "0x0e9D9a828247F5eed7f6D31D213A39805De52441", "relayerAddress": "0xA0F0287683E820FF4211e67C03cf46a87431f4E1",
"isRegistered": true, "isRegistered": true,
"owner": "0x0e9D9a828247F5eed7f6D31D213A39805De52441", "owner": "0xA0F0287683E820FF4211e67C03cf46a87431f4E1",
"stakeBalance": "4666.679387946529032297", "stakeBalance": "1335.888771359625809238",
"hostnames": { "hostnames": {
"1": "okrelayer.xyz", "1": "mainnet.therelayer.xyz",
"56": "binance.okrelayer.xyz", "10": "optimism.therelayer.xyz",
"137": "polygon.okrelayer.xyz", "56": "bsc.therelayer.xyz",
"42161": "arb.okrelayer.xyz" "100": "xdai.therelayer.xyz",
"137": "polygon.therelayer.xyz",
"42161": "arbitrum.therelayer.xyz",
"43114": "avalanche.therelayer.xyz"
} }
}, },
{ {
"ensName": "quick-relayer.eth", "ensName": "cheap-relayer.eth",
"relayerAddress": "0x187541D7D312F742040f270d0221B4Fe577934B0", "relayerAddress": "0x076D4E32C6A5D888fC4658281539c94E778C796d",
"isRegistered": true, "isRegistered": true,
"owner": "0x187541D7D312F742040f270d0221B4Fe577934B0", "owner": "0x076D4E32C6A5D888fC4658281539c94E778C796d",
"stakeBalance": "2931.033250737658918569", "stakeBalance": "500.878420081833044818",
"hostnames": { "hostnames": {
"1": "quick-relayer.xyz" "1": "mainnet-tornado.cheap-relayer.xyz",
"56": "bsc-tornado.cheap-relayer.xyz",
"137": "polygon-tornado.cheap-relayer.xyz",
"43114": "avalanche-tornado.cheap-relayer.xyz"
} }
}, },
{ {
"ensName": "safety-relayer.eth", "ensName": "lowcost.eth",
"relayerAddress": "0xF1F4F76c9969eFbFB5C9A90a6E44c0E3696D3EF8", "relayerAddress": "0x28907F21F43B419F34226d6f10aCbCf1832b1D4d",
"isRegistered": true, "isRegistered": true,
"owner": "0xF1F4F76c9969eFbFB5C9A90a6E44c0E3696D3EF8", "owner": "0x28907F21F43B419F34226d6f10aCbCf1832b1D4d",
"stakeBalance": "500.879215977529089999", "stakeBalance": "500.279638085962965981",
"hostnames": { "hostnames": {
"1": "a-relayer.top", "1": "mainnet-tornado.low-fee.xyz",
"56": "bsc.a-relayer.top", "56": "bsc-tornado.low-fee.xyz",
"137": "polygon.a-relayer.top" "137": "polygon-tornado.low-fee.xyz",
"43114": "avalanche-tornado.low-fee.xyz"
} }
}, },
{ {
"ensName": "k-relayer.eth", "ensName": "relayernews.eth",
"relayerAddress": "0xC49415493eB3Ec64a0F13D8AA5056f1CfC4ce35c", "relayerAddress": "0x6289C8a70EE2Ed6914834CaEa431F9a82c7eAf70",
"isRegistered": true, "isRegistered": true,
"owner": "0xC49415493eB3Ec64a0F13D8AA5056f1CfC4ce35c", "owner": "0x6289C8a70EE2Ed6914834CaEa431F9a82c7eAf70",
"stakeBalance": "2194.529689989084430299", "stakeBalance": "1661.181918638614466424",
"hostnames": { "hostnames": {
"1": "black-hardy.com", "1": "mainnet-tornado.relayernews.xyz",
"56": "bsc.black-hardy.com" "56": "bsc-tornado.relayernews.xyz"
} }
}, },
{ {
"ensName": "relayer007.eth", "ensName": "on-sale.eth",
"relayerAddress": "0xa0109274F53609f6Be97ec5f3052C659AB80f012", "relayerAddress": "0x63606C4011e97a73BCd844Cde6a38D45a728BC0E",
"isRegistered": true, "isRegistered": true,
"owner": "0xa0109274F53609f6Be97ec5f3052C659AB80f012", "owner": "0x63606C4011e97a73BCd844Cde6a38D45a728BC0E",
"stakeBalance": "4989.637826137906607638", "stakeBalance": "4476.543684932880020592",
"hostnames": { "hostnames": {
"1": "torn.relayersdao.finance", "1": "mainnet-tornado.appleworld.club",
"56": "bsc.relayersdao.finance", "56": "bsc-tornado.appleworld.club"
"137": "matic.relayersdao.finance"
}
},
{
"ensName": "reltor.eth",
"relayerAddress": "0x4750BCfcC340AA4B31be7e71fa072716d28c29C5",
"isRegistered": true,
"owner": "0x4750BCfcC340AA4B31be7e71fa072716d28c29C5",
"stakeBalance": "19999.983956326624881327",
"hostnames": {
"1": "eth.reltor.su",
"56": "binance.reltor.su",
"137": "polygon.reltor.su"
}
},
{
"ensName": "best-relay.eth",
"relayerAddress": "0xe5A4c70113b90566BC5f80a3866935d0d52F990E",
"isRegistered": true,
"owner": "0xe5A4c70113b90566BC5f80a3866935d0d52F990E",
"stakeBalance": "2002.0",
"hostnames": {
"1": "best-relay.gato-miaouw.xyz",
"56": "bsc.gato-miaouw.xyz"
}
},
{
"ensName": "crelayer.eth",
"relayerAddress": "0x180c58B7305152357142b33Eea94cBB152058B61",
"isRegistered": true,
"owner": "0x180c58B7305152357142b33Eea94cBB152058B61",
"stakeBalance": "1460.389956347917729137",
"hostnames": {
"1": "eth.crelayer.xyz",
"56": "bsc.crelayer.xyz"
}
},
{
"ensName": "torn-city.eth",
"relayerAddress": "0xd04e9f0945DEA8373D882C730e2c93a74B591796",
"isRegistered": true,
"owner": "0xd04e9f0945DEA8373D882C730e2c93a74B591796",
"stakeBalance": "6715.49550101901162633",
"hostnames": {
"1": "torn-city.com",
"56": "bsc.torn-city.com"
}
},
{
"ensName": "torrelayer.eth",
"relayerAddress": "0x2Ee39Ff05643bC7cc9ed31B71e142429044A425C",
"isRegistered": true,
"owner": "0x2Ee39Ff05643bC7cc9ed31B71e142429044A425C",
"stakeBalance": "3734.220945056618867324",
"hostnames": {
"1": "tornima.xyz",
"56": "binance.tornima.xyz"
}
},
{
"ensName": "tornxdo.eth",
"relayerAddress": "0xB399aa4c2F1678f72529Cd125F82cEA2c2a823eD",
"isRegistered": true,
"owner": "0xB399aa4c2F1678f72529Cd125F82cEA2c2a823eD",
"stakeBalance": "983.310689667160962345",
"hostnames": {
"1": "tornado.evmjunkie.xyz"
}
},
{
"ensName": "0xgm777.eth",
"relayerAddress": "0x94596B6A626392F5D972D6CC4D929a42c2f0008c",
"isRegistered": true,
"owner": "0x94596B6A626392F5D972D6CC4D929a42c2f0008c",
"stakeBalance": "1979.261700994868938309",
"hostnames": {
"1": "main.gm777.xyz",
"56": "bsc.gm777.xyz",
"42161": "arb.gm777.xyz"
}
},
{
"ensName": "relayer-secure.eth",
"relayerAddress": "0xCEdac436cEA98E93F471331eCC693fF41D730921",
"isRegistered": true,
"owner": "0xCEdac436cEA98E93F471331eCC693fF41D730921",
"stakeBalance": "548.198082306127582623",
"hostnames": {
"1": "relsecc-mainnet.moon-relayer.app"
}
},
{
"ensName": "default-relayer.eth",
"relayerAddress": "0x5555555731006f71f121144534Ca7C8799F66AA3",
"isRegistered": true,
"owner": "0x5555555731006f71f121144534Ca7C8799F66AA3",
"stakeBalance": "5011.216884015043970278",
"hostnames": {
"1": "eth.default-relayer.com",
"56": "bsc.default-relayer.com"
}
},
{
"ensName": "t-relayer.eth",
"relayerAddress": "0x000000Cd6521Ed1a65FAe0678eA15aF4EEAD74fe",
"isRegistered": true,
"owner": "0x000000Cd6521Ed1a65FAe0678eA15aF4EEAD74fe",
"stakeBalance": "6079.008889316501226288",
"hostnames": {
"1": "eth.t-relayer.com",
"56": "bsc.t-relayer.com"
}
},
{
"ensName": "secure-relay.eth",
"relayerAddress": "0x1036AF02bCDb2e3A4db2d3D40b29e5054EDc79BA",
"isRegistered": true,
"owner": "0x1036AF02bCDb2e3A4db2d3D40b29e5054EDc79BA",
"stakeBalance": "6751.661507930994067422",
"hostnames": {
"1": "torn-relayer.duckdns.org"
}
},
{
"ensName": "torntorn.eth",
"relayerAddress": "0x1247749d7E28D357B4279110af0802603AC526cE",
"isRegistered": true,
"owner": "0x1247749d7E28D357B4279110af0802603AC526cE",
"stakeBalance": "5535.435044583932530913",
"hostnames": {
"1": "eth.fsdhreu39jfk.com",
"56": "bsc.fsdhreu39jfk.com",
"100": "gnosis.tornad0.com",
"137": "polygon.tornad0.com"
}
},
{
"ensName": "bitah.eth",
"relayerAddress": "0x7E3893725d4e238B4c8c83375bBAd024a66Ffa42",
"isRegistered": true,
"owner": "0x7E3893725d4e238B4c8c83375bBAd024a66Ffa42",
"stakeBalance": "503.237718892072788154",
"hostnames": {
"1": "tornado.bitah.link",
"56": "bsc-tornado.bitah.link",
"137": "polygon-tornado.bitah.link"
}
},
{
"ensName": "shadow-out.eth",
"relayerAddress": "0x9Ee26a4bFd731E8e742B65bF955814EADdd7F151",
"isRegistered": true,
"owner": "0x9Ee26a4bFd731E8e742B65bF955814EADdd7F151",
"stakeBalance": "3571.639136672079169166",
"hostnames": {
"1": "livetobecomeavillain",
"56": "justarandomdude",
"100": "everythingisburning"
}
},
{
"ensName": "torn-eth.eth",
"relayerAddress": "0x42FecB4137aFF76E0E85702ff4F339DbFe6D859E",
"isRegistered": true,
"owner": "0x42FecB4137aFF76E0E85702ff4F339DbFe6D859E",
"stakeBalance": "978.62598484549460861",
"hostnames": {
"1": "mainnet-tornado.50swap.com"
}
},
{
"ensName": "0xproxy.eth",
"relayerAddress": "0x08657a1f4C1F06d657F31767831421EE7FaDf549",
"isRegistered": true,
"owner": "0x08657a1f4C1F06d657F31767831421EE7FaDf549",
"stakeBalance": "705.605817336537209483",
"hostnames": {
"1": "mainnet.0x0relayer.xyz",
"56": "bsc.0x0relayer.xyz",
"137": "polygon.0x0relayer.xyz"
}
},
{
"ensName": "wetez.eth",
"relayerAddress": "0xe6184DA55174Cc0263a17eA2fc24E48511766505",
"isRegistered": true,
"owner": "0xe6184DA55174Cc0263a17eA2fc24E48511766505",
"stakeBalance": "567.980734786905511868",
"hostnames": {
"1": "tornado-1.wetez.io"
}
},
{
"ensName": "0xtorn.eth",
"relayerAddress": "0x9Ffbd3f9eE795A4fDa880ED553A2A4BD6D45CE5B",
"isRegistered": true,
"owner": "0x9Ffbd3f9eE795A4fDa880ED553A2A4BD6D45CE5B",
"stakeBalance": "4627.036617270139345308",
"hostnames": {
"1": "mainnet.al1n.cc",
"56": "bsc-tornado.al1n.cc"
}
},
{
"ensName": "reslayer.eth",
"relayerAddress": "0x7Ba6781620c91676B070D319E7E894BFd4A9eC81",
"isRegistered": true,
"owner": "0x7Ba6781620c91676B070D319E7E894BFd4A9eC81",
"stakeBalance": "879.305690438201312145",
"hostnames": {
"1": "mainnet-tornado.reslayer.xyz",
"56": "bsc-tornado.reslayer.xyz",
"100": "gnosis-tornado.reslayer.xyz",
"137": "polygon-tornado.reslayer.xyz",
"42161": "arbitrum-tornado.reslayer.xyz",
"43114": "avalanche-tornado.reslayer.xyz"
} }
}, },
{ {
@ -290,67 +81,276 @@
} }
}, },
{ {
"ensName": "on-sale.eth", "ensName": "reslayer.eth",
"relayerAddress": "0x63606C4011e97a73BCd844Cde6a38D45a728BC0E", "relayerAddress": "0x7Ba6781620c91676B070D319E7E894BFd4A9eC81",
"isRegistered": true, "isRegistered": true,
"owner": "0x63606C4011e97a73BCd844Cde6a38D45a728BC0E", "owner": "0x7Ba6781620c91676B070D319E7E894BFd4A9eC81",
"stakeBalance": "4476.543684932880020592", "stakeBalance": "879.305690438201312145",
"hostnames": { "hostnames": {
"1": "mainnet-tornado.appleworld.club", "1": "mainnet-tornado.reslayer.xyz",
"56": "bsc-tornado.appleworld.club" "56": "bsc-tornado.reslayer.xyz",
"100": "gnosis-tornado.reslayer.xyz",
"137": "polygon-tornado.reslayer.xyz",
"42161": "arbitrum-tornado.reslayer.xyz",
"43114": "avalanche-tornado.reslayer.xyz"
} }
}, },
{ {
"ensName": "relayernews.eth", "ensName": "0xtorn.eth",
"relayerAddress": "0x6289C8a70EE2Ed6914834CaEa431F9a82c7eAf70", "relayerAddress": "0x9Ffbd3f9eE795A4fDa880ED553A2A4BD6D45CE5B",
"isRegistered": true, "isRegistered": true,
"owner": "0x6289C8a70EE2Ed6914834CaEa431F9a82c7eAf70", "owner": "0x9Ffbd3f9eE795A4fDa880ED553A2A4BD6D45CE5B",
"stakeBalance": "1661.181918638614466424", "stakeBalance": "4627.036617270139345308",
"hostnames": { "hostnames": {
"1": "mainnet-tornado.relayernews.xyz", "1": "mainnet.al1n.cc",
"56": "bsc-tornado.relayernews.xyz" "56": "bsc-tornado.al1n.cc"
} }
}, },
{ {
"ensName": "lowcost.eth", "ensName": "wetez.eth",
"relayerAddress": "0x28907F21F43B419F34226d6f10aCbCf1832b1D4d", "relayerAddress": "0xe6184DA55174Cc0263a17eA2fc24E48511766505",
"isRegistered": true, "isRegistered": true,
"owner": "0x28907F21F43B419F34226d6f10aCbCf1832b1D4d", "owner": "0xe6184DA55174Cc0263a17eA2fc24E48511766505",
"stakeBalance": "500.279638085962965981", "stakeBalance": "567.980734786905511868",
"hostnames": { "hostnames": {
"1": "mainnet-tornado.low-fee.xyz", "1": "tornado-1.wetez.io"
"56": "bsc-tornado.low-fee.xyz",
"137": "polygon-tornado.low-fee.xyz",
"43114": "avalanche-tornado.low-fee.xyz"
} }
}, },
{ {
"ensName": "cheap-relayer.eth", "ensName": "0xproxy.eth",
"relayerAddress": "0x076D4E32C6A5D888fC4658281539c94E778C796d", "relayerAddress": "0x08657a1f4C1F06d657F31767831421EE7FaDf549",
"isRegistered": true, "isRegistered": true,
"owner": "0x076D4E32C6A5D888fC4658281539c94E778C796d", "owner": "0x08657a1f4C1F06d657F31767831421EE7FaDf549",
"stakeBalance": "500.878420081833044818", "stakeBalance": "705.605817336537209483",
"hostnames": { "hostnames": {
"1": "mainnet-tornado.cheap-relayer.xyz", "1": "mainnet.0x0relayer.xyz",
"56": "bsc-tornado.cheap-relayer.xyz", "56": "bsc.0x0relayer.xyz",
"137": "polygon-tornado.cheap-relayer.xyz", "137": "polygon.0x0relayer.xyz"
"43114": "avalanche-tornado.cheap-relayer.xyz"
} }
}, },
{ {
"ensName": "therelayer.eth", "ensName": "torn-eth.eth",
"relayerAddress": "0xA0F0287683E820FF4211e67C03cf46a87431f4E1", "relayerAddress": "0x42FecB4137aFF76E0E85702ff4F339DbFe6D859E",
"isRegistered": true, "isRegistered": true,
"owner": "0xA0F0287683E820FF4211e67C03cf46a87431f4E1", "owner": "0x42FecB4137aFF76E0E85702ff4F339DbFe6D859E",
"stakeBalance": "1335.888771359625809238", "stakeBalance": "978.62598484549460861",
"hostnames": { "hostnames": {
"1": "mainnet.therelayer.xyz", "1": "mainnet-tornado.50swap.com"
"10": "optimism.therelayer.xyz", }
"56": "bsc.therelayer.xyz", },
"100": "xdai.therelayer.xyz", {
"137": "polygon.therelayer.xyz", "ensName": "shadow-out.eth",
"42161": "arbitrum.therelayer.xyz", "relayerAddress": "0x9Ee26a4bFd731E8e742B65bF955814EADdd7F151",
"43114": "avalanche.therelayer.xyz" "isRegistered": true,
"owner": "0x9Ee26a4bFd731E8e742B65bF955814EADdd7F151",
"stakeBalance": "3571.639136672079169166",
"hostnames": {
"1": "livetobecomeavillain",
"56": "justarandomdude",
"100": "everythingisburning"
}
},
{
"ensName": "bitah.eth",
"relayerAddress": "0x7E3893725d4e238B4c8c83375bBAd024a66Ffa42",
"isRegistered": true,
"owner": "0x7E3893725d4e238B4c8c83375bBAd024a66Ffa42",
"stakeBalance": "503.237718892072788154",
"hostnames": {
"1": "tornado.bitah.link",
"56": "bsc-tornado.bitah.link",
"137": "polygon-tornado.bitah.link"
}
},
{
"ensName": "torntorn.eth",
"relayerAddress": "0x1247749d7E28D357B4279110af0802603AC526cE",
"isRegistered": true,
"owner": "0x1247749d7E28D357B4279110af0802603AC526cE",
"stakeBalance": "5535.435044583932530913",
"hostnames": {
"1": "eth.fsdhreu39jfk.com",
"56": "bsc.fsdhreu39jfk.com",
"100": "gnosis.tornad0.com",
"137": "polygon.tornad0.com"
}
},
{
"ensName": "secure-relay.eth",
"relayerAddress": "0x1036AF02bCDb2e3A4db2d3D40b29e5054EDc79BA",
"isRegistered": true,
"owner": "0x1036AF02bCDb2e3A4db2d3D40b29e5054EDc79BA",
"stakeBalance": "6751.661507930994067422",
"hostnames": {
"1": "torn-relayer.duckdns.org"
}
},
{
"ensName": "relayer007.eth",
"relayerAddress": "0xa0109274F53609f6Be97ec5f3052C659AB80f012",
"isRegistered": true,
"owner": "0xa0109274F53609f6Be97ec5f3052C659AB80f012",
"stakeBalance": "2378.32581329697947104",
"hostnames": {
"1": "torn.relayersdao.finance",
"56": "bsc.relayersdao.finance",
"137": "matic.relayersdao.finance"
}
},
{
"ensName": "reltor.eth",
"relayerAddress": "0x4750BCfcC340AA4B31be7e71fa072716d28c29C5",
"isRegistered": true,
"owner": "0x4750BCfcC340AA4B31be7e71fa072716d28c29C5",
"stakeBalance": "19959.537563477506888659",
"hostnames": {
"1": "eth.reltor.su",
"56": "binance.reltor.su",
"137": "polygon.reltor.su"
}
},
{
"ensName": "t-relayer.eth",
"relayerAddress": "0x000000Cd6521Ed1a65FAe0678eA15aF4EEAD74fe",
"isRegistered": true,
"owner": "0x000000Cd6521Ed1a65FAe0678eA15aF4EEAD74fe",
"stakeBalance": "6379.466188010824508431",
"hostnames": {
"1": "eth.t-relayer.com",
"56": "bsc.t-relayer.com"
}
},
{
"ensName": "default-relayer.eth",
"relayerAddress": "0x5555555731006f71f121144534Ca7C8799F66AA3",
"isRegistered": true,
"owner": "0x5555555731006f71f121144534Ca7C8799F66AA3",
"stakeBalance": "5611.417537369167166026",
"hostnames": {
"1": "eth.default-relayer.com",
"56": "bsc.default-relayer.com"
}
},
{
"ensName": "relayer-secure.eth",
"relayerAddress": "0xCEdac436cEA98E93F471331eCC693fF41D730921",
"isRegistered": true,
"owner": "0xCEdac436cEA98E93F471331eCC693fF41D730921",
"stakeBalance": "548.198082306127582623",
"hostnames": {
"1": "relsecc-mainnet.moon-relayer.app"
}
},
{
"ensName": "0xgm777.eth",
"relayerAddress": "0x94596B6A626392F5D972D6CC4D929a42c2f0008c",
"isRegistered": true,
"owner": "0x94596B6A626392F5D972D6CC4D929a42c2f0008c",
"stakeBalance": "1979.261700994868938309",
"hostnames": {
"1": "main.gm777.xyz",
"56": "bsc.gm777.xyz",
"42161": "arb.gm777.xyz"
}
},
{
"ensName": "k-relayer.eth",
"relayerAddress": "0xC49415493eB3Ec64a0F13D8AA5056f1CfC4ce35c",
"isRegistered": true,
"owner": "0xC49415493eB3Ec64a0F13D8AA5056f1CfC4ce35c",
"stakeBalance": "2743.886989359646966334",
"hostnames": {
"1": "black-hardy.com",
"56": "bsc.black-hardy.com"
}
},
{
"ensName": "tornxdo.eth",
"relayerAddress": "0xB399aa4c2F1678f72529Cd125F82cEA2c2a823eD",
"isRegistered": true,
"owner": "0xB399aa4c2F1678f72529Cd125F82cEA2c2a823eD",
"stakeBalance": "983.310689667160962345",
"hostnames": {
"1": "tornado.evmjunkie.xyz"
}
},
{
"ensName": "torrelayer.eth",
"relayerAddress": "0x2Ee39Ff05643bC7cc9ed31B71e142429044A425C",
"isRegistered": true,
"owner": "0x2Ee39Ff05643bC7cc9ed31B71e142429044A425C",
"stakeBalance": "1697.363238361952542846",
"hostnames": {
"1": "tornima.xyz",
"56": "binance.tornima.xyz"
}
},
{
"ensName": "torn-city.eth",
"relayerAddress": "0xd04e9f0945DEA8373D882C730e2c93a74B591796",
"isRegistered": true,
"owner": "0xd04e9f0945DEA8373D882C730e2c93a74B591796",
"stakeBalance": "6683.804986564144794348",
"hostnames": {
"1": "torn-city.com",
"56": "bsc.torn-city.com"
}
},
{
"ensName": "crelayer.eth",
"relayerAddress": "0x180c58B7305152357142b33Eea94cBB152058B61",
"isRegistered": true,
"owner": "0x180c58B7305152357142b33Eea94cBB152058B61",
"stakeBalance": "1460.389956347917729137",
"hostnames": {
"1": "eth.crelayer.xyz",
"56": "bsc.crelayer.xyz"
}
},
{
"ensName": "best-relay.eth",
"relayerAddress": "0xe5A4c70113b90566BC5f80a3866935d0d52F990E",
"isRegistered": true,
"owner": "0xe5A4c70113b90566BC5f80a3866935d0d52F990E",
"stakeBalance": "2002.0",
"hostnames": {
"1": "best-relay.gato-miaouw.xyz",
"56": "bsc.gato-miaouw.xyz"
}
},
{
"ensName": "safety-relayer.eth",
"relayerAddress": "0xF1F4F76c9969eFbFB5C9A90a6E44c0E3696D3EF8",
"isRegistered": true,
"owner": "0xF1F4F76c9969eFbFB5C9A90a6E44c0E3696D3EF8",
"stakeBalance": "500.879215977529089999",
"hostnames": {
"1": "a-relayer.top",
"56": "bsc.a-relayer.top",
"137": "polygon.a-relayer.top"
}
},
{
"ensName": "quick-relayer.eth",
"relayerAddress": "0x187541D7D312F742040f270d0221B4Fe577934B0",
"isRegistered": true,
"owner": "0x187541D7D312F742040f270d0221B4Fe577934B0",
"stakeBalance": "2931.033250737658918569",
"hostnames": {
"1": "quick-relayer.xyz"
}
},
{
"ensName": "okrelayer.eth",
"relayerAddress": "0x0e9D9a828247F5eed7f6D31D213A39805De52441",
"isRegistered": true,
"owner": "0x0e9D9a828247F5eed7f6D31D213A39805De52441",
"stakeBalance": "4086.387829537434113053",
"hostnames": {
"1": "okrelayer.xyz",
"56": "binance.okrelayer.xyz",
"137": "polygon.okrelayer.xyz",
"42161": "arb.okrelayer.xyz"
} }
} }
] ]

@ -781,9 +781,9 @@
"@openzeppelin/contracts-v3" "npm:@openzeppelin/contracts@3.2.0-rc.0" "@openzeppelin/contracts-v3" "npm:@openzeppelin/contracts@3.2.0-rc.0"
ethers "^6.4.0" ethers "^6.4.0"
"@tornado/core@git+https://git.tornado.ws/tornadocontrib/tornado-core.git#700426acb7a7de16884cb314c3a0220a51682d18": "@tornado/core@git+https://git.tornado.ws/tornadocontrib/tornado-core.git#d6cfea1d1990f07a8faca2e876c0a6ccea4f603f":
version "1.0.7" version "1.0.10"
resolved "git+https://git.tornado.ws/tornadocontrib/tornado-core.git#700426acb7a7de16884cb314c3a0220a51682d18" resolved "git+https://git.tornado.ws/tornadocontrib/tornado-core.git#d6cfea1d1990f07a8faca2e876c0a6ccea4f603f"
dependencies: dependencies:
"@metamask/eth-sig-util" "^7.0.3" "@metamask/eth-sig-util" "^7.0.3"
"@tornado/contracts" "^1.0.0" "@tornado/contracts" "^1.0.0"