Skip to content

Commit

Permalink
Refactor extract to a utils library the common code
Browse files Browse the repository at this point in the history
  • Loading branch information
fernandomg committed Nov 27, 2018
1 parent 9c64507 commit 51ce030
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 99 deletions.
52 changes: 4 additions & 48 deletions alerts.js
Original file line number Diff line number Diff line change
@@ -1,64 +1,20 @@
require('dotenv').config()
const BN = require('bignumber.js')
const Web3 = require('web3')
const logger = require('./logger')('eventsStats')
const { BRIDGE_MODES, decodeBridgeMode, getBridgeABIs } = require('./utils/bridgeMode')
const logger = require('./logger')('alerts')
const eventsInfo = require('./utils/events')

const {
HOME_RPC_URL,
FOREIGN_RPC_URL,
HOME_BRIDGE_ADDRESS,
FOREIGN_BRIDGE_ADDRESS,
ERC20_ADDRESS
} = process.env

const HOME_DEPLOYMENT_BLOCK = Number(process.env.HOME_DEPLOYMENT_BLOCK) || 0
const FOREIGN_DEPLOYMENT_BLOCK = Number(process.env.FOREIGN_DEPLOYMENT_BLOCK) || 0
const { HOME_RPC_URL, FOREIGN_RPC_URL } = process.env

const homeProvider = new Web3.providers.HttpProvider(HOME_RPC_URL)
const web3Home = new Web3(homeProvider)

const foreignProvider = new Web3.providers.HttpProvider(FOREIGN_RPC_URL)
const web3Foreign = new Web3(foreignProvider)

const HOME_ERC_TO_ERC_ABI = require('./abis/HomeBridgeErcToErc.abi')
const ERC20_ABI = require('./abis/ERC20.abi')

