ForeignGatewayOnGnosis

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;

weth

IERC20 public immutable weth;

Functions

onlyFromVea

modifier onlyFromVea(address _messageSender);

onlyByGovernor

modifier onlyByGovernor();

constructor

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

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, bytes calldata) external payable override returns (uint256 disputeID);

Parameters

NameTypeDescription
<none>uint256
<none>bytes

Returns

NameTypeDescription
disputeIDuint256ID of the dispute created.

createDisputeERC20

function createDisputeERC20(uint256 _choices, bytes calldata _extraData, uint256 _amount)
    external
    override
    returns (uint256 disputeID);

arbitrationCost

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

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;
}