tokenbridge/oracle/scripts/getValidatorStartBlocks.js
Przemyslaw Rzad f5ff33d21f
Oracle & Monitor - Compiled ABI's (#71)
* Oracle abi taken from compilation.
Moved project setup from dockerfile to package.json scripts

* Use compile:contracts script instead of repeated command

* Update imports to root contracts instead of copying

* Rule for importing unpublished. Lint fix

* Remove prepare:contracts and import:contracts

* Disabled ModuleScopePlugin in order to be able to import contracts outside src dir

* Fix for rm removing . and .. on linux
2019-05-27 09:22:08 +02:00

60 lines
1.9 KiB
JavaScript

const path = require('path')
require('dotenv').config({
path: path.join(__dirname, '../.env')
})
const Web3 = require('web3')
const bridgeValidatorsABI = require('../../contracts/build/contracts/BridgeValidators').abi
const rpcUrlsManager = require('../src/services/getRpcUrlsManager')
const { bridgeConfig } = require('../config/base.config')
const homeABI = bridgeConfig.homeBridgeAbi
const foreignABI = bridgeConfig.foreignBridgeAbi
async function getStartBlock(rpcUrl, bridgeAddress, bridgeAbi) {
try {
const web3Provider = new Web3.providers.HttpProvider(rpcUrl)
const web3Instance = new Web3(web3Provider)
const bridgeContract = new web3Instance.eth.Contract(bridgeAbi, bridgeAddress)
const deployedAtBlock = await bridgeContract.methods.deployedAtBlock().call()
const validatorContractAddress = await bridgeContract.methods.validatorContract().call()
const validatorContract = new web3Instance.eth.Contract(
bridgeValidatorsABI,
validatorContractAddress
)
const validatorDeployedAtBlock = await validatorContract.methods.deployedAtBlock().call()
const validatorAddedEvents = await validatorContract.getPastEvents('ValidatorAdded', {
fromBlock: validatorDeployedAtBlock,
filter: { validator: process.env.VALIDATOR_ADDRESS }
})
return validatorAddedEvents.length ? validatorAddedEvents[0].blockNumber : deployedAtBlock
} catch (e) {
return 0
}
}
async function main() {
const { HOME_BRIDGE_ADDRESS, FOREIGN_BRIDGE_ADDRESS } = process.env
const homeRpcUrl = rpcUrlsManager.homeUrls[0]
const foreignRpcUrl = rpcUrlsManager.foreignUrls[0]
const homeStartBlock = await getStartBlock(homeRpcUrl, HOME_BRIDGE_ADDRESS, homeABI)
const foreignStartBlock = await getStartBlock(foreignRpcUrl, FOREIGN_BRIDGE_ADDRESS, foreignABI)
const result = {
homeStartBlock,
foreignStartBlock
}
console.log(JSON.stringify(result))
return result
}
main()
module.exports = main