From 5c8b311c888330ca4b646914c984a24d1e57d705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Tue, 2 Aug 2022 22:09:43 +0100 Subject: [PATCH 1/3] fix: add a margin of 0.001% on sweeping transactions to ensure higher success rate --- bin/lamassu-eth-sweep-to-new-wallet | 2 +- lib/plugins/wallet/geth/base.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/lamassu-eth-sweep-to-new-wallet b/bin/lamassu-eth-sweep-to-new-wallet index 8cb2ec6b..57fb4f0b 100644 --- a/bin/lamassu-eth-sweep-to-new-wallet +++ b/bin/lamassu-eth-sweep-to-new-wallet @@ -263,7 +263,7 @@ settingsLoader.loadLatest() } const opts = { - chainId: 3, + chainId: 1, nonce: 0, includesFee: true } diff --git a/lib/plugins/wallet/geth/base.js b/lib/plugins/wallet/geth/base.js index e10ca6a1..2e10b15f 100644 --- a/lib/plugins/wallet/geth/base.js +++ b/lib/plugins/wallet/geth/base.js @@ -10,6 +10,7 @@ const Tx = require('ethereumjs-tx') const util = require('ethereumjs-util') const coins = require('@lamassu/coins') const { default: PQueue } = require('p-queue') +const { BigNumber } = require('bignumber.js') const _pify = require('pify') const BN = require('../../../bn') @@ -205,7 +206,7 @@ function generateTx (_toAddress, wallet, amount, includesFee, cryptoCode) { lastUsedNonces[fromAddress] = txCount const toSend = includesFee - ? amount.minus(gasPrice.times(gas)) + ? new BN(amount.times(0.99999).toFixed(0, BigNumber.ROUND_DOWN)).minus(gasPrice.times(gas)) : amount const maxPriorityFeePerGas = new BN(web3.utils.toWei('2.5', 'gwei')) // web3 default value From 3bd7e3463e252db5d4e8f11997c2540e585c6e94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Wed, 3 Aug 2022 19:26:14 +0100 Subject: [PATCH 2/3] fix: ETH fees --- lib/plugins/wallet/geth/base.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/plugins/wallet/geth/base.js b/lib/plugins/wallet/geth/base.js index 2e10b15f..baddecde 100644 --- a/lib/plugins/wallet/geth/base.js +++ b/lib/plugins/wallet/geth/base.js @@ -205,12 +205,14 @@ function generateTx (_toAddress, wallet, amount, includesFee, cryptoCode) { .then(([gas, gasPrice, txCount, baseFeePerGas]) => { lastUsedNonces[fromAddress] = txCount - const toSend = includesFee - ? new BN(amount.times(0.99999).toFixed(0, BigNumber.ROUND_DOWN)).minus(gasPrice.times(gas)) - : amount - const maxPriorityFeePerGas = new BN(web3.utils.toWei('2.5', 'gwei')) // web3 default value - const maxFeePerGas = new BN(2).times(baseFeePerGas).plus(maxPriorityFeePerGas) + const neededPriority = new BN(web3.utils.toWei('2.0', 'gwei')) + const maxFeePerGas = baseFeePerGas.plus(neededPriority) + const newGasPrice = BigNumber.minimum(maxFeePerGas, baseFeePerGas.plus(maxPriorityFeePerGas)) + + const toSend = includesFee + ? new BN(amount).minus(newGasPrice.times(gas)) + : amount const rawTx = { chainId: 1, From 0e78f5636b81110a10f4b10c50705942d02e0c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Thu, 4 Aug 2022 18:04:46 +0100 Subject: [PATCH 3/3] fix: remove duplicate import --- lib/plugins/wallet/geth/base.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/plugins/wallet/geth/base.js b/lib/plugins/wallet/geth/base.js index baddecde..2e813563 100644 --- a/lib/plugins/wallet/geth/base.js +++ b/lib/plugins/wallet/geth/base.js @@ -10,7 +10,6 @@ const Tx = require('ethereumjs-tx') const util = require('ethereumjs-util') const coins = require('@lamassu/coins') const { default: PQueue } = require('p-queue') -const { BigNumber } = require('bignumber.js') const _pify = require('pify') const BN = require('../../../bn') @@ -208,7 +207,7 @@ function generateTx (_toAddress, wallet, amount, includesFee, cryptoCode) { const maxPriorityFeePerGas = new BN(web3.utils.toWei('2.5', 'gwei')) // web3 default value const neededPriority = new BN(web3.utils.toWei('2.0', 'gwei')) const maxFeePerGas = baseFeePerGas.plus(neededPriority) - const newGasPrice = BigNumber.minimum(maxFeePerGas, baseFeePerGas.plus(maxPriorityFeePerGas)) + const newGasPrice = BN.minimum(maxFeePerGas, baseFeePerGas.plus(maxPriorityFeePerGas)) const toSend = includesFee ? new BN(amount).minus(newGasPrice.times(gas))