-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refactor extract to a utils library the common code
- Loading branch information
1 parent
9c64507
commit 51ce030
Showing
3 changed files
with
80 additions
and
99 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |