ICrossbellGateway
This is the interface for the crossbell bridge gateway contract. You'll find all the events and external functions.
Functions
initialize
Initializes the CrossbellGateway.
function initialize(
address validator,
address admin,
address[] calldata crossbellTokens,
uint256[] calldata chainIds,
address[] calldata mainchainTokens,
uint8[] calldata mainchainTokenDecimals
) external;
Parameters
Name | Type | Description |
---|---|---|
validator | address | Address of validator contract. |
admin | address | Address of gateway admin. |
crossbellTokens | address[] | Addresses of crossbell tokens. |
chainIds | uint256[] | The chain IDs of mainchain networks. |
mainchainTokens | address[] | Addresses of mainchain tokens. |
mainchainTokenDecimals | uint8[] | Decimals of mainchain tokens. |
pause
Pauses interaction with the gateway contract
function pause() external;
unpause
Resumes interaction with the gateway contract
function unpause() external;
mapTokens
Maps mainchain tokens to Crossbell network.
function mapTokens(
address[] calldata crossbellTokens,
uint256[] calldata chainIds,
address[] calldata mainchainTokens,
uint8[] calldata mainchainTokenDecimals
) external;
Parameters
Name | Type | Description |
---|---|---|
crossbellTokens | address[] | Addresses of crossbell tokens. |
chainIds | uint256[] | The chain IDs of mainchain networks. |
mainchainTokens | address[] | Addresses of mainchain tokens. |
mainchainTokenDecimals | uint8[] | Decimals of mainchain tokens. |
batchAckDeposit
Tries bulk deposit.
function batchAckDeposit(
uint256[] calldata chainIds,
uint256[] calldata depositIds,
address[] calldata recipients,
address[] calldata tokens,
uint256[] calldata amounts,
bytes32[] calldata depositHashes
) external;
batchSubmitWithdrawalSignatures
Tries bulk submit withdrawal signatures. Note that the caller must be a validator.
function batchSubmitWithdrawalSignatures(
uint256[] calldata chainIds,
uint256[] calldata withdrawalIds,
bytes[] calldata sigs
) external;
ackDeposit
Acknowledges a deposit. Note that the caller must be a validator.
function ackDeposit(
uint256 chainId,
uint256 depositId,
address recipient,
address token,
uint256 amount,
bytes32 depositHash
) external;
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
depositId | uint256 | Deposit identifier id. |
recipient | address | Address to receive deposit on crossbell network. |
token | address | Token address to deposit on crossbell network. |
amount | uint256 | Token amount to deposit on crossbell network. |
depositHash | bytes32 | Hash of deposit info. |
requestWithdrawal
Locks the assets and request withdrawal.
function requestWithdrawal(uint256 chainId, address recipient, address token, uint256 amount, uint256 fee)
external
returns (uint256 withdrawalId);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
recipient | address | Address to receive withdrawal on mainchain network. |
token | address | Token address to lock from crossbell network. |
amount | uint256 | Token amount to lock from crossbell network. |
fee | uint256 | Fee amount to pay. This is subtracted from the amount . |
Returns
Name | Type | Description |
---|---|---|
withdrawalId | uint256 | The newly generated withdrawalId. |
submitWithdrawalSignature
Submits validator signature for withdrawal. Note that the caller must be a validator.
function submitWithdrawalSignature(uint256 chainId, uint256 withdrawalId, bytes calldata sig) external;
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
withdrawalId | uint256 | WithdrawalId. |
sig | bytes | Validator signature for the withdrawal. |
getMainchainToken
Returns mapped token on mainchain.
function getMainchainToken(uint256 chainId, address crossbellToken)
external
view
returns (DataTypes.MappedToken memory token);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
crossbellToken | address | Token address on crossbell. |
Returns
Name | Type | Description |
---|---|---|
token | DataTypes.MappedToken | Mapped token on mainchain chain. |
getValidatorAcknowledgementHash
Returns the acknowledge depositHash by validator.
function getValidatorAcknowledgementHash(uint256 chainId, uint256 id, address validator)
external
view
returns (bytes32);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
id | uint256 | DepositId. |
validator | address | Validator address. |
Returns
Name | Type | Description |
---|---|---|
<none> | bytes32 | bytes32 depositHash if validator has acknowledged, otherwise 0. |
getAcknowledgementStatus
Returns the acknowledge status of deposit by validators.
function getAcknowledgementStatus(uint256 chainId, uint256 id, bytes32 hash) external view returns (DataTypes.Status);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
id | uint256 | DepositId. |
hash | bytes32 | depositHash. |
Returns
Name | Type | Description |
---|---|---|
<none> | DataTypes.Status | DataTypes.Status Acknowledgement status. |
getAcknowledgementCount
Returns the acknowledge count of deposit by validators.
function getAcknowledgementCount(uint256 chainId, uint256 id, bytes32 hash) external view returns (uint256);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
id | uint256 | DepositId. |
hash | bytes32 | depositHash. |
Returns
Name | Type | Description |
---|---|---|
<none> | uint256 | uint256 Acknowledgement count. |
getWithdrawalSignatures
Returns withdrawal signatures.
function getWithdrawalSignatures(uint256 chainId, uint256 withdrawalId)
external
view
returns (address[] memory signers, bytes[] memory sigs);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
withdrawalId | uint256 | Withdrawal Id to query. |
Returns
Name | Type | Description |
---|---|---|
signers | address[] | Signer addresses. |
sigs | bytes[] | Signer signatures. |
getValidatorContract
Returns the address of the validator contract.
function getValidatorContract() external view returns (address);
Returns
Name | Type | Description |
---|---|---|
<none> | address | The validator contract address. |
getDepositEntry
Returns the deposit entry.
function getDepositEntry(uint256 chainId, uint256 depositId) external view returns (DataTypes.DepositEntry memory);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
depositId | uint256 | Deposit Id to query. |
Returns
Name | Type | Description |
---|---|---|
<none> | DataTypes.DepositEntry | DataTypes.DepositEntry Deposit entry. |
getWithdrawalCount
Returns the withdrawal count of different mainchain networks.
function getWithdrawalCount(uint256 chainId) external view returns (uint256);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
Returns
Name | Type | Description |
---|---|---|
<none> | uint256 | Withdrawal count. |
getWithdrawalEntry
Returns the withdrawal entry.
function getWithdrawalEntry(uint256 chainId, uint256 withdrawalId)
external
view
returns (DataTypes.WithdrawalEntry memory);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
withdrawalId | uint256 | Withdrawal Id to query. |
Returns
Name | Type | Description |
---|---|---|
<none> | DataTypes.WithdrawalEntry | DataTypes.WithdrawalEntry Withdrawal entry. |
Events
TokenMapped
Emitted when the tokens are mapped.
event TokenMapped(
address[] crossbellTokens, uint256[] chainIds, address[] mainchainTokens, uint8[] mainchainTokenDecimals
);
Parameters
Name | Type | Description |
---|---|---|
crossbellTokens | address[] | Addresses of crossbell tokens. |
chainIds | uint256[] | The chain IDs of mainchain networks. |
mainchainTokens | address[] | Addresses of mainchain tokens. |
mainchainTokenDecimals | uint8[] | Decimals of mainchain tokens. |
Deposited
Emitted when the assets are deposited.
event Deposited(
uint256 indexed chainId, uint256 indexed depositId, address indexed recipient, address token, uint256 amount
);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The chain ID of mainchain network. |
depositId | uint256 | Deposit identifier id. |
recipient | address | The address of account to receive the deposit. |
token | address | The address of token to deposit. |
amount | uint256 | The amount of token to deposit. |
AckDeposit
Emitted when the deposit is acknowledged by a validator.
event AckDeposit(
uint256 indexed chainId,
uint256 indexed depositId,
address indexed validator,
address recipient,
address token,
uint256 amount
);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The ChainId of mainchain network. |
depositId | uint256 | Deposit identifier id. |
validator | address | |
recipient | address | The address of account to receive the deposit. |
token | address | The address of token to deposit. |
amount | uint256 | The amount of token to deposit. |
RequestWithdrawal
Emitted when the withdrawal is requested.
event RequestWithdrawal(
uint256 indexed chainId,
uint256 indexed withdrawalId,
address indexed recipient,
address token,
uint256 amount,
uint256 fee
);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The ChainId of mainchain network. |
withdrawalId | uint256 | Withdrawal identifier id. |
recipient | address | The address of account to receive the withdrawal. |
token | address | The address of token to withdraw on mainchain network. |
amount | uint256 | The amount of token to withdraw on mainchain network. Note that validator should use this `amount' for submitting signature. |
fee | uint256 | The fee amount to pay for the withdrawal tx sender on mainchain network. |
SubmitWithdrawalSignature
Emitted when a withdrawal signature is submitted by validator.
event SubmitWithdrawalSignature(
uint256 indexed chainId, uint256 indexed withdrawalId, address indexed validator, bytes signature
);
Parameters
Name | Type | Description |
---|---|---|
chainId | uint256 | The ChainId of mainchain network. |
withdrawalId | uint256 | Withdrawal identifier id. |
validator | address | The address of validator who submitted the signature. |
signature | bytes | The submitted signature. |