Compare commits
2 Commits
dependabot
...
master
Author | SHA1 | Date | |
---|---|---|---|
ce515a8635 | |||
|
961b12b9f3 |
@ -19,7 +19,7 @@ Sub-repositories maintained within this monorepo are listed below.
|
|||||||
|
|
||||||
| Sub-repository | Description |
|
| Sub-repository | Description |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| [Oracle](oracle/README.md) | Oracle responsible for listening to bridge related events and authorizing asset transfers. |
|
| [Oracle](oracle/README.md) | Responsible for listening to bridge related events and authorizing asset transfers. |
|
||||||
| [Monitor](monitor/README.md) | Tool for checking balances and unprocessed events in bridged networks. |
|
| [Monitor](monitor/README.md) | Tool for checking balances and unprocessed events in bridged networks. |
|
||||||
| [Deployment](deployment/README.md) | Ansible playbooks for deploying cross-chain bridges. |
|
| [Deployment](deployment/README.md) | Ansible playbooks for deploying cross-chain bridges. |
|
||||||
| [Oracle-E2E](oracle-e2e/README.md) | End to end tests for the Oracle |
|
| [Oracle-E2E](oracle-e2e/README.md) | End to end tests for the Oracle |
|
||||||
|
@ -22,6 +22,16 @@ export const getRequiredBlockConfirmations = async (
|
|||||||
web3: Web3 | null = null,
|
web3: Web3 | null = null,
|
||||||
api: string = ''
|
api: string = ''
|
||||||
) => {
|
) => {
|
||||||
|
let blockConfirmations
|
||||||
|
|
||||||
|
try {
|
||||||
|
blockConfirmations = await contract.methods.requiredBlockConfirmations().call()
|
||||||
|
} catch {}
|
||||||
|
|
||||||
|
if (blockConfirmations) {
|
||||||
|
return parseInt(blockConfirmations)
|
||||||
|
}
|
||||||
|
|
||||||
const eventsFromSnapshot = snapshotProvider.requiredBlockConfirmationEvents(blockNumber)
|
const eventsFromSnapshot = snapshotProvider.requiredBlockConfirmationEvents(blockNumber)
|
||||||
const snapshotBlockNumber = snapshotProvider.snapshotBlockNumber()
|
const snapshotBlockNumber = snapshotProvider.snapshotBlockNumber()
|
||||||
|
|
||||||
@ -35,16 +45,10 @@ export const getRequiredBlockConfirmations = async (
|
|||||||
|
|
||||||
const events = [...eventsFromSnapshot, ...contractEvents]
|
const events = [...eventsFromSnapshot, ...contractEvents]
|
||||||
|
|
||||||
let blockConfirmations
|
|
||||||
if (events.length > 0) {
|
|
||||||
// Use the value from last event before the transaction
|
// Use the value from last event before the transaction
|
||||||
const event = events[events.length - 1]
|
const event = events[events.length - 1]
|
||||||
blockConfirmations = event.returnValues.requiredBlockConfirmations
|
blockConfirmations = event.returnValues.requiredBlockConfirmations
|
||||||
} else {
|
|
||||||
// This is a special case where RequiredBlockConfirmationChanged was not emitted during initialization in early versions of AMB
|
|
||||||
// of Sokol - Kovan. In this case the current value is used.
|
|
||||||
blockConfirmations = await contract.methods.requiredBlockConfirmations().call()
|
|
||||||
}
|
|
||||||
return parseInt(blockConfirmations)
|
return parseInt(blockConfirmations)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,6 +61,16 @@ export const getRequiredSignatures = async (
|
|||||||
web3: Web3 | null = null,
|
web3: Web3 | null = null,
|
||||||
api: string = ''
|
api: string = ''
|
||||||
) => {
|
) => {
|
||||||
|
let requiredSignatures
|
||||||
|
|
||||||
|
try {
|
||||||
|
requiredSignatures = await contract.methods.requiredSignatures().call()
|
||||||
|
} catch {}
|
||||||
|
|
||||||
|
if (requiredSignatures) {
|
||||||
|
return parseInt(requiredSignatures)
|
||||||
|
}
|
||||||
|
|
||||||
if (blockNumber === 'latest') {
|
if (blockNumber === 'latest') {
|
||||||
return contract.methods.requiredSignatures().call()
|
return contract.methods.requiredSignatures().call()
|
||||||
}
|
}
|
||||||
@ -76,7 +90,7 @@ export const getRequiredSignatures = async (
|
|||||||
|
|
||||||
// Use the value form last event before the transaction
|
// Use the value form last event before the transaction
|
||||||
const event = events[events.length - 1]
|
const event = events[events.length - 1]
|
||||||
const { requiredSignatures } = event.returnValues
|
;({ requiredSignatures } = event.returnValues)
|
||||||
return parseInt(requiredSignatures)
|
return parseInt(requiredSignatures)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,9 +101,13 @@ export const getValidatorList = async (
|
|||||||
web3: Web3 | null = null,
|
web3: Web3 | null = null,
|
||||||
api: string = ''
|
api: string = ''
|
||||||
) => {
|
) => {
|
||||||
if (blockNumber === 'latest') {
|
try {
|
||||||
return contract.methods.validatorList().call()
|
const currentList = await contract.methods.validatorList().call()
|
||||||
|
|
||||||
|
if (currentList) {
|
||||||
|
return currentList
|
||||||
}
|
}
|
||||||
|
} catch {}
|
||||||
|
|
||||||
const addedEventsFromSnapshot = snapshotProvider.validatorAddedEvents(blockNumber)
|
const addedEventsFromSnapshot = snapshotProvider.validatorAddedEvents(blockNumber)
|
||||||
const removedEventsFromSnapshot = snapshotProvider.validatorRemovedEvents(blockNumber)
|
const removedEventsFromSnapshot = snapshotProvider.validatorRemovedEvents(blockNumber)
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
# POA TokenBridge / Oracle
|
# POA TokenBridge / Oracle
|
||||||
Oracle responsible for listening to bridge related events and authorizing asset transfers.
|
An oracle responsible for listening to bridge related events and authorizing asset transfers.
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
Please refer to the [POA TokenBridge](../README.md) overview first of all.
|
Please refer to the [POA TokenBridge](../README.md) overview first of all.
|
||||||
|
|
||||||
The Oracle is deployed on specified validator nodes (only nodes whose private keys correspond to addresses specified in the smart contracts) in the network. It connects to two chains via a Remote Procedure Call (RPC) and is responsible for:
|
The oracle is deployed on specified validator nodes (only nodes whose private keys correspond to addresses specified in the smart contracts) in the network. It connects to two chains via a Remote Procedure Call (RPC) and is responsible for:
|
||||||
- listening to events related to bridge contracts
|
- listening to events related to bridge contracts
|
||||||
- sending transactions to authorize asset transfers
|
- sending transactions to authorize asset transfers
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ For more information on the Redis/RabbitMQ requirements, see [#90](/../../issues
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Install and configure the Oracle
|
## Install and configure the oracle
|
||||||
|
|
||||||
1. [Initialize](../README.md#initializing-the-monorepository) the monorepository.
|
1. [Initialize](../README.md#initializing-the-monorepository) the monorepository.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user