Skip to content

Commit edc51c7

Browse files
patitonarakolotov
authored andcommitted
Use 3 validators in oracle e2e tests (omni#264)
1 parent 612f130 commit edc51c7

File tree

17 files changed

+223
-21
lines changed

17 files changed

+223
-21
lines changed

e2e-commons/constants.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,26 @@
77
"address": "0xcca2fb44C8C36E51f743269d6F484Fd027B9F9Aa",
88
"privateKey": "0xcf954e07e6a439faf392eb474e95ddb444c2ca444847f2ad6ecc79e1a585e2b8"
99
},
10+
"thirdUser": {
11+
"address": "0x441cc8537aB6cE63d060b63F3A44eE021d62e6cF",
12+
"privateKey": "0xd3915199f27691d7784cb01ab0c7220308053b229f95d592e97493326314a8d0"
13+
},
14+
"fourthUser": {
15+
"address": "0x3CC5baAB679eC0732C175760079Bf48F564ad26B",
16+
"privateKey": "0xedb53ee050631b7914d5f1a66c2f0d2df3ec85a9ed2a9616b16a7b1b7a10b8d1"
17+
},
1018
"validator": {
1119
"address": "0xaaB52d66283F7A1D5978bcFcB55721ACB467384b",
1220
"privateKey": "0x8e829f695aed89a154550f30262f1529582cc49dc30eff74a6b491359e0230f9"
1321
},
22+
"secondValidator": {
23+
"address": "0xdCC784657C78054aa61FbcFFd2605F32374816A4",
24+
"privateKey": "0x5a5c3645d0f04e9eb4f27f94ed4c244a225587405b8838e7456f7781ce3a9513"
25+
},
26+
"thirdValidator": {
27+
"address": "0xDcef88209a20D52165230104B245803C3269454d",
28+
"privateKey": "0xf877f62a1c19f852cff1d29f0fb1ecac18821c0080d4cc0520c60c098293dca1"
29+
},
1430
"blockGenerator": {
1531
"address": "0xB4579fd5AfEaB60B03Db3F408AAdD315035943f7",
1632
"privateKey": "0xd6143d390d8b28c33601bb0fe29392fb1c35c24ccfe8722c09c2bdd6ada2699f"

e2e-commons/contracts-envs/amb.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ FOREIGN_REQUIRED_BLOCK_CONFIRMATIONS=1
2222
FOREIGN_GAS_PRICE=10000000000
2323

2424
REQUIRED_NUMBER_OF_VALIDATORS=1
25-
VALIDATORS=0xaaB52d66283F7A1D5978bcFcB55721ACB467384b
25+
VALIDATORS="0xaaB52d66283F7A1D5978bcFcB55721ACB467384b 0xdCC784657C78054aa61FbcFFd2605F32374816A4 0xDcef88209a20D52165230104B245803C3269454d"

e2e-commons/contracts-envs/erc-to-erc.env

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ FOREIGN_REWARDABLE=false
3434
ERC20_TOKEN_ADDRESS=0x3C665A31199694Bf723fD08844AD290207B5797f
3535

3636
REQUIRED_NUMBER_OF_VALIDATORS=1
37-
VALIDATORS="0xaaB52d66283F7A1D5978bcFcB55721ACB467384b"
38-
VALIDATORS_REWARD_ACCOUNTS=0x0000000000000000000000000000000000000000
37+
VALIDATORS="0xaaB52d66283F7A1D5978bcFcB55721ACB467384b 0xdCC784657C78054aa61FbcFFd2605F32374816A4 0xDcef88209a20D52165230104B245803C3269454d"
3938
BLOCK_REWARD_ADDRESS=0x0000000000000000000000000000000000000000
4039
DPOS_STAKING_ADDRESS=0x0000000000000000000000000000000000000000
4140
ERC20_EXTENDED_BY_ERC677=false

e2e-commons/contracts-envs/erc-to-native.env

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,4 @@ BLOCK_REWARD_ADDRESS=0xF9698Eb93702dfdd0e2d802088d4c21822a8A977
3535
ERC20_TOKEN_ADDRESS=0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359
3636

3737
REQUIRED_NUMBER_OF_VALIDATORS=1
38-
VALIDATORS="0xaaB52d66283F7A1D5978bcFcB55721ACB467384b"
39-
VALIDATORS_REWARD_ACCOUNTS=0x0000000000000000000000000000000000000000
38+
VALIDATORS="0xaaB52d66283F7A1D5978bcFcB55721ACB467384b 0xdCC784657C78054aa61FbcFFd2605F32374816A4 0xDcef88209a20D52165230104B245803C3269454d"

e2e-commons/contracts-envs/native-to-erc.env

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,5 @@ FOREIGN_GAS_PRICE=10000000000
3434
FOREIGN_REWARDABLE=false
3535

3636
REQUIRED_NUMBER_OF_VALIDATORS=1
37-
VALIDATORS="0xaaB52d66283F7A1D5978bcFcB55721ACB467384b"
38-
VALIDATORS_REWARD_ACCOUNTS=0x0000000000000000000000000000000000000000
37+
VALIDATORS="0xaaB52d66283F7A1D5978bcFcB55721ACB467384b 0xdCC784657C78054aa61FbcFFd2605F32374816A4 0xDcef88209a20D52165230104B245803C3269454d"
3938
BLOCK_REWARD_ADDRESS=0x0000000000000000000000000000000000000000

e2e-commons/docker-compose.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ services:
2424
- ultimate
2525
rabbit:
2626
image: "rabbitmq:3-management"
27-
ports:
28-
- "15672:15672"
2927
networks:
3028
- ultimate
3129
oracle:

e2e-commons/down.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@ if [ $CI ]; then exit $rc; fi
55

66
ps | grep node | grep -v grep | awk '{print "kill " $1}' | /bin/bash
77
docker-compose down
8+
docker-compose -p validator2 down
9+
docker-compose -p validator3 down
810
docker network rm ultimate || true

e2e-commons/up.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,29 @@ docker-compose build
77
docker network create --driver bridge ultimate || true
88
docker-compose up -d parity1 parity2 e2e
99

10+
startValidator () {
11+
docker-compose $1 run -d --name $4 redis
12+
docker-compose $1 run -d --name $5 rabbit
13+
docker-compose $1 run $2 $3 -d oracle yarn watcher:signature-request
14+
docker-compose $1 run $2 $3 -d oracle yarn watcher:collected-signatures
15+
docker-compose $1 run $2 $3 -d oracle yarn watcher:affirmation-request
16+
docker-compose $1 run $2 $3 -d oracle-erc20 yarn watcher:signature-request
17+
docker-compose $1 run $2 $3 -d oracle-erc20 yarn watcher:collected-signatures
18+
docker-compose $1 run $2 $3 -d oracle-erc20 yarn watcher:affirmation-request
19+
docker-compose $1 run $2 $3 -d oracle-erc20 yarn watcher:transfer
20+
docker-compose $1 run $2 $3 -d oracle-erc20-native yarn watcher:signature-request
21+
docker-compose $1 run $2 $3 -d oracle-erc20-native yarn watcher:collected-signatures
22+
docker-compose $1 run $2 $3 -d oracle-erc20-native yarn watcher:affirmation-request
23+
docker-compose $1 run $2 $3 -d oracle-erc20-native yarn watcher:transfer
24+
docker-compose $1 run $2 $3 -d oracle-erc20-native yarn watcher:half-duplex-transfer
25+
docker-compose $1 run $2 $3 -d oracle-erc20-native yarn worker:swap-tokens
26+
docker-compose $1 run $2 $3 -d oracle-amb yarn watcher:signature-request
27+
docker-compose $1 run $2 $3 -d oracle-amb yarn watcher:collected-signatures
28+
docker-compose $1 run $2 $3 -d oracle-amb yarn watcher:affirmation-request
29+
docker-compose $1 run $2 $3 -d oracle-erc20-native yarn sender:home
30+
docker-compose $1 run $2 $3 -d oracle-erc20-native yarn sender:foreign
31+
}
32+
1033
while [ "$1" != "" ]; do
1134
if [ "$1" == "oracle" ]; then
1235
docker-compose up -d redis rabbit oracle oracle-erc20 oracle-erc20-native oracle-amb
@@ -31,6 +54,20 @@ while [ "$1" != "" ]; do
3154
docker-compose run -d oracle yarn sender:foreign
3255
fi
3356

57+
if [ "$1" == "oracle-validator-2" ]; then
58+
oracle2name="-p validator2"
59+
oracle2Values="-e ORACLE_VALIDATOR_ADDRESS=0xdCC784657C78054aa61FbcFFd2605F32374816A4 -e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=5a5c3645d0f04e9eb4f27f94ed4c244a225587405b8838e7456f7781ce3a9513"
60+
oracle2comp="-e ORACLE_QUEUE_URL=amqp://rabbit2 -e ORACLE_REDIS_URL=redis://redis2"
61+
startValidator "$oracle2name" "$oracle2Values" "$oracle2comp" "redis2" "rabbit2"
62+
fi
63+
64+
if [ "$1" == "oracle-validator-3" ]; then
65+
oracle3name="-p validator3"
66+
oracle3Values="-e ORACLE_VALIDATOR_ADDRESS=0xDcef88209a20D52165230104B245803C3269454d -e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=f877f62a1c19f852cff1d29f0fb1ecac18821c0080d4cc0520c60c098293dca1"
67+
oracle3comp="-e ORACLE_QUEUE_URL=amqp://rabbit3 -e ORACLE_REDIS_URL=redis://redis3"
68+
startValidator "$oracle3name" "$oracle3Values" "$oracle3comp" "redis3" "rabbit3"
69+
fi
70+
3471
if [ "$1" == "ui" ]; then
3572
docker-compose up -d ui ui-erc20 ui-erc20-native
3673

oracle-e2e/run-tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cd $(dirname $0)
22

3-
../e2e-commons/up.sh deploy oracle
3+
../e2e-commons/up.sh deploy oracle oracle-validator-2 oracle-validator-3
44

55
docker-compose -f ../e2e-commons/docker-compose.yml run e2e yarn workspace oracle-e2e run start
66
rc=$?

oracle-e2e/test/amb.js

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,53 @@
11
const Web3 = require('web3')
22
const assert = require('assert')
33
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')
55
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')
78

89
const { toBN } = Web3.utils
910

1011
const homeWeb3 = new Web3(new Web3.providers.HttpProvider(homeRPC.URL))
1112
const foreignWeb3 = new Web3(new Web3.providers.HttpProvider(foreignRPC.URL))
1213

14+
const COMMON_HOME_BRIDGE_ADDRESS = amb.home
15+
const COMMON_FOREIGN_BRIDGE_ADDRESS = amb.foreign
16+
1317
homeWeb3.eth.accounts.wallet.add(user.privateKey)
18+
homeWeb3.eth.accounts.wallet.add(validator.privateKey)
1419
foreignWeb3.eth.accounts.wallet.add(user.privateKey)
20+
foreignWeb3.eth.accounts.wallet.add(validator.privateKey)
1521

1622
const homeBox = new homeWeb3.eth.Contract(BOX_ABI, amb.homeBox)
1723
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)
1826

1927
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+
})
2051
describe('Home to Foreign', () => {
2152
describe('Subsidized Mode', () => {
2253
it('should bridge message', async () => {
@@ -59,6 +90,7 @@ describe('arbitrary message bridging', () => {
5990

6091
// check that value changed and balance decreased
6192
await promiseRetry(async retry => {
93+
await generateNewBlock(homeWeb3, user.address)
6294
const value = await foreignBox.methods.value().call()
6395
if (!toBN(value).eq(toBN(newValue))) {
6496
retry()

0 commit comments

Comments
 (0)