Skip to main content

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 the relayer

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.

warning

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.