This implements aggregation of the evidence from oracle operators. Once they all agree it forwards.
Some corner cases are deferred for our scheduled error handling work.
A testing change was to make the contract's public makeTestPushInvitation handle evidence directly instead of putting it through the feed. The feed has its own tests and the purpose of the test invitation is to let a client trigger an advance, not test the feed. A consequence of this is that the existing contract test started advancing, which doesn't work. So I marked the test skip until it does.
Security Considerations
Decentralizes truth of CCTP transaction evidence, split among oracle operators. It waits until all operators have sent evidence of the same transaction. There is more verification to do. (See TODO items)
Scaling Considerations
Small number of new Ecos (one per oracle operator, probably three). The pending transactions are stored in a mapstore until they're resolved. Transactions that are never matched by all operators don't ever get cleaned up. It doesn't keep track of transactions it has published, so this could easily happen if one operator double-reports and the others don't. (If they all double-report, the transaction will repeat… hmmm this needs more work)
Documentation Considerations
To follow up with oracle operators
Testing Considerations
CI
Upgrade Considerations
Not yet deployed but all the exos are meant be upgraded
closes: #10457
Description
This implements aggregation of the evidence from oracle operators. Once they all agree it forwards.
Some corner cases are deferred for our scheduled error handling work.
A testing change was to make the contract's public
makeTestPushInvitation
handle evidence directly instead of putting it through the feed. The feed has its own tests and the purpose of the test invitation is to let a client trigger an advance, not test the feed. A consequence of this is that the existing contract test started advancing, which doesn't work. So I marked the test skip until it does.Security Considerations
Decentralizes truth of CCTP transaction evidence, split among oracle operators. It waits until all operators have sent evidence of the same transaction. There is more verification to do. (See TODO items)
Scaling Considerations
Small number of new Ecos (one per oracle operator, probably three). The pending transactions are stored in a mapstore until they're resolved. Transactions that are never matched by all operators don't ever get cleaned up. It doesn't keep track of transactions it has published, so this could easily happen if one operator double-reports and the others don't. (If they all double-report, the transaction will repeat… hmmm this needs more work)
Documentation Considerations
To follow up with oracle operators
Testing Considerations
CI
Upgrade Considerations
Not yet deployed but all the exos are meant be upgraded