|
1 | 1 | const Web3 = require('web3') |
2 | 2 | const assert = require('assert') |
3 | 3 | const promiseRetry = require('promise-retry') |
4 | | -const { user, homeRPC, foreignRPC, amb } = require('../../e2e-commons/constants.json') |
| 4 | +const { user, homeRPC, foreignRPC, amb, validator } = require('../../e2e-commons/constants.json') |
5 | 5 | const { generateNewBlock } = require('../../e2e-commons/utils') |
6 | | -const { BOX_ABI } = require('../../commons') |
| 6 | +const { BOX_ABI, HOME_AMB_ABI, FOREIGN_AMB_ABI } = require('../../commons') |
| 7 | +const { setRequiredSignatures } = require('./utils') |
7 | 8 |
|
8 | 9 | const { toBN } = Web3.utils |
9 | 10 |
|
10 | 11 | const homeWeb3 = new Web3(new Web3.providers.HttpProvider(homeRPC.URL)) |
11 | 12 | const foreignWeb3 = new Web3(new Web3.providers.HttpProvider(foreignRPC.URL)) |
12 | 13 |
|
| 14 | +const COMMON_HOME_BRIDGE_ADDRESS = amb.home |
| 15 | +const COMMON_FOREIGN_BRIDGE_ADDRESS = amb.foreign |
| 16 | + |
13 | 17 | homeWeb3.eth.accounts.wallet.add(user.privateKey) |
| 18 | +homeWeb3.eth.accounts.wallet.add(validator.privateKey) |
14 | 19 | foreignWeb3.eth.accounts.wallet.add(user.privateKey) |
| 20 | +foreignWeb3.eth.accounts.wallet.add(validator.privateKey) |
15 | 21 |
|
16 | 22 | const homeBox = new homeWeb3.eth.Contract(BOX_ABI, amb.homeBox) |
17 | 23 | const foreignBox = new foreignWeb3.eth.Contract(BOX_ABI, amb.foreignBox) |
| 24 | +const homeBridge = new homeWeb3.eth.Contract(HOME_AMB_ABI, COMMON_HOME_BRIDGE_ADDRESS) |
| 25 | +const foreignBridge = new foreignWeb3.eth.Contract(FOREIGN_AMB_ABI, COMMON_FOREIGN_BRIDGE_ADDRESS) |
18 | 26 |
|
19 | 27 | describe('arbitrary message bridging', () => { |
| 28 | + before(async () => { |
| 29 | + // Set 2 required signatures for home bridge |
| 30 | + await setRequiredSignatures({ |
| 31 | + bridgeContract: homeBridge, |
| 32 | + web3: homeWeb3, |
| 33 | + requiredSignatures: 2, |
| 34 | + options: { |
| 35 | + from: validator.address, |
| 36 | + gas: '4000000' |
| 37 | + } |
| 38 | + }) |
| 39 | + |
| 40 | + // Set 2 required signatures for foreign bridge |
| 41 | + await setRequiredSignatures({ |
| 42 | + bridgeContract: foreignBridge, |
| 43 | + web3: foreignWeb3, |
| 44 | + requiredSignatures: 2, |
| 45 | + options: { |
| 46 | + from: validator.address, |
| 47 | + gas: '4000000' |
| 48 | + } |
| 49 | + }) |
| 50 | + }) |
20 | 51 | describe('Home to Foreign', () => { |
21 | 52 | describe('Subsidized Mode', () => { |
22 | 53 | it('should bridge message', async () => { |
@@ -59,6 +90,7 @@ describe('arbitrary message bridging', () => { |
59 | 90 |
|
60 | 91 | // check that value changed and balance decreased |
61 | 92 | await promiseRetry(async retry => { |
| 93 | + await generateNewBlock(homeWeb3, user.address) |
62 | 94 | const value = await foreignBox.methods.value().call() |
63 | 95 | if (!toBN(value).eq(toBN(newValue))) { |
64 | 96 | retry() |
|
0 commit comments