ForeignGateway
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
Name | Type | Description |
---|---|---|
_governor | address | The address of the new governor. |
changeVea
Changes the outbox.
function changeVea(address _veaOutbox, uint256 _gracePeriod) external onlyByGovernor;
Parameters
Name | Type | Description |
---|---|---|
_veaOutbox | address | The address of the new outbox. |
_gracePeriod | uint256 | The duration to accept messages from the deprecated bridge (if at all). |
changeHomeGateway
Changes the home gateway.
function changeHomeGateway(address _homeGateway) external;
Parameters
Name | Type | Description |
---|---|---|
_homeGateway | address | The 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
Name | Type | Description |
---|---|---|
_courtID | uint96 | The ID of the court. |
_feeForJuror | uint256 | The 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
Name | Type | Description |
---|---|---|
_choices | uint256 | Amount of choices the arbitrator can make in this dispute. |
_extraData | bytes | Can be used to give additional info on the dispute to be created. |
Returns
Name | Type | Description |
---|---|---|
disputeID | uint256 | ID 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
Name | Type | Description |
---|---|---|
_extraData | bytes | Can be used to give additional info on the dispute to be created. |
Returns
Name | Type | Description |
---|---|---|
cost | uint256 | Required 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
Name | Type | Description |
---|---|---|
_disputeHash | bytes32 | The 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
Name | Type | Description |
---|---|---|
_disputeHash | bytes32 | dispute hash |
senderGateway
function senderGateway() external view returns (address);
feeToken
function feeToken() external view returns (IERC20);
Returns
Name | Type | Description |
---|---|---|
<none> | IERC20 | The 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;
}