Skip to content

Commit 6e1f574

Browse files
Refactor oracle configuration (#584)
1 parent 8ed6550 commit 6e1f574

File tree

16 files changed

+81
-121
lines changed

16 files changed

+81
-121
lines changed

deployment/roles/oracle/tasks/post_config.yml

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,6 @@
2727
set_fact:
2828
ORACLE_VALIDATOR_ADDRESS: "{{ VADDRESS.stdout }}"
2929

30-
- name: Get foreign erc type
31-
become_user: "{{ compose_service_user }}"
32-
shell: docker-compose run --rm --entrypoint "node scripts/initialChecks.js" bridge_affirmation
33-
args:
34-
chdir: "{{ bridge_path }}/oracle"
35-
register: ERCTYPE
36-
37-
- name: Set FOREIGN_ERC_TYPE variable
38-
set_fact:
39-
FOREIGN_ERC_TYPE: "{{ (ERCTYPE.stdout).foreignERC | default('') }}"
40-
4130
- name: Extend docker compose file for erc to native
4231
set_fact: composefileoverride="-f docker-compose-transfer.yml"
4332
when: ORACLE_BRIDGE_MODE == "ERC_TO_NATIVE"

e2e-commons/components-envs/oracle-amb.env

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ COMMON_HOME_RPC_URL=http://parity1:8545
66
COMMON_FOREIGN_RPC_URL=http://parity2:8545
77
COMMON_HOME_BRIDGE_ADDRESS=0x8397be90BCF57b0B71219f555Fe121b22e5a994C
88
COMMON_FOREIGN_BRIDGE_ADDRESS=0x1feB40aD9420b186F019A717c37f5546165d411E
9-
ORACLE_VALIDATOR_ADDRESS=0xaaB52d66283F7A1D5978bcFcB55721ACB467384b
10-
ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=8e829f695aed89a154550f30262f1529582cc49dc30eff74a6b491359e0230f9
119
COMMON_HOME_GAS_PRICE_SUPPLIER_URL=
1210
COMMON_HOME_GAS_PRICE_SPEED_TYPE=standard
1311
COMMON_HOME_GAS_PRICE_FALLBACK=1000000000

e2e-commons/components-envs/oracle-erc20-native.env

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ COMMON_HOME_RPC_URL=http://parity1:8545
66
COMMON_FOREIGN_RPC_URL=http://parity2:8545
77
COMMON_HOME_BRIDGE_ADDRESS=0x5118AC62AE912Dd5B51EEfF7338c4fcb0248Ba8c
88
COMMON_FOREIGN_BRIDGE_ADDRESS=0x32198D570fffC7033641F8A9094FFDCaAEF42624
9-
ORACLE_VALIDATOR_ADDRESS=0xaaB52d66283F7A1D5978bcFcB55721ACB467384b
10-
ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=8e829f695aed89a154550f30262f1529582cc49dc30eff74a6b491359e0230f9
119
COMMON_HOME_GAS_PRICE_SUPPLIER_URL=https://gasprice.poa.network/
1210
COMMON_HOME_GAS_PRICE_SPEED_TYPE=standard
1311
COMMON_HOME_GAS_PRICE_FALLBACK=1

e2e-commons/up.sh

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,42 +15,46 @@ docker network create --driver bridge ultimate || true
1515
docker-compose up -d parity1 parity2 e2e
1616

1717
startValidator () {
18-
db_env="-e ORACLE_QUEUE_URL=amqp://$4 -e ORACLE_REDIS_URL=redis://$3"
18+
db_env="-e ORACLE_QUEUE_URL=amqp://$3 -e ORACLE_REDIS_URL=redis://$2"
1919

20-
docker-compose $1 run -d --name $3 redis
21-
docker-compose $1 run -d --name $4 rabbit
20+
docker-compose $1 run -d --name $2 redis
21+
docker-compose $1 run -d --name $3 rabbit
2222

2323
if [[ -z "$MODE" || "$MODE" == erc-to-native ]]; then
24-
docker-compose $1 run $2 $db_env -d oracle-erc20-native yarn watcher:signature-request
25-
docker-compose $1 run $2 $db_env -d oracle-erc20-native yarn watcher:collected-signatures
26-
docker-compose $1 run $2 $db_env -d oracle-erc20-native yarn watcher:affirmation-request
27-
docker-compose $1 run $2 $db_env -d oracle-erc20-native yarn watcher:transfer
24+
docker-compose $1 run $oraclePK $db_env -d oracle-erc20-native yarn watcher:signature-request
25+
docker-compose $1 run $oracleAddr $db_env -d oracle-erc20-native yarn watcher:collected-signatures
26+
docker-compose $1 run $oracleAddr $db_env -d oracle-erc20-native yarn watcher:affirmation-request
27+
docker-compose $1 run $oracleAddr $db_env -d oracle-erc20-native yarn watcher:transfer
2828
fi
2929
if [[ -z "$MODE" || "$MODE" == amb ]]; then
30-
docker-compose $1 run $2 $db_env -d oracle-amb yarn watcher:signature-request
31-
docker-compose $1 run $2 $db_env -d oracle-amb yarn watcher:collected-signatures
32-
docker-compose $1 run $2 $db_env -d oracle-amb yarn watcher:affirmation-request
33-
docker-compose $1 run $2 $db_env -d oracle-amb yarn watcher:information-request
30+
docker-compose $1 run $oraclePK $db_env -d oracle-amb yarn watcher:signature-request
31+
docker-compose $1 run $oracleAddr $db_env -d oracle-amb yarn watcher:collected-signatures
32+
docker-compose $1 run $oracleAddr $db_env -d oracle-amb yarn watcher:affirmation-request
33+
docker-compose $1 run $oracleAddr $db_env -d oracle-amb yarn watcher:information-request
3434
fi
3535

36-
docker-compose $1 run $2 $db_env -d oracle-amb yarn sender:home
37-
docker-compose $1 run $2 $db_env -d oracle-amb yarn sender:foreign
38-
docker-compose $1 run $2 $db_env -d oracle-amb yarn manager:shutdown
36+
docker-compose $1 run $oraclePK $db_env -d oracle-amb yarn sender:home
37+
docker-compose $1 run $oraclePK $db_env -d oracle-amb yarn sender:foreign
38+
docker-compose $1 run $oracleAddr $db_env -d oracle-amb yarn manager:shutdown
3939
}
4040

4141
while [ "$1" != "" ]; do
4242
if [ "$1" == "oracle" ]; then
43-
startValidator "-p validator1" "" redis rabbit
43+
oracleAddr="-e ORACLE_VALIDATOR_ADDRESS=0xaaB52d66283F7A1D5978bcFcB55721ACB467384b"
44+
oraclePK="-e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=8e829f695aed89a154550f30262f1529582cc49dc30eff74a6b491359e0230f9"
45+
startValidator "-p validator1" redis rabbit
4446
fi
4547

4648
if [ "$1" == "oracle-validator-2" ]; then
47-
oracle2Values="-e ORACLE_VALIDATOR_ADDRESS=0xdCC784657C78054aa61FbcFFd2605F32374816A4 -e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=5a5c3645d0f04e9eb4f27f94ed4c244a225587405b8838e7456f7781ce3a9513"
48-
startValidator "-p validator2" "$oracle2Values" redis2 rabbit2
49+
oracleAddr="-e ORACLE_VALIDATOR_ADDRESS=0xdCC784657C78054aa61FbcFFd2605F32374816A4"
50+
oraclePK="-e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=5a5c3645d0f04e9eb4f27f94ed4c244a225587405b8838e7456f7781ce3a9513"
51+
startValidator "-p validator2" redis2 rabbit2
4952
fi
5053

5154
if [ "$1" == "oracle-validator-3" ]; then
52-
oracle3Values="-e ORACLE_VALIDATOR_ADDRESS=0xDcef88209a20D52165230104B245803C3269454d -e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=f877f62a1c19f852cff1d29f0fb1ecac18821c0080d4cc0520c60c098293dca1"
53-
startValidator "-p validator3" "$oracle3Values" redis3 rabbit3
55+
oracleAddr="-e ORACLE_VALIDATOR_ADDRESS=0xDcef88209a20D52165230104B245803C3269454d"
56+
oraclePK="-e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=f877f62a1c19f852cff1d29f0fb1ecac18821c0080d4cc0520c60c098293dca1"
57+
startValidator "-p validator3" redis3 rabbit3
5458
fi
5559

5660
if [ "$1" == "alm" ]; then
@@ -84,33 +88,38 @@ while [ "$1" != "" ]; do
8488
if [ "$1" == "alm-e2e" ]; then
8589
MODE=amb
8690

87-
startValidator "-p validator1" "" redis rabbit
91+
oracleAddr="-e ORACLE_VALIDATOR_ADDRESS=0xaaB52d66283F7A1D5978bcFcB55721ACB467384b"
92+
oraclePK="-e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=8e829f695aed89a154550f30262f1529582cc49dc30eff74a6b491359e0230f9"
93+
startValidator "-p validator1" redis rabbit
8894

89-
oracle2Values="-e ORACLE_VALIDATOR_ADDRESS=0xdCC784657C78054aa61FbcFFd2605F32374816A4 -e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=5a5c3645d0f04e9eb4f27f94ed4c244a225587405b8838e7456f7781ce3a9513"
90-
startValidator "-p validator2" "$oracle2Values" redis2 rabbit2
95+
oracleAddr="-e ORACLE_VALIDATOR_ADDRESS=0xdCC784657C78054aa61FbcFFd2605F32374816A4"
96+
oraclePK="-e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=5a5c3645d0f04e9eb4f27f94ed4c244a225587405b8838e7456f7781ce3a9513"
97+
startValidator "-p validator2" redis2 rabbit2
9198

92-
oracle3Values="-e ORACLE_VALIDATOR_ADDRESS=0xDcef88209a20D52165230104B245803C3269454d -e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=f877f62a1c19f852cff1d29f0fb1ecac18821c0080d4cc0520c60c098293dca1"
93-
startValidator "-p validator3" "$oracle3Values" redis3 rabbit3
99+
oracleAddr="-e ORACLE_VALIDATOR_ADDRESS=0xDcef88209a20D52165230104B245803C3269454d"
100+
oraclePK="-e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=f877f62a1c19f852cff1d29f0fb1ecac18821c0080d4cc0520c60c098293dca1"
101+
startValidator "-p validator3" redis3 rabbit3
94102
fi
95103

96104
if [ "$1" == "generate-amb-tx" ]; then
97105
docker-compose run e2e yarn workspace oracle-e2e run generate-amb-tx
98106
fi
99107

100108
if [ "$1" == "manual-amb-relay" ]; then
109+
oraclePK="-e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=8e829f695aed89a154550f30262f1529582cc49dc30eff74a6b491359e0230f9"
101110
env="-e COMMON_HOME_BRIDGE_ADDRESS=0x5A42E119990c3F3A80Fea20aAF4c3Ff4DB240Cc9 -e COMMON_FOREIGN_BRIDGE_ADDRESS=0x897527391ad3837604973d78D3514f44c36AB9FC"
102111
# these tx hash are hardcoded and need to be updated manually
103112
# once e2e environment setup process is changed
104113
echo '0xea625a823bc5018dc3a4efe349f623e5ebb8c987b55f44d50d6556f42af9a400' > txHashes.txt
105-
docker-compose -p validator1 run -v $(pwd)/txHashes.txt:/tmp/txHashes.txt $env oracle-amb yarn confirm:affirmation-request \
114+
docker-compose -p validator1 run -v $(pwd)/txHashes.txt:/tmp/txHashes.txt $oraclePK $env oracle-amb yarn confirm:affirmation-request \
106115
/tmp/txHashes.txt \
107116
0x031c42e44485002c9215a5b1b75e9516131485ce29884a58765bf7a0038538f9
108-
docker-compose -p validator1 run $env oracle-amb yarn confirm:signature-request \
117+
docker-compose -p validator1 run $oraclePK $env oracle-amb yarn confirm:signature-request \
109118
0x1506a18af91afe732167ccbc178b55fc2547da4a814d13c015b6f496cf171754 | tee .tmp.log
110119
tx_hash=$(cat .tmp.log | grep generatedTransactionHash | jq -r .generatedTransactionHash)
111120
rm .tmp.log
112121
rm txHashes.txt
113-
docker-compose -p validator1 run $env oracle-amb yarn confirm:collected-signatures $tx_hash
122+
docker-compose -p validator1 run $oraclePK $env oracle-amb yarn confirm:collected-signatures $tx_hash
114123
fi
115124

116125
shift # Shift all the parameters down by one

oracle-e2e/test/ercToNative.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ describe('erc to native', () => {
100100

101101
const transferValue = homeWeb3.utils.toWei('0.05')
102102

103+
// transfer that should not be processed by the filter
104+
await erc20Token.methods.transfer(secondUser.address, transferValue).send({ from: user.address, gas: 100000 })
103105
// send tokens to foreign bridge
104106
await erc20Token.methods
105107
.transfer(COMMON_FOREIGN_BRIDGE_ADDRESS, transferValue)

oracle/config/base.config.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ const {
88
FOREIGN_AMB_ABI
99
} = require('../../commons')
1010
const { web3Home, web3Foreign } = require('../src/services/web3')
11-
const { privateKeyToAddress } = require('../src/utils/utils')
11+
const { add0xPrefix, privateKeyToAddress } = require('../src/utils/utils')
12+
const { EXIT_CODES } = require('../src/utils/constants')
1213

1314
const {
1415
ORACLE_BRIDGE_MODE,
@@ -79,9 +80,22 @@ const foreignConfig = {
7980
const maxProcessingTime =
8081
parseInt(ORACLE_MAX_PROCESSING_TIME, 10) || 4 * Math.max(homeConfig.pollingInterval, foreignConfig.pollingInterval)
8182

83+
let validatorPrivateKey
84+
if (ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY) {
85+
validatorPrivateKey = add0xPrefix(ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY)
86+
const derived = privateKeyToAddress(validatorPrivateKey)
87+
if (ORACLE_VALIDATOR_ADDRESS && derived.toLowerCase() !== ORACLE_VALIDATOR_ADDRESS.toLowerCase()) {
88+
console.error(
89+
`Derived address from private key - ${derived} is different from ORACLE_VALIDATOR_ADDRESS=${ORACLE_VALIDATOR_ADDRESS}`
90+
)
91+
process.exit(EXIT_CODES.INCOMPATIBILITY)
92+
}
93+
}
94+
8295
module.exports = {
8396
eventFilter: {},
84-
validatorAddress: ORACLE_VALIDATOR_ADDRESS || privateKeyToAddress(ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY),
97+
validatorPrivateKey,
98+
validatorAddress: ORACLE_VALIDATOR_ADDRESS || privateKeyToAddress(validatorPrivateKey),
8599
maxProcessingTime,
86100
shutdownKey: 'oracle-shutdown',
87101
home: homeConfig,

oracle/config/transfer-watcher.config.js

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,22 @@
11
const baseConfig = require('./base.config')
2-
const { ERC20_ABI } = require('../../commons')
2+
const { ERC20_ABI, ZERO_ADDRESS } = require('../../commons')
33
const { EXIT_CODES } = require('../src/utils/constants')
44

5-
const initialChecksJson = process.argv[3]
6-
7-
if (!initialChecksJson) {
8-
throw new Error('initial check parameter was not provided.')
9-
}
10-
11-
let initialChecks
12-
try {
13-
initialChecks = JSON.parse(initialChecksJson)
14-
} catch (e) {
15-
throw new Error('Error on decoding values from initial checks.')
16-
}
17-
185
const id = `${baseConfig.id}-transfer`
196

207
if (baseConfig.id !== 'erc-native') {
218
console.error(`Transfer watcher not required for bridge mode ${process.env.ORACLE_BRIDGE_MODE}`)
229
process.exit(EXIT_CODES.WATCHER_NOT_REQUIRED)
2310
}
2411

12+
// exact address of the token contract is set in the watcher.js checkConditions() function
13+
baseConfig.foreign.eventContract = new baseConfig.foreign.web3.eth.Contract(ERC20_ABI, ZERO_ADDRESS)
14+
2515
module.exports = {
2616
...baseConfig,
27-
main: {
28-
...baseConfig.foreign,
29-
eventContract: new baseConfig.foreign.web3.eth.Contract(ERC20_ABI, initialChecks.bridgeableTokenAddress)
30-
},
17+
main: baseConfig.foreign,
3118
event: 'Transfer',
32-
eventFilter: { to: process.env.COMMON_FOREIGN_BRIDGE_ADDRESS },
19+
eventFilter: { to: baseConfig.foreign.bridgeAddress },
3320
sender: 'home',
3421
queue: 'home-prioritized',
3522
name: `watcher-${id}`,

oracle/scripts/initialChecks.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

oracle/scripts/start-worker.sh

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@ CONFIG="${2}.config.js"
1010
LOG="${LOGS_DIR}${2}.txt"
1111
TX_HASH=${@:3}
1212

13-
CHECKS=$(node scripts/initialChecks.js)
14-
1513
if [ "${NODE_ENV}" = "production" ]; then
16-
exec node "${WORKER}" "${CONFIG}" "$CHECKS" $TX_HASH
14+
exec node "${WORKER}" "${CONFIG}" $TX_HASH
1715
else
18-
node "${WORKER}" "${CONFIG}" "$CHECKS" $TX_HASH | tee -a "${LOG}" | pino-pretty
16+
node "${WORKER}" "${CONFIG}" $TX_HASH | tee -a "${LOG}" | pino-pretty
1917
fi

oracle/src/confirmRelay.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ const { sendTx } = require('./tx/sendTx')
99
const { checkHTTPS, watchdog, syncForEach, addExtraGas } = require('./utils/utils')
1010
const { EXIT_CODES, EXTRA_GAS_PERCENTAGE, MAX_GAS_LIMIT } = require('./utils/constants')
1111

12-
const { ORACLE_VALIDATOR_ADDRESS, ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY, ORACLE_ALLOW_HTTP_FOR_RPC } = process.env
12+
const { ORACLE_ALLOW_HTTP_FOR_RPC } = process.env
1313

14-
if (process.argv.length < 5) {
14+
if (process.argv.length < 4) {
1515
logger.error('Please check the number of arguments, transaction hash is not present')
1616
process.exit(EXIT_CODES.GENERAL_ERROR)
1717
}
@@ -29,7 +29,7 @@ function readTxHashes(filePath) {
2929
.filter(isTxHash)
3030
}
3131

32-
const txHashesArgs = process.argv.slice(4)
32+
const txHashesArgs = process.argv.slice(3)
3333
const rawTxHashes = txHashesArgs.filter(isTxHash)
3434
const txHashesFiles = txHashesArgs.filter(path => fs.existsSync(path)).flatMap(readTxHashes)
3535
const txHashes = [...rawTxHashes, ...txHashesFiles]
@@ -152,7 +152,7 @@ async function sendJobTx(jobs) {
152152
const { web3 } = config.sender === 'foreign' ? config.foreign : config.home
153153

154154
const chainId = await getChainId(web3)
155-
let nonce = await getNonce(web3, ORACLE_VALIDATOR_ADDRESS)
155+
let nonce = await getNonce(web3, config.validatorAddress)
156156

157157
await syncForEach(jobs, async job => {
158158
let gasLimit
@@ -170,7 +170,7 @@ async function sendJobTx(jobs) {
170170
gasPrice,
171171
amount: '0',
172172
gasLimit,
173-
privateKey: ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY,
173+
privateKey: config.validatorPrivateKey,
174174
to: job.to,
175175
chainId,
176176
web3
@@ -189,7 +189,7 @@ async function sendJobTx(jobs) {
189189
)
190190

191191
if (e.message.toLowerCase().includes('insufficient funds')) {
192-
const currentBalance = await web3.eth.getBalance(ORACLE_VALIDATOR_ADDRESS)
192+
const currentBalance = await web3.eth.getBalance(config.validatorAddress)
193193
const minimumBalance = gasLimit.multipliedBy(gasPrice)
194194
logger.error(
195195
`Insufficient funds: ${currentBalance}. Stop processing messages until the balance is at least ${minimumBalance}.`

0 commit comments

Comments
 (0)