Disputing Root Bundles
About
Across requires proposals and disputes to be accompanied by a bond. This bond is returned if the proposal or dispute is correct, and is sacrificed if it is found to be incorrect. This protects against attempts to incorrectly move funds, as well as spam and other denial of service attempts.
The Across Bond Token (ABT) is the bond collateral required by the HubPool contract. This is a WETH-like contract that is minted in return for depositing Ether, and can be redeemed for the underlying Ether at any time. ABT implements custom ERC20 transferFrom() logic in order to limit the addresses that are able to make HubPool root bundle proposals.
Manual Dispute Procedure
Check the required bond token and amount (nominally 0.45 ABT) by calling bondToken() and bondAmount() on the HubPool.
Mint the bond token as necessary by caling deposit() on the BondToken contract.
Ensure that the HubPool has permission to pull the bond during the dispute. Increase the allowance as necessary by calling appprove() on the BondToken contract. The address to approve is 0xc186fa914353c44b2e33ebe05f21846f1048beda.
Call disputeRootBundle() on the HubPool.
Automated Dispute Procedure
The Across relayer-v2 repository contains a utility script that automates each of the above steps. Prerequisites are:
The relayer-v2 package must be installed.
The mnemonic for an EOA must be set in the relayer-v2
.env
file.The configured EOA must be funded with at least 0.45 ABT or ETH (1 ABT == 1 ETH), plus additional ETH for gas to handle the necessary deposit, approval and/or dispute transactions.
It is sufficient for the entire amount to be held in ETH, since the dispute script automates the steps of minting ABT and approving the HubPool to spend it.
The actual amounts are subject to change based on the prevailing gas price at the time of the dispute, and the configured bond amount.
Installation
Execution
Last updated