Proving
After Relaying successfully and observing that the relay transaction has finalized on the destination chain, prove transactions are executed by authorized Provers (who are typically also the Relayer)
Through these transactions, the Prover is asserting that the indicated relayer
completed a relay and can rightfully claim the escrowed bridge funds as a reimbursement.
Each prove transaction sets the proof data for the bridge and initiates a Dispute Period.
Function Options
There are two versions of the prove function in FastBridgeV2. Relayers can use whichever best suits their implementation.
function proveV2(bytes32 transactionId, bytes32 destTxHash, address relayer) external;
This version allows an arbitrary
relayer
address to be supplied
function prove(bytes memory request, bytes32 destTxHash) external;
This version will auto-assign the executing EOA (
msg.sender
) as therelayer
Regardless of the method used, a BridgeProofProvided event will be emitted.
Note that during the Dispute Period, the relayer
indicated on this function will be required to match the relayer
on the actual relay.
prove should not be called until the Relayer is confident that the relay transaction is finalized and will not be reorganized.
Multicalling
As of FastBridgeV2, it is possible to batch many prove transactions together with Multicall
Next steps
Following the prove transaction, a Dispute Period begins - after which the Relayer may proceed to Claiming
Although disputes are unlikely, monitoring should occur during the Dispute Period to verify there are no issues.