ForeignGateway

Git Source

Inherits: IForeignGateway

State Variables

DEFAULT_NB_OF_JURORS

uint256 public constant DEFAULT_NB_OF_JURORS = 3;

localDisputeID

uint256 internal localDisputeID = 1;

feeForJuror

mapping(uint96 => uint256) public feeForJuror;

governor

address public governor;

veaOutbox

address public veaOutbox;

homeChainID

uint256 public immutable override homeChainID;

homeGateway

address public override homeGateway;

deprecatedVeaOutbox

address public deprecatedVeaOutbox;

deprecatedVeaOutboxExpiration

uint256 public deprecatedVeaOutboxExpiration;

disputeHashtoDisputeData

mapping(bytes32 => DisputeData) public disputeHashtoDisputeData;

Functions

onlyFromVea

modifier onlyFromVea(address _messageSender);

onlyByGovernor

modifier onlyByGovernor();

constructor

constructor(address _governor, address _veaOutbox, uint256 _homeChainID, address _homeGateway);

changeGovernor

Changes the governor.

function changeGovernor(address _governor) external;

Parameters

NameTypeDescription
_governoraddressThe address of the new governor.

changeVea

Changes the outbox.

function changeVea(address _veaOutbox, uint256 _gracePeriod) external onlyByGovernor;

Parameters

NameTypeDescription
_veaOutboxaddressThe address of the new outbox.
_gracePerioduint256The duration to accept messages from the deprecated bridge (if at all).

changeHomeGateway

Changes the home gateway.

function changeHomeGateway(address _homeGateway) external;

Parameters

NameTypeDescription
_homeGatewayaddressThe address of the new home gateway.

changeCourtJurorFee

Changes the feeForJuror property value of a specified court.

function changeCourtJurorFee(uint96 _courtID, uint256 _feeForJuror) external onlyByGovernor;

Parameters

NameTypeDescription
_courtIDuint96The ID of the court on the v2 arbitrator. Not to be confused with the courtID on KlerosLiquid.
_feeForJuroruint256The new value for the feeForJuror property value.

createDispute

Create a dispute and pay for the fees in the native currency, typically ETH. Must be called by the arbitrable contract. Must pay at least arbitrationCost(_extraData).

function createDispute(uint256 _choices, bytes calldata _extraData)
    external
    payable
    override
    returns (uint256 disputeID);

Parameters

NameTypeDescription
_choicesuint256
_extraDatabytesAdditional info about the dispute. We use it to pass the ID of the dispute's court (first 32 bytes), the minimum number of jurors required (next 32 bytes) and the ID of the specific dispute kit (last 32 bytes).

Returns

NameTypeDescription
disputeIDuint256The identifier of the dispute created.

createDispute

Create a dispute and pay for the fees in the native currency, typically ETH. Must be called by the arbitrable contract. Must pay at least arbitrationCost(_extraData).

function createDispute(uint256, bytes calldata, IERC20, uint256) external pure override returns (uint256);

Parameters

NameTypeDescription
<none>uint256
<none>bytes
<none>IERC20
<none>uint256

Returns

NameTypeDescription
<none>uint256disputeID The identifier of the dispute created.

arbitrationCost

Compute the cost of arbitration denominated in the native currency, typically ETH. It is recommended not to increase it often, as it can be highly time and gas consuming for the arbitrated contracts to cope with fee augmentation.

function arbitrationCost(bytes calldata _extraData) public view override returns (uint256 cost);

Parameters

NameTypeDescription
_extraDatabytesAdditional info about the dispute. We use it to pass the ID of the dispute's court (first 32 bytes), the minimum number of jurors required (next 32 bytes) and the ID of the specific dispute kit (last 32 bytes).

Returns

NameTypeDescription
costuint256The arbitration cost in ETH.

arbitrationCost

Compute the cost of arbitration denominated in the native currency, typically ETH. It is recommended not to increase it often, as it can be highly time and gas consuming for the arbitrated contracts to cope with fee augmentation.

function arbitrationCost(bytes calldata, IERC20) public pure override returns (uint256);

Parameters

NameTypeDescription
<none>bytes
<none>IERC20

Returns

NameTypeDescription
<none>uint256cost The arbitration cost in ETH.

relayRule

Relay the rule call from the home gateway to the arbitrable.

function relayRule(address _messageSender, bytes32 _disputeHash, uint256 _ruling, address _relayer)
    external
    override
    onlyFromVea(_messageSender);

withdrawFees

Reimburses the dispute fees to the relayer who paid for these fees on the home chain.

function withdrawFees(bytes32 _disputeHash) external override;

Parameters

NameTypeDescription
_disputeHashbytes32The dispute hash for which to withdraw the fees.

disputeHashToForeignID

Looks up the local foreign disputeID for a disputeHash

function disputeHashToForeignID(bytes32 _disputeHash) external view override returns (uint256);

Parameters

NameTypeDescription
_disputeHashbytes32dispute hash

senderGateway

function senderGateway() external view override returns (address);

currentRuling

function currentRuling(uint256) public pure returns (uint256, bool, bool);

extraDataToCourtIDMinJurors

function extraDataToCourtIDMinJurors(bytes memory _extraData)
    internal
    view
    returns (uint96 courtID, uint256 minJurors);

Events

ArbitrationCostModified

event ArbitrationCostModified(uint96 indexed _courtID, uint256 _feeForJuror);

Structs

DisputeData

struct DisputeData {
    uint248 id;
    bool ruled;
    address arbitrable;
    uint256 paid;
    address relayer;
}