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.
_feeForJuroruint256The new value for the feeForJuror property value.

createDispute

Create a dispute. 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
_choicesuint256Amount of choices the arbitrator can make in this dispute.
_extraDatabytesCan be used to give additional info on the dispute to be created.

Returns

NameTypeDescription
disputeIDuint256ID of the dispute created.

createDisputeERC20

function createDisputeERC20(uint256, bytes calldata, uint256) external override returns (uint256);

arbitrationCost

Compute the cost of arbitration. 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
_extraDatabytesCan be used to give additional info on the dispute to be created.

Returns

NameTypeDescription
costuint256Required cost of arbitration.

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 returns (address);

feeToken

function feeToken() external view returns (IERC20);

Returns

NameTypeDescription
<none>IERC20The ERC20 token used for the fees.

extraDataToCourtIDMinJurors

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

Events

OutgoingDispute

event OutgoingDispute(
    bytes32 disputeHash,
    bytes32 blockhash,
    uint256 localDisputeID,
    uint256 _choices,
    bytes _extraData,
    address arbitrable
);

ArbitrationCostModified

event ArbitrationCostModified(uint96 indexed _courtID, uint256 _feeForJuror);

Structs

DisputeData

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