From fecac18687935dfa9109d4c13c9217ec5d2ecf18 Mon Sep 17 00:00:00 2001 From: smart_ex Date: Thu, 26 May 2022 15:43:07 +1000 Subject: [PATCH] Fallback gas prices for light mode --- src/config.ts | 57 ++++++++++++++++++++++++++++++++++ src/queue/relayer.processor.ts | 4 +-- src/services/config.service.ts | 20 +++++++++++- src/services/tx.service.ts | 12 ++++--- 4 files changed, 85 insertions(+), 8 deletions(-) diff --git a/src/config.ts b/src/config.ts index f35fa55..b24952e 100644 --- a/src/config.ts +++ b/src/config.ts @@ -31,3 +31,60 @@ export const tornToken = { symbol: 'TORN', decimals: 18, }; + +export const networkConfig = { + netId56: { + gasPrices: { + instant: 5, + fast: 5, + standard: 5, + low: 5, + }, + nativeCurrency: 'bnb', + }, + netId10: { + gasPrices: { + instant: 0.001, + fast: 0.001, + standard: 0.001, + low: 0.001, + }, + nativeCurrency: 'eth', + }, + netId100: { + gasPrices: { + instant: 6, + fast: 5, + standard: 4, + low: 1, + }, + nativeCurrency: 'xdai', + }, + netId137: { + gasPrices: { + instant: 100, + fast: 75, + standard: 50, + low: 30, + }, + nativeCurrency: 'matic', + }, + netId42161: { + gasPrices: { + instant: 4, + fast: 3, + standard: 2.52, + low: 2.29, + }, + nativeCurrency: 'eth', + }, + netId43114: { + gasPrices: { + instant: 225, + fast: 35, + standard: 25, + low: 25, + }, + nativeCurrency: 'avax', + }, +}; diff --git a/src/queue/relayer.processor.ts b/src/queue/relayer.processor.ts index 11350d4..3f53b33 100644 --- a/src/queue/relayer.processor.ts +++ b/src/queue/relayer.processor.ts @@ -12,12 +12,10 @@ export const relayerProcessor: RelayerProcessor = async (job) => { const withdrawalData = job.data; await txService.checkTornadoFee(withdrawalData); const txData = await txService.prepareTxData(withdrawalData); - const receipt = await txService.sendTx(txData); - return receipt; + return await txService.sendTx(txData); } catch (e) { console.log(e); await job.update({ ...job.data, status: JobStatus.FAILED }); throw new Error(e.message); } - }; diff --git a/src/services/config.service.ts b/src/services/config.service.ts index 4c95942..18e4d7c 100644 --- a/src/services/config.service.ts +++ b/src/services/config.service.ts @@ -1,4 +1,14 @@ -import { instances, minimumBalance, netId, privateKey, rpcUrl, torn, tornadoGoerliProxy, tornToken } from '../config'; +import { + instances, + minimumBalance, + netId, + networkConfig, + privateKey, + rpcUrl, + torn, + tornadoGoerliProxy, + tornToken, +} from '../config'; import { Token } from '../types'; import { getProvider, getTornadoProxyContract, getTornadoProxyLightContract } from '../modules/contracts'; import { resolve } from '../modules'; @@ -7,6 +17,7 @@ import { availableIds, netIds, NetInstances } from '../../../torn-token'; import { getAddress } from 'ethers/lib/utils'; import { providers, Wallet } from 'ethers'; import { container, singleton } from 'tsyringe'; +import { GasPrice } from 'gas-price-oracle/lib/types'; type relayerQueueName = `relayer_${availableIds}` @@ -26,6 +37,9 @@ export class ConfigService { public readonly privateKey = privateKey; public readonly rpcUrl = rpcUrl; isInit: boolean; + nativeCurrency: string; + fallbackGasPrices: GasPrice; + constructor() { this.netIdKey = `netId${this.netId}`; @@ -74,6 +88,9 @@ export class ConfigService { if (this.isLightMode) { this._proxyAddress = await resolve(torn.tornadoProxyLight.address); this._proxyContract = getTornadoProxyLightContract(this._proxyAddress); + const { gasPrices, nativeCurrency } = networkConfig[this.netIdKey]; + this.nativeCurrency = nativeCurrency; + this.fallbackGasPrices = gasPrices; } else { this._proxyAddress = tornadoGoerliProxy; if (this.netId === 1) { @@ -92,6 +109,7 @@ export class ConfigService { console.log( `Configuration completed\n-- netId: ${this.netId}\n-- rpcUrl: ${this.rpcUrl}`); this.isInit = true; + console.log(this); } catch (e) { console.error(`${this.constructor.name} Error:`, e.message); } diff --git a/src/services/tx.service.ts b/src/services/tx.service.ts index 1f13e57..c01dc9b 100644 --- a/src/services/tx.service.ts +++ b/src/services/tx.service.ts @@ -42,7 +42,11 @@ export class TxService { this.txManager = new TxManager({ privateKey, rpcUrl, config: { THROW_ON_REVERT: true } }); this.tornadoProxy = this.config.proxyContract; this.provider = this.tornadoProxy.provider; - this.oracle = new GasPriceOracle({ defaultRpc: rpcUrl, chainId: netId }); + this.oracle = new GasPriceOracle({ + defaultRpc: rpcUrl, + chainId: netId, + defaultFallbackGasPrices: this.config?.fallbackGasPrices, + }); } async updateJobData(data: Partial) { @@ -57,15 +61,15 @@ export class TxService { const receipt = await currentTx.send() .on('transactionHash', async txHash => { - console.log({ txHash }); + console.log('Transaction sent, txHash: ', txHash); await this.updateJobData({ txHash, status: JobStatus.SENT }); }) .on('mined', async receipt => { - console.log('Mined in block', receipt.blockNumber); + console.log('Transaction mined in block', receipt.blockNumber); await this.updateJobData({ status: JobStatus.MINED }); }) .on('confirmations', async confirmations => { - console.log({ confirmations }); + console.log('Transaction confirmations: ', confirmations); await this.updateJobData({ confirmations }); }); if (receipt.status === 1) {