From 46daeb6815ac42fdfde32ac6ef66da2b8c636703 Mon Sep 17 00:00:00 2001 From: Kirill Fedoseev Date: Mon, 5 Oct 2020 15:48:36 +0300 Subject: [PATCH] Respect requiredBlockConfirmations parameter in the monitor (#464) --- CONFIGURATION.md | 2 +- commons/utils.js | 4 ++-- monitor/utils/events.js | 17 +++++++++++------ monitor/utils/serverUtils.js | 16 ---------------- 4 files changed, 14 insertions(+), 25 deletions(-) delete mode 100644 monitor/utils/serverUtils.js diff --git a/CONFIGURATION.md b/CONFIGURATION.md index da514fb2..87e48915 100644 --- a/CONFIGURATION.md +++ b/CONFIGURATION.md @@ -77,4 +77,4 @@ MONITOR_VALIDATOR_FOREIGN_TX_LIMIT | Average gas usage of a transaction sent by MONITOR_TX_NUMBER_THRESHOLD | If estimated number of transaction is equal to or below this value, the monitor will report that the validator has less funds than it is required. | integer MONITOR_PORT | The port for the Monitor. | integer MONITOR_BRIDGE_NAME | The name to be used in the url path for the bridge | string -MONITOR_CACHE_EVENTS | If set to true, monitor will cache obtained events for other workers runs +MONITOR_CACHE_EVENTS | If set to true, monitor will cache obtained events for other workers runs | `true` / `false` diff --git a/commons/utils.js b/commons/utils.js index 520008c1..06c61bc5 100644 --- a/commons/utils.js +++ b/commons/utils.js @@ -169,13 +169,13 @@ const getPastEvents = async ( const middlePlusOne = middle.add(toBN(1)) const firstHalfEvents = await getPastEvents(contract, { - ...options, + options, event, fromBlock, toBlock: middle }) const secondHalfEvents = await getPastEvents(contract, { - ...options, + options, event, fromBlock: middlePlusOne, toBlock diff --git a/monitor/utils/events.js b/monitor/utils/events.js index ff272bf6..054cca15 100644 --- a/monitor/utils/events.js +++ b/monitor/utils/events.js @@ -74,6 +74,11 @@ async function main(mode) { logger.debug('getting last block numbers') const [homeBlockNumber, foreignBlockNumber] = await getBlockNumber(web3Home, web3Foreign) + const homeConfirmations = toBN(await homeBridge.methods.requiredBlockConfirmations().call()) + const foreignConfirmations = toBN(await foreignBridge.methods.requiredBlockConfirmations().call()) + const homeDelayedBlockNumber = homeBlockNumber.sub(homeConfirmations) + const foreignDelayedBlockNumber = foreignBlockNumber.sub(foreignConfirmations) + let homeToForeignRequests = [] let foreignToHomeRequests = [] let homeMigrationBlock = MONITOR_HOME_START_BLOCK @@ -90,7 +95,7 @@ async function main(mode) { homeToForeignRequests = (await getPastEvents(oldHomeBridge, { event: 'UserRequestForSignature', fromBlock: MONITOR_HOME_START_BLOCK, - toBlock: homeBlockNumber + toBlock: homeDelayedBlockNumber })).map(normalizeEvent) logger.debug(`found ${homeToForeignRequests.length} events`) if (homeToForeignRequests.length > 0) { @@ -101,7 +106,7 @@ async function main(mode) { foreignToHomeRequests = (await getPastEvents(oldForeignBridge, { event: 'UserRequestForAffirmation', fromBlock: MONITOR_FOREIGN_START_BLOCK, - toBlock: foreignBlockNumber + toBlock: foreignDelayedBlockNumber })).map(normalizeEvent) logger.debug(`found ${foreignToHomeRequests.length} events`) if (foreignToHomeRequests.length > 0) { @@ -113,7 +118,7 @@ async function main(mode) { const homeToForeignRequestsNew = (await getPastEvents(homeBridge, { event: v1Bridge ? 'Deposit' : 'UserRequestForSignature', fromBlock: homeMigrationBlock, - toBlock: homeBlockNumber + toBlock: homeDelayedBlockNumber })).map(normalizeEvent) homeToForeignRequests = [...homeToForeignRequests, ...homeToForeignRequestsNew] @@ -135,7 +140,7 @@ async function main(mode) { const foreignToHomeRequestsNew = (await getPastEvents(foreignBridge, { event: v1Bridge ? 'Withdraw' : 'UserRequestForAffirmation', fromBlock: foreignMigrationBlock, - toBlock: foreignBlockNumber + toBlock: foreignDelayedBlockNumber })).map(normalizeEvent) foreignToHomeRequests = [...foreignToHomeRequests, ...foreignToHomeRequestsNew] @@ -144,7 +149,7 @@ async function main(mode) { let transferEvents = (await getPastEvents(erc20Contract, { event: 'Transfer', fromBlock: MONITOR_FOREIGN_START_BLOCK, - toBlock: foreignBlockNumber, + toBlock: foreignDelayedBlockNumber, options: { filter: { to: COMMON_FOREIGN_BRIDGE_ADDRESS } } @@ -194,7 +199,7 @@ async function main(mode) { const halfDuplexTransferEvents = (await getPastEvents(halfDuplexTokenContract, { event: 'Transfer', fromBlock: MONITOR_FOREIGN_START_BLOCK, - toBlock: foreignBlockNumber, + toBlock: foreignDelayedBlockNumber, options: { filter: { to: COMMON_FOREIGN_BRIDGE_ADDRESS } } diff --git a/monitor/utils/serverUtils.js b/monitor/utils/serverUtils.js deleted file mode 100644 index f023358e..00000000 --- a/monitor/utils/serverUtils.js +++ /dev/null @@ -1,16 +0,0 @@ -const Web3 = require('web3') -const { BRIDGE_MODES, getBridgeMode, HOME_ERC_TO_ERC_ABI } = require('../../commons') - -const { COMMON_HOME_BRIDGE_ADDRESS, COMMON_HOME_RPC_URL } = process.env -const homeProvider = new Web3.providers.HttpProvider(COMMON_HOME_RPC_URL) -const web3Home = new Web3(homeProvider) - -async function isV1Bridge() { - const homeBridge = new web3Home.eth.Contract(HOME_ERC_TO_ERC_ABI, COMMON_HOME_BRIDGE_ADDRESS) - const bridgeMode = await getBridgeMode(homeBridge) - return bridgeMode === BRIDGE_MODES.NATIVE_TO_ERC_V1 -} - -module.exports = { - isV1Bridge -}