async function main() {
try {
const homeErcBridge = new web3Home.eth.Contract(HOME_ERC_TO_ERC_ABI, HOME_BRIDGE_ADDRESS)
const bridgeModeHash = await homeErcBridge.methods.getBridgeMode().call()
const bridgeMode = decodeBridgeMode(bridgeModeHash)
const { HOME_ABI, FOREIGN_ABI } = getBridgeABIs(bridgeMode)
const hasForeignErc = bridgeMode === BRIDGE_MODES.ERC_TO_ERC || bridgeMode === BRIDGE_MODES.ERC_TO_NATIVE
const homeBridge = new web3Home.eth.Contract(HOME_ABI, HOME_BRIDGE_ADDRESS)
const foreignBridge = new web3Foreign.eth.Contract(FOREIGN_ABI, FOREIGN_BRIDGE_ADDRESS)
const erc20Contract = new web3Foreign.eth.Contract(ERC20_ABI, ERC20_ADDRESS)

logger.debug("calling homeBridge.getPastEvents('UserRequestForSignature')")
const homeDeposits = await homeBridge.getPastEvents('UserRequestForSignature', {
fromBlock: HOME_DEPLOYMENT_BLOCK
})

logger.debug("calling foreignBridge.getPastEvents('RelayedMessage')")
const foreignDeposits = await foreignBridge.getPastEvents('RelayedMessage', {
fromBlock: FOREIGN_DEPLOYMENT_BLOCK
})

logger.debug("calling homeBridge.getPastEvents('AffirmationCompleted')")
const homeWithdrawals = await homeBridge.getPastEvents('AffirmationCompleted', {
fromBlock: HOME_DEPLOYMENT_BLOCK
})

logger.debug("calling foreignBridge.getPastEvents('UserRequestForAffirmation')")
const foreignWithdrawals = hasForeignErc
? await erc20Contract.getPastEvents('Transfer', {
fromBlock: FOREIGN_DEPLOYMENT_BLOCK,
filter: { to: FOREIGN_BRIDGE_ADDRESS }
})
: await foreignBridge.getPastEvents('UserRequestForAffirmation', {
fromBlock: FOREIGN_DEPLOYMENT_BLOCK
})
const { foreignDeposits, homeDeposits, homeWithdrawals, foreignWithdrawals } = await eventsInfo()

const xSignatures = foreignDeposits.filter(findDifferences(homeDeposits))
const xAffirmations = homeWithdrawals.filter(findDifferences(foreignWithdrawals))
Expand Down
53 changes: 2 additions & 51 deletions eventsStats.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,6 @@
require('dotenv').config()
const Web3 = require('web3')
const logger = require('./logger')('eventsStats')
const { BRIDGE_MODES, decodeBridgeMode, getBridgeABIs } = require('./utils/bridgeMode')

const {
HOME_RPC_URL,
FOREIGN_RPC_URL,
HOME_BRIDGE_ADDRESS,
FOREIGN_BRIDGE_ADDRESS,
ERC20_ADDRESS
} = process.env
const HOME_DEPLOYMENT_BLOCK = Number(process.env.HOME_DEPLOYMENT_BLOCK) || 0
const FOREIGN_DEPLOYMENT_BLOCK = Number(process.env.FOREIGN_DEPLOYMENT_BLOCK) || 0

const homeProvider = new Web3.providers.HttpProvider(HOME_RPC_URL)
const web3Home = new Web3(homeProvider)

const foreignProvider = new Web3.providers.HttpProvider(FOREIGN_RPC_URL)
const web3Foreign = new Web3(foreignProvider)

const HOME_ERC_TO_ERC_ABI = require('./abis/HomeBridgeErcToErc.abi')
const ERC20_ABI = require('./abis/ERC20.abi')
const eventsInfo = require('./utils/events')

function compareDepositsHome(foreign) {
return homeDeposit => {
Expand Down Expand Up @@ -78,36 +58,7 @@ function compareTransferForeign(home) {

async function main() {
try {
const homeErcBridge = new web3Home.eth.Contract(HOME_ERC_TO_ERC_ABI, HOME_BRIDGE_ADDRESS)
const bridgeModeHash = await homeErcBridge.methods.getBridgeMode().call()
const bridgeMode = decodeBridgeMode(bridgeModeHash)
const { HOME_ABI, FOREIGN_ABI } = getBridgeABIs(bridgeMode)
const hasForeignErc =
bridgeMode === BRIDGE_MODES.ERC_TO_ERC || bridgeMode === BRIDGE_MODES.ERC_TO_NATIVE
const homeBridge = new web3Home.eth.Contract(HOME_ABI, HOME_BRIDGE_ADDRESS)
const foreignBridge = new web3Foreign.eth.Contract(FOREIGN_ABI, FOREIGN_BRIDGE_ADDRESS)
const erc20Contract = new web3Foreign.eth.Contract(ERC20_ABI, ERC20_ADDRESS)
logger.debug("calling homeBridge.getPastEvents('UserRequestForSignature')")
const homeDeposits = await homeBridge.getPastEvents('UserRequestForSignature', {
fromBlock: HOME_DEPLOYMENT_BLOCK
})
logger.debug("calling foreignBridge.getPastEvents('RelayedMessage')")
const foreignDeposits = await foreignBridge.getPastEvents('RelayedMessage', {
fromBlock: FOREIGN_DEPLOYMENT_BLOCK
})
logger.debug("calling homeBridge.getPastEvents('AffirmationCompleted')")
const homeWithdrawals = await homeBridge.getPastEvents('AffirmationCompleted', {
fromBlock: HOME_DEPLOYMENT_BLOCK
})
logger.debug("calling foreignBridge.getPastEvents('UserRequestForAffirmation')")
const foreignWithdrawals = hasForeignErc
? await erc20Contract.getPastEvents('Transfer', {
fromBlock: FOREIGN_DEPLOYMENT_BLOCK,
filter: { to: FOREIGN_BRIDGE_ADDRESS }
})
: await foreignBridge.getPastEvents('UserRequestForAffirmation', {
fromBlock: FOREIGN_DEPLOYMENT_BLOCK
})
const { foreignDeposits, homeDeposits, homeWithdrawals, foreignWithdrawals, hasForeignErc } = await eventsInfo()

const onlyInHomeDeposits = homeDeposits.filter(compareDepositsHome(foreignDeposits))
const onlyInForeignDeposits = foreignDeposits
Expand Down
74 changes: 74 additions & 0 deletions utils/events.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
require('dotenv').config()
const Web3 = require('web3')
const logger = require('../logger')('eventsUtils')
const { BRIDGE_MODES, decodeBridgeMode, getBridgeABIs } = require('./bridgeMode')
const {
HOME_RPC_URL,
FOREIGN_RPC_URL,
HOME_BRIDGE_ADDRESS,
FOREIGN_BRIDGE_ADDRESS,
ERC20_ADDRESS
} = process.env

const HOME_DEPLOYMENT_BLOCK = Number(process.env.HOME_DEPLOYMENT_BLOCK) || 0
const FOREIGN_DEPLOYMENT_BLOCK = Number(process.env.FOREIGN_DEPLOYMENT_BLOCK) || 0

const homeProvider = new Web3.providers.HttpProvider(HOME_RPC_URL)
const web3Home = new Web3(homeProvider)

const foreignProvider = new Web3.providers.HttpProvider(FOREIGN_RPC_URL)
const web3Foreign = new Web3(foreignProvider)

const HOME_ERC_TO_ERC_ABI = require('../abis/HomeBridgeErcToErc.abi')
const ERC20_ABI = require('../abis/ERC20.abi')

async function main() {
try {
const homeErcBridge = new web3Home.eth.Contract(HOME_ERC_TO_ERC_ABI, HOME_BRIDGE_ADDRESS)
const bridgeModeHash = await homeErcBridge.methods.getBridgeMode().call()
const bridgeMode = decodeBridgeMode(bridgeModeHash)
const { HOME_ABI, FOREIGN_ABI } = getBridgeABIs(bridgeMode)
const hasForeignErc = bridgeMode === BRIDGE_MODES.ERC_TO_ERC || bridgeMode === BRIDGE_MODES.ERC_TO_NATIVE
const homeBridge = new web3Home.eth.Contract(HOME_ABI, HOME_BRIDGE_ADDRESS)
const foreignBridge = new web3Foreign.eth.Contract(FOREIGN_ABI, FOREIGN_BRIDGE_ADDRESS)
const erc20Contract = new web3Foreign.eth.Contract(ERC20_ABI, ERC20_ADDRESS)

logger.debug("calling homeBridge.getPastEvents('UserRequestForSignature')")
const homeDeposits = await homeBridge.getPastEvents('UserRequestForSignature', {
fromBlock: HOME_DEPLOYMENT_BLOCK
})

logger.debug("calling foreignBridge.getPastEvents('RelayedMessage')")
const foreignDeposits = await foreignBridge.getPastEvents('RelayedMessage', {
fromBlock: FOREIGN_DEPLOYMENT_BLOCK
})

logger.debug("calling homeBridge.getPastEvents('AffirmationCompleted')")
const homeWithdrawals = await homeBridge.getPastEvents('AffirmationCompleted', {
fromBlock: HOME_DEPLOYMENT_BLOCK
})

logger.debug("calling foreignBridge.getPastEvents('UserRequestForAffirmation')")
const foreignWithdrawals = hasForeignErc
? await erc20Contract.getPastEvents('Transfer', {
fromBlock: FOREIGN_DEPLOYMENT_BLOCK,
filter: { to: FOREIGN_BRIDGE_ADDRESS }
})
: await foreignBridge.getPastEvents('UserRequestForAffirmation', {
fromBlock: FOREIGN_DEPLOYMENT_BLOCK
})
logger.debug("Done")
return {
homeDeposits,
foreignDeposits,
homeWithdrawals,
foreignWithdrawals,
hasForeignErc
}
} catch (e) {
logger.error(e)
throw e
}
}

module.exports = main

0 comments on commit 51ce030

Please sign in to comment.