From 1158581bab4e4adf55e326d2c43d23e16b517312 Mon Sep 17 00:00:00 2001 From: Gerardo Nardelli Date: Wed, 27 Jun 2018 11:27:17 -0300 Subject: [PATCH 1/2] Improve gas price error message --- src/services/gasPrice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/gasPrice.js b/src/services/gasPrice.js index 0451334..d11b91c 100644 --- a/src/services/gasPrice.js +++ b/src/services/gasPrice.js @@ -9,7 +9,7 @@ async function getGasPrices() { const json = await response.json() return json[GAS_PRICE_SPEED_TYPE] } catch (e) { - console.error('Gas Price API is not available', e) + console.error(`Gas Price API is not available. ${e.message}`) return GAS_PRICE_FALLBACK } } From fd5c1b852090b0f41ecbcaf82688731a23feb1ae Mon Sep 17 00:00:00 2001 From: Gerardo Nardelli Date: Wed, 27 Jun 2018 14:30:56 -0300 Subject: [PATCH 2/2] Improve web3 and transaction error messages --- src/sender.js | 2 +- src/tx/web3.js | 34 +++++++++++++++++++++++++++------- src/watcher.js | 6 ++++-- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/sender.js b/src/sender.js index adf5934..90280c5 100644 --- a/src/sender.js +++ b/src/sender.js @@ -97,7 +97,7 @@ async function main({ msg, ackMsg, nackMsg, sendToQueue }) { nonce++ console.log(`Tx generated ${txHash} for event Tx ${job.transactionReference}`) } catch (e) { - console.error(e) + console.error(e.message) console.error(`Tx Failed for event Tx ${job.transactionReference}`) failedTx.push(job) diff --git a/src/tx/web3.js b/src/tx/web3.js index 1600588..32c0e54 100644 --- a/src/tx/web3.js +++ b/src/tx/web3.js @@ -1,10 +1,17 @@ -// eslint-disable-next-line consistent-return async function getNonce(web3, address) { - return web3.eth.getTransactionCount(address) + try { + return await web3.eth.getTransactionCount(address) + } catch (e) { + throw new Error(`Nonce cannot be obtained`) + } } -function getBlockNumber(web3) { - return web3.eth.getBlockNumber() +async function getBlockNumber(web3) { + try { + return await web3.eth.getBlockNumber() + } catch (e) { + throw new Error(`Block Number cannot be obtained`) + } } async function getChainId(web3) { @@ -15,13 +22,26 @@ async function getChainId(web3) { } } -function getRequiredBlockConfirmations(contract) { - return contract.methods.requiredBlockConfirmations().call() +async function getRequiredBlockConfirmations(contract) { + try { + return await contract.methods.requiredBlockConfirmations().call() + } catch (e) { + throw new Error(`Required block confirmations cannot be obtained`) + } +} + +async function getEvents({ contract, event, fromBlock, toBlock }) { + try { + return await contract.getPastEvents(event, { fromBlock, toBlock }) + } catch (e) { + throw new Error(`${event} events cannot be obtained`) + } } module.exports = { getNonce, getBlockNumber, getChainId, - getRequiredBlockConfirmations + getRequiredBlockConfirmations, + getEvents } diff --git a/src/watcher.js b/src/watcher.js index 46aaa5d..b97831e 100644 --- a/src/watcher.js +++ b/src/watcher.js @@ -7,7 +7,7 @@ const processDeposits = require('./events/processDeposits') const processCollectedSignatures = require('./events/processCollectedSignatures') const processWithdraw = require('./events/processWithdraw') const { redis } = require('./services/redisClient') -const { getRequiredBlockConfirmations } = require('./tx/web3') +const { getRequiredBlockConfirmations, getEvents } = require('./tx/web3') const { checkHTTPS } = require('./utils/utils') if (process.argv.length < 3) { @@ -95,7 +95,9 @@ async function main({ sendToQueue }) { if (lastBlockToProcess <= lastProcessedBlock) { return } - const events = await bridgeContract.getPastEvents(config.event, { + const events = await getEvents({ + contract: bridgeContract, + event: config.event, fromBlock: lastProcessedBlock + 1, toBlock: lastBlockToProcess })