Oracle using commons (#144)

This commit is contained in:
Przemyslaw Rzad 2019-07-12 14:37:41 +02:00 committed by GitHub
parent b88dd66cac
commit 2e89d7724a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 50 additions and 51 deletions

@ -10,6 +10,7 @@ RUN apt-get clean
WORKDIR /mono WORKDIR /mono
COPY package.json . COPY package.json .
COPY contracts/package.json ./contracts/ COPY contracts/package.json ./contracts/
COPY commons/package.json ./commons/
COPY oracle/package.json ./oracle/ COPY oracle/package.json ./oracle/
COPY yarn.lock . COPY yarn.lock .
RUN yarn install --production --frozen-lockfile RUN yarn install --production --frozen-lockfile
@ -18,6 +19,8 @@ COPY ./contracts ./contracts
RUN yarn run compile:contracts RUN yarn run compile:contracts
RUN mv ./contracts/build ./ && rm -rf ./contracts/* ./contracts/.[!.]* && mv ./build ./contracts/ RUN mv ./contracts/build ./ && rm -rf ./contracts/* ./contracts/.[!.]* && mv ./build ./contracts/
COPY ./commons ./commons
COPY ./oracle ./oracle COPY ./oracle ./oracle
WORKDIR /mono/oracle WORKDIR /mono/oracle
CMD echo "To start a bridge process run:" \ CMD echo "To start a bridge process run:" \

@ -1,5 +1,5 @@
const baseConfig = require('./base.config') const baseConfig = require('./base.config')
const erc20Abi = require('../../contracts/build/contracts/ERC20').abi const { ERC20_ABI } = require('../../commons')
const { ERC_TYPES } = require('../src/utils/constants') const { ERC_TYPES } = require('../src/utils/constants')
const initialChecksJson = process.argv[3] const initialChecksJson = process.argv[3]
@ -29,7 +29,7 @@ module.exports =
...baseConfig.foreignConfig, ...baseConfig.foreignConfig,
event: 'Transfer', event: 'Transfer',
eventContractAddress: process.env.ERC20_TOKEN_ADDRESS, eventContractAddress: process.env.ERC20_TOKEN_ADDRESS,
eventAbi: erc20Abi, eventAbi: ERC20_ABI,
eventFilter: { to: process.env.FOREIGN_BRIDGE_ADDRESS }, eventFilter: { to: process.env.FOREIGN_BRIDGE_ADDRESS },
queue: 'home', queue: 'home',
name: `watcher-${id}`, name: `watcher-${id}`,

@ -1,19 +1,18 @@
require('../env') require('../env')
const { toBN } = require('web3').utils const { toBN } = require('web3').utils
const {
BRIDGE_MODES,
HOME_NATIVE_TO_ERC_ABI,
FOREIGN_NATIVE_TO_ERC_ABI,
HOME_ERC_TO_ERC_ABI,
FOREIGN_ERC_TO_ERC_ABI,
HOME_ERC_TO_NATIVE_ABI,
FOREIGN_ERC_TO_NATIVE_ABI
} = require('../../commons')
const { web3Home, web3Foreign } = require('../src/services/web3') const { web3Home, web3Foreign } = require('../src/services/web3')
const { privateKeyToAddress } = require('../src/utils/utils') const { privateKeyToAddress } = require('../src/utils/utils')
const homeNativeErcAbi = require('../../contracts/build/contracts/HomeBridgeNativeToErc').abi
const foreignNativeErcAbi = require('../../contracts/build/contracts/ForeignBridgeNativeToErc').abi
const homeErcErcAbi = require('../../contracts/build/contracts/HomeBridgeErcToErc').abi
const foreignErc677Erc677Abi = require('../../contracts/build/contracts/ForeignBridgeErc677ToErc677')
.abi
const homeErcNativeAbi = require('../../contracts/build/contracts/HomeBridgeErcToNative').abi
const foreignErcNativeAbi = require('../../contracts/build/contracts/ForeignBridgeErcToNative').abi
const { VALIDATOR_ADDRESS, VALIDATOR_ADDRESS_PRIVATE_KEY } = process.env const { VALIDATOR_ADDRESS, VALIDATOR_ADDRESS_PRIVATE_KEY } = process.env
let homeAbi let homeAbi
@ -21,27 +20,27 @@ let foreignAbi
let id let id
switch (process.env.BRIDGE_MODE) { switch (process.env.BRIDGE_MODE) {
case 'NATIVE_TO_ERC': case BRIDGE_MODES.NATIVE_TO_ERC:
homeAbi = homeNativeErcAbi homeAbi = HOME_NATIVE_TO_ERC_ABI
foreignAbi = foreignNativeErcAbi foreignAbi = FOREIGN_NATIVE_TO_ERC_ABI
id = 'native-erc' id = 'native-erc'
break break
case 'ERC_TO_ERC': case BRIDGE_MODES.ERC_TO_ERC:
homeAbi = homeErcErcAbi homeAbi = HOME_ERC_TO_ERC_ABI
foreignAbi = foreignErc677Erc677Abi foreignAbi = FOREIGN_ERC_TO_ERC_ABI
id = 'erc-erc' id = 'erc-erc'
break break
case 'ERC_TO_NATIVE': case BRIDGE_MODES.ERC_TO_NATIVE:
homeAbi = homeErcNativeAbi homeAbi = HOME_ERC_TO_NATIVE_ABI
foreignAbi = foreignErcNativeAbi foreignAbi = FOREIGN_ERC_TO_NATIVE_ABI
id = 'erc-native' id = 'erc-native'
break break
default: default:
if (process.env.NODE_ENV !== 'test') { if (process.env.NODE_ENV !== 'test') {
throw new Error(`Bridge Mode: ${process.env.BRIDGE_MODE} not supported.`) throw new Error(`Bridge Mode: ${process.env.BRIDGE_MODE} not supported.`)
} else { } else {
homeAbi = homeErcNativeAbi homeAbi = HOME_ERC_TO_NATIVE_ABI
foreignAbi = foreignErcNativeAbi foreignAbi = FOREIGN_ERC_TO_NATIVE_ABI
id = 'erc-native' id = 'erc-native'
} }
} }

@ -3,6 +3,7 @@ const Web3 = require('web3')
const Web3Utils = require('web3-utils') const Web3Utils = require('web3-utils')
const rpcUrlsManager = require('../../src/services/getRpcUrlsManager') const rpcUrlsManager = require('../../src/services/getRpcUrlsManager')
const { sendTx, sendRawTx } = require('../../src/tx/sendTx') const { sendTx, sendRawTx } = require('../../src/tx/sendTx')
const { ERC20_ABI } = require('../../../commons')
const { const {
USER_ADDRESS, USER_ADDRESS,
@ -14,15 +15,14 @@ const {
const NUMBER_OF_DEPOSITS_TO_SEND = process.argv[2] || process.env.NUMBER_OF_DEPOSITS_TO_SEND || 1 const NUMBER_OF_DEPOSITS_TO_SEND = process.argv[2] || process.env.NUMBER_OF_DEPOSITS_TO_SEND || 1
const ERC20_ABI = require('../../../contracts/build/contracts/ERC20').abi const { FOREIGN_ERC_TO_ERC_ABI } = require('../../../commons')
const BRIDGE_ABI = require('../../../contracts/build/contracts/ForeignBridgeErcToErc').abi
const foreignRpcUrl = rpcUrlsManager.foreignUrls[0] const foreignRpcUrl = rpcUrlsManager.foreignUrls[0]
const foreignProvider = new Web3.providers.HttpProvider(foreignRpcUrl) const foreignProvider = new Web3.providers.HttpProvider(foreignRpcUrl)
const web3Foreign = new Web3(foreignProvider) const web3Foreign = new Web3(foreignProvider)
async function main() { async function main() {
const bridge = new web3Foreign.eth.Contract(BRIDGE_ABI, FOREIGN_BRIDGE_ADDRESS) const bridge = new web3Foreign.eth.Contract(FOREIGN_ERC_TO_ERC_ABI, FOREIGN_BRIDGE_ADDRESS)
const ERC20_TOKEN_ADDRESS = await bridge.methods.erc20token().call() const ERC20_TOKEN_ADDRESS = await bridge.methods.erc20token().call()
const poa20 = new web3Foreign.eth.Contract(ERC20_ABI, ERC20_TOKEN_ADDRESS) const poa20 = new web3Foreign.eth.Contract(ERC20_ABI, ERC20_TOKEN_ADDRESS)

@ -4,6 +4,7 @@ const Web3Utils = require('web3-utils')
const rpcUrlsManager = require('../../src/services/getRpcUrlsManager') const rpcUrlsManager = require('../../src/services/getRpcUrlsManager')
const { sendTx, sendRawTx } = require('../../src/tx/sendTx') const { sendTx, sendRawTx } = require('../../src/tx/sendTx')
const { isValidAmount } = require('../utils/utils') const { isValidAmount } = require('../utils/utils')
const { HOME_ERC_TO_ERC_ABI } = require('../../../commons')
const { const {
USER_ADDRESS, USER_ADDRESS,
@ -46,14 +47,12 @@ const BRIDGEABLE_TOKEN_ABI = [
} }
] ]
const BRIDGE_ABI = require('../../../contracts/build/contracts/HomeBridgeErcToErc').abi
const homeRpcUrl = rpcUrlsManager.homeUrls[0] const homeRpcUrl = rpcUrlsManager.homeUrls[0]
const homeProvider = new Web3.providers.HttpProvider(homeRpcUrl) const homeProvider = new Web3.providers.HttpProvider(homeRpcUrl)
const web3Home = new Web3(homeProvider) const web3Home = new Web3(homeProvider)
async function main() { async function main() {
const bridge = new web3Home.eth.Contract(BRIDGE_ABI, HOME_BRIDGE_ADDRESS) const bridge = new web3Home.eth.Contract(HOME_ERC_TO_ERC_ABI, HOME_BRIDGE_ADDRESS)
const BRIDGEABLE_TOKEN_ADDRESS = await bridge.methods.erc677token().call() const BRIDGEABLE_TOKEN_ADDRESS = await bridge.methods.erc677token().call()
const erc677 = new web3Home.eth.Contract(BRIDGEABLE_TOKEN_ABI, BRIDGEABLE_TOKEN_ADDRESS) const erc677 = new web3Home.eth.Contract(BRIDGEABLE_TOKEN_ABI, BRIDGEABLE_TOKEN_ADDRESS)

@ -14,15 +14,14 @@ const {
const NUMBER_OF_DEPOSITS_TO_SEND = process.argv[2] || process.env.NUMBER_OF_DEPOSITS_TO_SEND || 1 const NUMBER_OF_DEPOSITS_TO_SEND = process.argv[2] || process.env.NUMBER_OF_DEPOSITS_TO_SEND || 1
const ERC20_ABI = require('../../../contracts/build/contracts/ERC20').abi const { ERC20_ABI, FOREIGN_ERC_TO_NATIVE_ABI } = require('../../../commons')
const BRIDGE_ABI = require('../../../contracts/build/contracts/ForeignBridgeErcToNative').abi
const foreignRpcUrl = rpcUrlsManager.foreignUrls[0] const foreignRpcUrl = rpcUrlsManager.foreignUrls[0]
const foreignProvider = new Web3.providers.HttpProvider(foreignRpcUrl) const foreignProvider = new Web3.providers.HttpProvider(foreignRpcUrl)
const web3Foreign = new Web3(foreignProvider) const web3Foreign = new Web3(foreignProvider)
async function main() { async function main() {
const bridge = new web3Foreign.eth.Contract(BRIDGE_ABI, FOREIGN_BRIDGE_ADDRESS) const bridge = new web3Foreign.eth.Contract(FOREIGN_ERC_TO_NATIVE_ABI, FOREIGN_BRIDGE_ADDRESS)
const ERC20_TOKEN_ADDRESS = await bridge.methods.erc20token().call() const ERC20_TOKEN_ADDRESS = await bridge.methods.erc20token().call()
const poa20 = new web3Foreign.eth.Contract(ERC20_ABI, ERC20_TOKEN_ADDRESS) const poa20 = new web3Foreign.eth.Contract(ERC20_ABI, ERC20_TOKEN_ADDRESS)

@ -3,7 +3,7 @@ const Web3Utils = require('web3-utils')
const { web3Home } = require('../../src/services/web3') const { web3Home } = require('../../src/services/web3')
const { sendTx, sendRawTx } = require('../../src/tx/sendTx') const { sendTx, sendRawTx } = require('../../src/tx/sendTx')
const { isValidAmount } = require('../utils/utils') const { isValidAmount } = require('../utils/utils')
const BRIDGE_ABI = require('../../../contracts/build/contracts/HomeBridgeErcToNative').abi const { HOME_ERC_TO_NATIVE_ABI } = require('../../../commons')
const { const {
USER_ADDRESS, USER_ADDRESS,
@ -16,7 +16,7 @@ const {
const NUMBER_OF_DEPOSITS_TO_SEND = process.argv[2] || 1 const NUMBER_OF_DEPOSITS_TO_SEND = process.argv[2] || 1
async function main() { async function main() {
const bridge = new web3Home.eth.Contract(BRIDGE_ABI, HOME_BRIDGE_ADDRESS) const bridge = new web3Home.eth.Contract(HOME_ERC_TO_NATIVE_ABI, HOME_BRIDGE_ADDRESS)
try { try {
await isValidAmount(HOME_MIN_AMOUNT_PER_TX, bridge) await isValidAmount(HOME_MIN_AMOUNT_PER_TX, bridge)

@ -1,9 +1,8 @@
require('../env') require('../env')
const Web3 = require('web3') const Web3 = require('web3')
const bridgeValidatorsABI = require('../../contracts/build/contracts/BridgeValidators').abi
const { BRIDGE_VALIDATORS_ABI } = require('../../commons')
const rpcUrlsManager = require('../src/services/getRpcUrlsManager') const rpcUrlsManager = require('../src/services/getRpcUrlsManager')
const { bridgeConfig } = require('../config/base.config') const { bridgeConfig } = require('../config/base.config')
const homeABI = bridgeConfig.homeBridgeAbi const homeABI = bridgeConfig.homeBridgeAbi
@ -19,7 +18,7 @@ async function getStartBlock(rpcUrl, bridgeAddress, bridgeAbi) {
const validatorContractAddress = await bridgeContract.methods.validatorContract().call() const validatorContractAddress = await bridgeContract.methods.validatorContract().call()
const validatorContract = new web3Instance.eth.Contract( const validatorContract = new web3Instance.eth.Contract(
bridgeValidatorsABI, BRIDGE_VALIDATORS_ABI,
validatorContractAddress validatorContractAddress
) )

@ -1,6 +1,6 @@
require('../env') require('../env')
const Web3 = require('web3') const Web3 = require('web3')
const ERC677BridgeTokenABI = require('../../contracts/build/contracts/ERC677BridgeToken').abi const { ERC677_BRIDGE_TOKEN_ABI } = require('../../commons')
const { ERC_TYPES } = require('../src/utils/constants') const { ERC_TYPES } = require('../src/utils/constants')
async function initialChecks() { async function initialChecks() {
@ -9,7 +9,7 @@ async function initialChecks() {
if (BRIDGE_MODE === 'ERC_TO_ERC') { if (BRIDGE_MODE === 'ERC_TO_ERC') {
const foreignWeb3 = new Web3(new Web3.providers.HttpProvider(FOREIGN_RPC_URL)) const foreignWeb3 = new Web3(new Web3.providers.HttpProvider(FOREIGN_RPC_URL))
const tokenContract = new foreignWeb3.eth.Contract(ERC677BridgeTokenABI, ERC20_TOKEN_ADDRESS) const tokenContract = new foreignWeb3.eth.Contract(ERC677_BRIDGE_TOKEN_ABI, ERC20_TOKEN_ADDRESS)
try { try {
const bridgeContract = await tokenContract.methods.bridgeContract().call() const bridgeContract = await tokenContract.methods.bridgeContract().call()
if (bridgeContract === FOREIGN_BRIDGE_ADDRESS) { if (bridgeContract === FOREIGN_BRIDGE_ADDRESS) {

@ -3,6 +3,7 @@ const Web3Utils = require('web3-utils')
const { web3Foreign } = require('../../src/services/web3') const { web3Foreign } = require('../../src/services/web3')
const { sendTx, sendRawTx } = require('../../src/tx/sendTx') const { sendTx, sendRawTx } = require('../../src/tx/sendTx')
const { isValidAmount } = require('../utils/utils') const { isValidAmount } = require('../utils/utils')
const { FOREIGN_NATIVE_TO_ERC_ABI } = require('../../../commons')
const { const {
USER_ADDRESS, USER_ADDRESS,
@ -44,10 +45,9 @@ const ERC677_ABI = [
type: 'function' type: 'function'
} }
] ]
const BRIDGE_ABI = require('../../../contracts/build/contracts/ForeignBridgeNativeToErc').abi
async function main() { async function main() {
const bridge = new web3Foreign.eth.Contract(BRIDGE_ABI, FOREIGN_BRIDGE_ADDRESS) const bridge = new web3Foreign.eth.Contract(FOREIGN_NATIVE_TO_ERC_ABI, FOREIGN_BRIDGE_ADDRESS)
const ERC20_TOKEN_ADDRESS = await bridge.methods.erc677token().call() const ERC20_TOKEN_ADDRESS = await bridge.methods.erc677token().call()
const poa20 = new web3Foreign.eth.Contract(ERC677_ABI, ERC20_TOKEN_ADDRESS) const poa20 = new web3Foreign.eth.Contract(ERC677_ABI, ERC20_TOKEN_ADDRESS)

@ -3,7 +3,7 @@ const Web3Utils = require('web3-utils')
const { web3Home } = require('../../src/services/web3') const { web3Home } = require('../../src/services/web3')
const { sendTx, sendRawTx } = require('../../src/tx/sendTx') const { sendTx, sendRawTx } = require('../../src/tx/sendTx')
const { isValidAmount } = require('../utils/utils') const { isValidAmount } = require('../utils/utils')
const BRIDGE_ABI = require('../../../contracts/build/contracts/HomeBridgeNativeToErc').abi const { HOME_NATIVE_TO_ERC_ABI } = require('../../../commons')
const { const {
USER_ADDRESS, USER_ADDRESS,
@ -16,7 +16,7 @@ const {
const NUMBER_OF_DEPOSITS_TO_SEND = process.argv[2] || 1 const NUMBER_OF_DEPOSITS_TO_SEND = process.argv[2] || 1
async function main() { async function main() {
const bridge = new web3Home.eth.Contract(BRIDGE_ABI, HOME_BRIDGE_ADDRESS) const bridge = new web3Home.eth.Contract(HOME_NATIVE_TO_ERC_ABI, HOME_BRIDGE_ADDRESS)
try { try {
await isValidAmount(HOME_MIN_AMOUNT_PER_TX, bridge) await isValidAmount(HOME_MIN_AMOUNT_PER_TX, bridge)

@ -4,7 +4,7 @@ const { HttpListProviderError } = require('http-list-provider')
const rootLogger = require('../../services/logger') const rootLogger = require('../../services/logger')
const { web3Home } = require('../../services/web3') const { web3Home } = require('../../services/web3')
const bridgeValidatorsABI = require('../../../../contracts/build/contracts/BridgeValidators').abi const { BRIDGE_VALIDATORS_ABI } = require('../../../../commons')
const { EXIT_CODES, MAX_CONCURRENT_EVENTS } = require('../../utils/constants') const { EXIT_CODES, MAX_CONCURRENT_EVENTS } = require('../../utils/constants')
const estimateGas = require('./estimateGas') const estimateGas = require('./estimateGas')
const { const {
@ -28,7 +28,7 @@ function processAffirmationRequestsBuilder(config) {
const validatorContractAddress = await homeBridge.methods.validatorContract().call() const validatorContractAddress = await homeBridge.methods.validatorContract().call()
rootLogger.debug({ validatorContractAddress }, 'Validator contract address obtained') rootLogger.debug({ validatorContractAddress }, 'Validator contract address obtained')
validatorContract = new web3Home.eth.Contract(bridgeValidatorsABI, validatorContractAddress) validatorContract = new web3Home.eth.Contract(BRIDGE_VALIDATORS_ABI, validatorContractAddress)
} }
rootLogger.debug(`Processing ${affirmationRequests.length} AffirmationRequest events`) rootLogger.debug(`Processing ${affirmationRequests.length} AffirmationRequest events`)

@ -1,7 +1,7 @@
require('../../../env') require('../../../env')
const promiseLimit = require('promise-limit') const promiseLimit = require('promise-limit')
const { HttpListProviderError } = require('http-list-provider') const { HttpListProviderError } = require('http-list-provider')
const bridgeValidatorsABI = require('../../../../contracts/build/contracts/BridgeValidators').abi const { BRIDGE_VALIDATORS_ABI } = require('../../../../commons')
const rootLogger = require('../../services/logger') const rootLogger = require('../../services/logger')
const { web3Home, web3Foreign } = require('../../services/web3') const { web3Home, web3Foreign } = require('../../services/web3')
const { signatureToVRS } = require('../../utils/message') const { signatureToVRS } = require('../../utils/message')
@ -34,7 +34,7 @@ function processCollectedSignaturesBuilder(config) {
rootLogger.debug({ validatorContractAddress }, 'Validator contract address obtained') rootLogger.debug({ validatorContractAddress }, 'Validator contract address obtained')
validatorContract = new web3Foreign.eth.Contract( validatorContract = new web3Foreign.eth.Contract(
bridgeValidatorsABI, BRIDGE_VALIDATORS_ABI,
validatorContractAddress validatorContractAddress
) )
} }

@ -1,7 +1,7 @@
require('../../../env') require('../../../env')
const promiseLimit = require('promise-limit') const promiseLimit = require('promise-limit')
const { HttpListProviderError } = require('http-list-provider') const { HttpListProviderError } = require('http-list-provider')
const bridgeValidatorsABI = require('../../../../contracts/build/contracts/BridgeValidators').abi const { BRIDGE_VALIDATORS_ABI } = require('../../../../commons')
const rootLogger = require('../../services/logger') const rootLogger = require('../../services/logger')
const { web3Home } = require('../../services/web3') const { web3Home } = require('../../services/web3')
const { createMessage } = require('../../utils/message') const { createMessage } = require('../../utils/message')
@ -35,7 +35,7 @@ function processSignatureRequestsBuilder(config) {
const validatorContractAddress = await homeBridge.methods.validatorContract().call() const validatorContractAddress = await homeBridge.methods.validatorContract().call()
rootLogger.debug({ validatorContractAddress }, 'Validator contract address obtained') rootLogger.debug({ validatorContractAddress }, 'Validator contract address obtained')
validatorContract = new web3Home.eth.Contract(bridgeValidatorsABI, validatorContractAddress) validatorContract = new web3Home.eth.Contract(BRIDGE_VALIDATORS_ABI, validatorContractAddress)
} }
rootLogger.debug(`Processing ${signatureRequests.length} SignatureRequest events`) rootLogger.debug(`Processing ${signatureRequests.length} SignatureRequest events`)

@ -1,7 +1,7 @@
require('../../../env') require('../../../env')
const promiseLimit = require('promise-limit') const promiseLimit = require('promise-limit')
const { HttpListProviderError } = require('http-list-provider') const { HttpListProviderError } = require('http-list-provider')
const bridgeValidatorsABI = require('../../../../contracts/build/contracts/BridgeValidators').abi const { BRIDGE_VALIDATORS_ABI } = require('../../../../commons')
const rootLogger = require('../../services/logger') const rootLogger = require('../../services/logger')
const { web3Home } = require('../../services/web3') const { web3Home } = require('../../services/web3')
const { const {
@ -27,7 +27,7 @@ function processTransfersBuilder(config) {
const validatorContractAddress = await homeBridge.methods.validatorContract().call() const validatorContractAddress = await homeBridge.methods.validatorContract().call()
rootLogger.debug({ validatorContractAddress }, 'Validator contract address obtained') rootLogger.debug({ validatorContractAddress }, 'Validator contract address obtained')
validatorContract = new web3Home.eth.Contract(bridgeValidatorsABI, validatorContractAddress) validatorContract = new web3Home.eth.Contract(BRIDGE_VALIDATORS_ABI, validatorContractAddress)
} }
rootLogger.debug(`Processing ${transfers.length} Transfer events`) rootLogger.debug(`Processing ${transfers.length} Transfer events`)