IMainchainGateway

Git Source

This is the interface for the crossbell bridge manchain gateway contract. You'll find all the events and external functions.

Functions

initialize

Initializes the MainchainGateway. Note that the thresholds contains:

  • thresholds[1]:
function initialize(
    address validator,
    address admin,
    address[] calldata mainchainTokens,
    uint256[] calldata dailyWithdrawalMaxQuota,
    address[] calldata crossbellTokens,
    uint8[] calldata crossbellTokenDecimals
) external;

Parameters

NameTypeDescription
validatoraddressAddress of validator contract.
adminaddressAddress of gateway admin.
mainchainTokensaddress[]Addresses of mainchain tokens.
dailyWithdrawalMaxQuotauint256[]The daily withdrawal max quotas for mainchain tokens.
crossbellTokensaddress[]Addresses of crossbell tokens.
crossbellTokenDecimalsuint8[]Decimals of crossbell tokens.

pause

Pauses interaction with the gateway contract. Requirements:

  • The caller must have the ADMIN_ROLE.
function pause() external;

unpause

Resumes interaction with the gateway contract. Requirements:

  • The caller must have the ADMIN_ROLE.
function unpause() external;

mapTokens

Maps Crossbell tokens to mainchain. Emits the TokenMapped event. Requirements:

  • The caller must have the ADMIN_ROLE.
function mapTokens(
    address[] calldata mainchainTokens,
    address[] calldata crossbellTokens,
    uint8[] calldata crossbellTokenDecimals
) external;

Parameters

NameTypeDescription
mainchainTokensaddress[]Addresses of mainchain tokens.
crossbellTokensaddress[]Addresses of crossbell tokens.
crossbellTokenDecimalsuint8[]Decimals of crossbell tokens.

requestDeposit

Requests deposit to crossbell chain. Emits the RequestDeposit event.

function requestDeposit(address recipient, address token, uint256 amount) external returns (uint256 depositId);

Parameters

NameTypeDescription
recipientaddressAddress to receive deposit on crossbell chain.
tokenaddressAddress of token to deposit from mainchain network.
amountuint256Amount of token to deposit from mainchain network.

Returns

NameTypeDescription
depositIduint256Deposit id.

withdraw

Withdraws based on the validator signatures. Emits the Withdrew event. Requirements:

  • The signatures should be sorted by signing addresses of validators in ascending order.
function withdraw(
    uint256 chainId,
    uint256 withdrawalId,
    address recipient,
    address token,
    uint256 amount,
    uint256 fee,
    DataTypes.Signature[] calldata signatures
) external;

Parameters

NameTypeDescription
chainIduint256The chain ID of mainchain network.
withdrawalIduint256Withdrawal ID from crossbell chain.
recipientaddressAddress to receive withdrawal on mainchain chain.
tokenaddressAddress of token to withdraw.
amountuint256Amount of token to withdraw.
feeuint256The fee amount to pay for the withdrawal tx sender. This is subtracted from the amount.
signaturesDataTypes.Signature[]The list of signatures sorted by signing addresses of validators in ascending order.

setDailyWithdrawalMaxQuotas

Sets daily max quotas for the withdrawals. Emits the DailyWithdrawalMaxQuotasUpdated event. Requirements:

  • The caller must have the ADMIN_ROLE.
  • The arrays have the same length.
function setDailyWithdrawalMaxQuotas(address[] calldata tokens, uint256[] calldata quotas) external;

Parameters

NameTypeDescription
tokensaddress[]Addresses of token to set.
quotasuint256[]quotas corresponding to the tokens to set.

getDomainSeparator

Returns the domain separator for this contract.

function getDomainSeparator() external view returns (bytes32);

Returns

NameTypeDescription
<none>bytes32bytes32 The domain separator.

getValidatorContract

Returns the address of the validator contract.

function getValidatorContract() external view returns (address);

Returns

NameTypeDescription
<none>addressThe validator contract address.

getDepositCount

Returns the deposit count of the gateway contract.

function getDepositCount() external view returns (uint256);

Returns

NameTypeDescription
<none>uint256The deposit count.

getWithdrawalHash

Returns the withdrawal hash by withdrawal id.

function getWithdrawalHash(uint256 withdrawalId) external view returns (bytes32);

Parameters

NameTypeDescription
withdrawalIduint256WithdrawalId to query.

Returns

NameTypeDescription
<none>bytes32The withdrawal hash.

getDailyWithdrawalMaxQuota

Returns the daily withdrawal max quota.

function getDailyWithdrawalMaxQuota(address token) external view returns (uint256);

Parameters

NameTypeDescription
tokenaddressToken address

getDailyWithdrawalRemainingQuota

Returns today's withdrawal remaining quota.

function getDailyWithdrawalRemainingQuota(address token) external view returns (uint256 remainingQuota);

Parameters

NameTypeDescription
tokenaddressToken address to query.

Returns

NameTypeDescription
remainingQuotauint256Today's withdrawal remaining quota.

getCrossbellToken

Returns mapped tokens from crossbell chain.

function getCrossbellToken(address mainchainToken) external view returns (DataTypes.MappedToken memory token);

Parameters

NameTypeDescription
mainchainTokenaddressToken address on mainchain.

Returns

NameTypeDescription
tokenDataTypes.MappedTokenMapped token from crossbell chain.

Events

TokenMapped

Emitted when the tokens are mapped

event TokenMapped(address[] mainchainTokens, address[] crossbellTokens, uint8[] crossbellTokenDecimals);

Parameters

NameTypeDescription
mainchainTokensaddress[]Addresses of mainchain tokens.
crossbellTokensaddress[]Addresses of crossbell tokens.
crossbellTokenDecimalsuint8[]Decimals of crossbell tokens.

RequestDeposit

Emitted when the deposit is requested.

event RequestDeposit(
    uint256 indexed chainId,
    uint256 indexed depositId,
    address indexed recipient,
    address token,
    uint256 amount,
    bytes32 depositHash
);

Parameters

NameTypeDescription
chainIduint256The chain ID of mainchain network.
depositIduint256Deposit id.
recipientaddressAddress to receive deposit on crossbell network.
tokenaddressAddress of token to deposit on crossbell network.
amountuint256Amount of token to deposit on crossbell network.
depositHashbytes32Hash of deposit info.

Withdrew

Emitted when the assets are withdrawn on mainchain.

event Withdrew(
    uint256 indexed chainId,
    uint256 indexed withdrawalId,
    address indexed recipient,
    address token,
    uint256 amount,
    uint256 fee
);

Parameters

NameTypeDescription
chainIduint256The chain ID of mainchain network.
withdrawalIduint256Withdrawal ID from crossbell chain.
recipientaddressAddress to receive withdrawal on mainchain chain.
tokenaddressAddress of token to withdraw.
amountuint256Amount of token to withdraw.
feeuint256The fee amount to pay for the withdrawal tx sender. This is subtracted from the amount.

DailyWithdrawalMaxQuotasUpdated

Emitted when the daily quota thresholds are updated.

event DailyWithdrawalMaxQuotasUpdated(address[] tokens, uint256[] quotas);