forked from tornadocash/tornado-cli
Tornado CLI 1.0.6-alpha
minor improvements
This commit is contained in:
parent
b5c7dace45
commit
083479bafc
72
dist/cli.js
vendored
72
dist/cli.js
vendored
@ -176778,8 +176778,8 @@ function getSubdomains() {
|
|||||||
}
|
}
|
||||||
function getRelayerEnsSubdomains() {
|
function getRelayerEnsSubdomains() {
|
||||||
const allConfig = getNetworkConfig();
|
const allConfig = getNetworkConfig();
|
||||||
return Object.keys(allConfig).reduce((acc, chain) => {
|
return enabledChains.reduce((acc, chain) => {
|
||||||
acc[Number(chain)] = allConfig[Number(chain)].relayerEnsSubdomain;
|
acc[chain] = allConfig[chain].relayerEnsSubdomain;
|
||||||
return acc;
|
return acc;
|
||||||
}, {});
|
}, {});
|
||||||
}
|
}
|
||||||
@ -177333,12 +177333,6 @@ class BaseEventsService {
|
|||||||
const events = yield this.formatEvents(
|
const events = yield this.formatEvents(
|
||||||
yield this.batchEventsService.getBatchEvents({ fromBlock, toBlock, type: this.getType() })
|
yield this.batchEventsService.getBatchEvents({ fromBlock, toBlock, type: this.getType() })
|
||||||
);
|
);
|
||||||
if (!events.length) {
|
|
||||||
return {
|
|
||||||
events,
|
|
||||||
lastBlock: toBlock
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return {
|
return {
|
||||||
events,
|
events,
|
||||||
lastBlock: toBlock
|
lastBlock: toBlock
|
||||||
@ -177354,16 +177348,12 @@ class BaseEventsService {
|
|||||||
}
|
}
|
||||||
getLatestEvents(_0) {
|
getLatestEvents(_0) {
|
||||||
return __async$8(this, arguments, function* ({ fromBlock }) {
|
return __async$8(this, arguments, function* ({ fromBlock }) {
|
||||||
const allEvents = [];
|
|
||||||
const graphEvents = yield this.getEventsFromGraph({ fromBlock });
|
const graphEvents = yield this.getEventsFromGraph({ fromBlock });
|
||||||
const lastSyncBlock = graphEvents.lastBlock && graphEvents.lastBlock >= fromBlock ? graphEvents.lastBlock : fromBlock;
|
const lastSyncBlock = graphEvents.lastBlock && graphEvents.lastBlock >= fromBlock ? graphEvents.lastBlock : fromBlock;
|
||||||
const rpcEvents = yield this.getEventsFromRpc({ fromBlock: lastSyncBlock });
|
const rpcEvents = yield this.getEventsFromRpc({ fromBlock: lastSyncBlock });
|
||||||
allEvents.push(...graphEvents.events);
|
|
||||||
allEvents.push(...rpcEvents.events);
|
|
||||||
const lastBlock = rpcEvents ? rpcEvents.lastBlock : allEvents[allEvents.length - 1] ? allEvents[allEvents.length - 1].blockNumber : fromBlock;
|
|
||||||
return {
|
return {
|
||||||
events: allEvents,
|
events: [...graphEvents.events, ...rpcEvents.events],
|
||||||
lastBlock
|
lastBlock: rpcEvents.lastBlock
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -177383,6 +177373,7 @@ class BaseEventsService {
|
|||||||
*/
|
*/
|
||||||
updateEvents() {
|
updateEvents() {
|
||||||
return __async$8(this, null, function* () {
|
return __async$8(this, null, function* () {
|
||||||
|
var _a;
|
||||||
const savedEvents = yield this.getSavedEvents();
|
const savedEvents = yield this.getSavedEvents();
|
||||||
let fromBlock = this.deployedBlock;
|
let fromBlock = this.deployedBlock;
|
||||||
if (savedEvents && savedEvents.lastBlock) {
|
if (savedEvents && savedEvents.lastBlock) {
|
||||||
@ -177390,10 +177381,7 @@ class BaseEventsService {
|
|||||||
}
|
}
|
||||||
const newEvents = yield this.getLatestEvents({ fromBlock });
|
const newEvents = yield this.getLatestEvents({ fromBlock });
|
||||||
const eventSet = /* @__PURE__ */ new Set();
|
const eventSet = /* @__PURE__ */ new Set();
|
||||||
let allEvents = [];
|
const allEvents = [...savedEvents.events, ...newEvents.events].sort((a, b) => {
|
||||||
allEvents.push(...savedEvents.events);
|
|
||||||
allEvents.push(...newEvents.events);
|
|
||||||
allEvents = allEvents.sort((a, b) => {
|
|
||||||
if (a.blockNumber === b.blockNumber) {
|
if (a.blockNumber === b.blockNumber) {
|
||||||
return a.logIndex - b.logIndex;
|
return a.logIndex - b.logIndex;
|
||||||
}
|
}
|
||||||
@ -177404,7 +177392,7 @@ class BaseEventsService {
|
|||||||
eventSet.add(eventKey);
|
eventSet.add(eventKey);
|
||||||
return !hasEvent;
|
return !hasEvent;
|
||||||
});
|
});
|
||||||
const lastBlock = newEvents ? newEvents.lastBlock : allEvents[allEvents.length - 1] ? allEvents[allEvents.length - 1].blockNumber : null;
|
const lastBlock = newEvents.lastBlock || ((_a = allEvents[allEvents.length - 1]) == null ? void 0 : _a.blockNumber);
|
||||||
this.validateEvents({ events: allEvents, lastBlock });
|
this.validateEvents({ events: allEvents, lastBlock });
|
||||||
if (savedEvents.fromCache || newEvents.events.length) {
|
if (savedEvents.fromCache || newEvents.events.length) {
|
||||||
yield this.saveEvents({ events: allEvents, lastBlock });
|
yield this.saveEvents({ events: allEvents, lastBlock });
|
||||||
@ -177789,7 +177777,7 @@ class BaseRegistryService extends BaseEventsService {
|
|||||||
const registerEvents = (yield this.updateEvents()).events;
|
const registerEvents = (yield this.updateEvents()).events;
|
||||||
const subdomains = Object.values(this.relayerEnsSubdomains);
|
const subdomains = Object.values(this.relayerEnsSubdomains);
|
||||||
const registerSet = /* @__PURE__ */ new Set();
|
const registerSet = /* @__PURE__ */ new Set();
|
||||||
const uniqueRegisters = registerEvents.reverse().filter(({ ensName }) => {
|
const uniqueRegisters = registerEvents.filter(({ ensName }) => {
|
||||||
if (!registerSet.has(ensName)) {
|
if (!registerSet.has(ensName)) {
|
||||||
registerSet.add(ensName);
|
registerSet.add(ensName);
|
||||||
return true;
|
return true;
|
||||||
@ -177803,12 +177791,12 @@ class BaseRegistryService extends BaseEventsService {
|
|||||||
]);
|
]);
|
||||||
const relayers = relayersData.map(({ owner, balance: stakeBalance, records, isRegistered }, index) => {
|
const relayers = relayersData.map(({ owner, balance: stakeBalance, records, isRegistered }, index) => {
|
||||||
const { ensName, relayerAddress } = uniqueRegisters[index];
|
const { ensName, relayerAddress } = uniqueRegisters[index];
|
||||||
const hostnames = {};
|
const hostnames = records.reduce((acc, record, recordIndex) => {
|
||||||
records.forEach((record, recordIndex) => {
|
|
||||||
if (record) {
|
if (record) {
|
||||||
hostnames[Number(Object.keys(this.relayerEnsSubdomains)[recordIndex])] = record;
|
acc[Number(Object.keys(this.relayerEnsSubdomains)[recordIndex])] = record;
|
||||||
}
|
}
|
||||||
});
|
return acc;
|
||||||
|
}, {});
|
||||||
const isOwner = !relayerAddress || relayerAddress === owner;
|
const isOwner = !relayerAddress || relayerAddress === owner;
|
||||||
const hasMinBalance = stakeBalance >= MIN_STAKE_BALANCE;
|
const hasMinBalance = stakeBalance >= MIN_STAKE_BALANCE;
|
||||||
const preCondition = Object.keys(hostnames).length && isOwner && isRegistered && hasMinBalance;
|
const preCondition = Object.keys(hostnames).length && isOwner && isRegistered && hasMinBalance;
|
||||||
@ -181064,7 +181052,7 @@ function calculateSnarkProof(input, circuit, provingKey) {
|
|||||||
|
|
||||||
|
|
||||||
;// CONCATENATED MODULE: ./package.json
|
;// CONCATENATED MODULE: ./package.json
|
||||||
const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"1.0.4-alpha","h_":"Modern Toolsets for Privacy Pools on Ethereum"}');
|
const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"1.0.5-alpha","h_":"Modern Toolsets for Privacy Pools on Ethereum"}');
|
||||||
var package_namespaceObject_0 = /*#__PURE__*/__webpack_require__.t(package_namespaceObject, 2);
|
var package_namespaceObject_0 = /*#__PURE__*/__webpack_require__.t(package_namespaceObject, 2);
|
||||||
;// CONCATENATED MODULE: external "module"
|
;// CONCATENATED MODULE: external "module"
|
||||||
const external_module_namespaceObject = require("module");
|
const external_module_namespaceObject = require("module");
|
||||||
@ -185538,18 +185526,7 @@ function tornadoProgram() {
|
|||||||
merkleWorkerPath: MERKLE_WORKER_PATH
|
merkleWorkerPath: MERKLE_WORKER_PATH
|
||||||
});
|
});
|
||||||
const depositEvents = (yield depositsService.updateEvents()).events;
|
const depositEvents = (yield depositsService.updateEvents()).events;
|
||||||
const depositTreeInitiator = yield (() => program_async(this, null, function* () {
|
const depositTreePromise = MERKLE_WORKER_PATH ? merkleTreeService.verifyTree(depositEvents) : yield merkleTreeService.verifyTree(depositEvents);
|
||||||
if (MERKLE_WORKER_PATH) {
|
|
||||||
return () => merkleTreeService.verifyTree(depositEvents);
|
|
||||||
}
|
|
||||||
return yield merkleTreeService.verifyTree(depositEvents);
|
|
||||||
}))();
|
|
||||||
let depositTreePromise;
|
|
||||||
if (typeof depositTreeInitiator === "function") {
|
|
||||||
depositTreePromise = depositTreeInitiator();
|
|
||||||
} else {
|
|
||||||
depositTreePromise = depositTreeInitiator;
|
|
||||||
}
|
|
||||||
const withdrawalEvents = (yield withdrawalsService.updateEvents()).events;
|
const withdrawalEvents = (yield withdrawalsService.updateEvents()).events;
|
||||||
const depositEvent = depositEvents.find(({ commitment }) => commitment === commitmentHex);
|
const depositEvent = depositEvents.find(({ commitment }) => commitment === commitmentHex);
|
||||||
const withdrawalEvent = withdrawalEvents.find(({ nullifierHash }) => nullifierHash === nullifierHex);
|
const withdrawalEvent = withdrawalEvents.find(({ nullifierHash }) => nullifierHash === nullifierHex);
|
||||||
@ -185782,15 +185759,10 @@ function tornadoProgram() {
|
|||||||
merkleWorkerPath: MERKLE_WORKER_PATH
|
merkleWorkerPath: MERKLE_WORKER_PATH
|
||||||
});
|
});
|
||||||
const depositEvents = (yield depositsService.updateEvents()).events;
|
const depositEvents = (yield depositsService.updateEvents()).events;
|
||||||
const depositTreePromise = yield (() => program_async(this, null, function* () {
|
const depositTreePromise = MERKLE_WORKER_PATH ? merkleTreeService.verifyTree(depositEvents) : yield merkleTreeService.verifyTree(depositEvents);
|
||||||
if (MERKLE_WORKER_PATH) {
|
|
||||||
return () => merkleTreeService.verifyTree(depositEvents);
|
|
||||||
}
|
|
||||||
return yield merkleTreeService.verifyTree(depositEvents);
|
|
||||||
}))();
|
|
||||||
const [withdrawalEvents] = yield Promise.all([
|
const [withdrawalEvents] = yield Promise.all([
|
||||||
withdrawalsService.updateEvents().then(({ events }) => events),
|
withdrawalsService.updateEvents().then(({ events }) => events),
|
||||||
typeof depositTreePromise === "function" ? depositTreePromise() : depositTreePromise
|
depositTreePromise
|
||||||
]);
|
]);
|
||||||
const depositEvent = depositEvents.find(({ commitment }) => commitment === commitmentHex);
|
const depositEvent = depositEvents.find(({ commitment }) => commitment === commitmentHex);
|
||||||
const withdrawalEvent = withdrawalEvents.find(({ nullifierHash }) => nullifierHash === nullifierHex);
|
const withdrawalEvent = withdrawalEvents.find(({ nullifierHash }) => nullifierHash === nullifierHex);
|
||||||
@ -185949,16 +185921,8 @@ function tornadoProgram() {
|
|||||||
userDirectory: SAVED_TREE_DIR
|
userDirectory: SAVED_TREE_DIR
|
||||||
});
|
});
|
||||||
const depositEvents = (yield depositsService.updateEvents()).events;
|
const depositEvents = (yield depositsService.updateEvents()).events;
|
||||||
const depositTreePromise = yield (() => program_async(this, null, function* () {
|
const depositTreePromise = MERKLE_WORKER_PATH ? merkleTreeService.verifyTree(depositEvents) : yield merkleTreeService.verifyTree(depositEvents);
|
||||||
if (MERKLE_WORKER_PATH) {
|
const [tree] = yield Promise.all([depositTreePromise, withdrawalsService.updateEvents()]);
|
||||||
return () => merkleTreeService.verifyTree(depositEvents);
|
|
||||||
}
|
|
||||||
return yield merkleTreeService.verifyTree(depositEvents);
|
|
||||||
}))();
|
|
||||||
const [tree] = yield Promise.all([
|
|
||||||
typeof depositTreePromise === "function" ? depositTreePromise() : depositTreePromise,
|
|
||||||
withdrawalsService.updateEvents()
|
|
||||||
]);
|
|
||||||
if (nativeCurrency === currency) {
|
if (nativeCurrency === currency) {
|
||||||
yield treeCache.createTree(depositEvents, tree);
|
yield treeCache.createTree(depositEvents, tree);
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
|
Loading…
Reference in New Issue
Block a user