ITokenBridge
InitializationData​
struct InitializationData {
address defaultAdmin;
address messageService;
address tokenBeacon;
uint256 sourceChainId;
uint256 targetChainId;
address[] reservedTokens;
struct IPermissionsManager.RoleAddress[] roleAddresses;
struct IPauseManager.PauseTypeRole[] pauseTypeRoles;
struct IPauseManager.PauseTypeRole[] unpauseTypeRoles;
}
TokenReserved​
event TokenReserved(address token)
Emitted when the token address is reserved.
Parameters​
Name | Type | Description |
---|---|---|
token | address | The indexed token address. |
ReservationRemoved​
event ReservationRemoved(address token)
Emitted when the token address reservation is removed.
Parameters​
Name | Type | Description |
---|---|---|
token | address | The indexed token address. |
CustomContractSet​
event CustomContractSet(address nativeToken, address customContract, address setBy)
Emitted when the custom token address is set.
Parameters​
Name | Type | Description |
---|---|---|
nativeToken | address | The indexed nativeToken token address. |
customContract | address | The indexed custom contract address. |
setBy | address | The indexed address of who set the custom contract. |
BridgingInitiated​
event BridgingInitiated(address sender, address recipient, address token, uint256 amount)
Emitted when token bridging is initiated.
DEPRECATED in favor of BridgingInitiatedV2.
Parameters​
Name | Type | Description |
---|---|---|
sender | address | The indexed sender address. |
recipient | address | The recipient address. |
token | address | The indexed token address. |
amount | uint256 | The indexed token amount. |
BridgingInitiatedV2​
event BridgingInitiatedV2(address sender, address recipient, address token, uint256 amount)
Emitted when token bridging is initiated.
Parameters​
Name | Type | Description |
---|---|---|
sender | address | The indexed sender address. |
recipient | address | The indexed recipient address. |
token | address | The indexed token address. |
amount | uint256 | The token amount. |
BridgingFinalized​
event BridgingFinalized(address nativeToken, address bridgedToken, uint256 amount, address recipient)
Emitted when token bridging is finalized.
DEPRECATED in favor of BridgingFinalizedV2.
Parameters​
Name | Type | Description |
---|---|---|
nativeToken | address | The indexed native token address. |
bridgedToken | address | The indexed bridged token address. |
amount | uint256 | The indexed token amount. |
recipient | address | The recipient address. |
BridgingFinalizedV2​
event BridgingFinalizedV2(address nativeToken, address bridgedToken, uint256 amount, address recipient)
Emitted when token bridging is finalized.
Parameters​
Name | Type | Description |
---|---|---|
nativeToken | address | The indexed native token address. |
bridgedToken | address | The indexed bridged token address. |
amount | uint256 | The token amount. |
recipient | address | The indexed recipient address. |
NewToken​
event NewToken(address token)
Emitted when a new token is seen being bridged on the origin chain for the first time.
Parameters​
Name | Type | Description |
---|---|---|
token | address | The indexed token address. |
NewTokenDeployed​
event NewTokenDeployed(address bridgedToken, address nativeToken)
Emitted when a new token is deployed.
Parameters​
Name | Type | Description |
---|---|---|
bridgedToken | address | The indexed bridged token address. |
nativeToken | address | The indexed native token address. |
RemoteTokenBridgeSet​
event RemoteTokenBridgeSet(address remoteTokenBridge, address setBy)
Emitted when the remote token bridge is set.
Parameters​
Name | Type | Description |
---|---|---|
remoteTokenBridge | address | The indexed remote token bridge address. |
setBy | address | The indexed address that set the remote token bridge. |
TokenDeployed​
event TokenDeployed(address token)
Emitted when the token is set as deployed.
This can be triggered by anyone calling confirmDeployment on the alternate chain.
Parameters​
Name | Type | Description |
---|---|---|
token | address | The indexed token address. |
DeploymentConfirmed​
event DeploymentConfirmed(address[] tokens, address confirmedBy)
Emitted when the token deployment is confirmed.
This can be triggered by anyone provided there is correctly mapped token data.
Parameters​
Name | Type | Description |
---|---|---|
tokens | address[] | The token address list. |
confirmedBy | address | The indexed address confirming deployment. |
MessageServiceUpdated​
event MessageServiceUpdated(address newMessageService, address oldMessageService, address setBy)
Emitted when the message service address is set.
Parameters​
Name | Type | Description |
---|---|---|
newMessageService | address | The indexed new message service address. |
oldMessageService | address | The indexed old message service address. |
setBy | address | The indexed address setting the new message service address. |
ReservedToken​
error ReservedToken(address token)
Thrown when attempting to bridge a reserved token.
RemoteTokenBridgeAlreadySet​
error RemoteTokenBridgeAlreadySet(address remoteTokenBridge)
Thrown when the remote token bridge is already set.
AlreadyBridgedToken​
error AlreadyBridgedToken(address token)
Thrown when attempting to reserve an already bridged token.
InvalidPermitData​
error InvalidPermitData(bytes4 permitData, bytes4 permitSelector)
Thrown when the permit data is invalid.
PermitNotFromSender​
error PermitNotFromSender(address owner)
Thrown when the permit is not from the sender.
PermitNotAllowingBridge​
error PermitNotAllowingBridge(address spender)
Thrown when the permit does not grant spending to the bridge.
ZeroAmountNotAllowed​
error ZeroAmountNotAllowed(uint256 amount)
Thrown when the amount being bridged is zero.
NotReserved​
error NotReserved(address token)
Thrown when trying to unreserve a non-reserved token.
TokenNotDeployed​
error TokenNotDeployed(address token)
Thrown when trying to confirm deployment of a non-deployed token.
AlreadyBrigedToNativeTokenSet​
error AlreadyBrigedToNativeTokenSet(address token)
Thrown when trying to set a custom contract on a bridged token.
NativeToBridgedTokenAlreadySet​
error NativeToBridgedTokenAlreadySet(address token)
Thrown when trying to set a custom contract on an already set token.
StatusAddressNotAllowed​
error StatusAddressNotAllowed(address token)
Thrown when trying to set a token that is already either native, deployed or reserved.
DecimalsAreUnknown​
error DecimalsAreUnknown(address token)
Thrown when the decimals for a token cannot be determined.
TokenListEmpty​
error TokenListEmpty()
Thrown when the token list is empty.
bridgeTokenWithPermit​
function bridgeTokenWithPermit(address _token, uint256 _amount, address _recipient, bytes _permitData) external payable
Similar to bridgeToken
function but allows to pass additional
permit data to do the ERC20 approval in a single transaction.
Parameters​
Name | Type | Description |
---|---|---|
_token | address | The address of the token to be bridged. |
_amount | uint256 | The amount of the token to be bridged. |
_recipient | address | The address that will receive the tokens on the other chain. |
_permitData | bytes | The permit data for the token, if applicable. |
completeBridging​
function completeBridging(address _nativeToken, uint256 _amount, address _recipient, uint256 _chainId, bytes _tokenMetadata) external
It can only be called from the Message Service. To finalize the bridging
process, a user or postmen needs to use the claimMessage
function of the
Message Service to trigger the transaction.
Parameters​
Name | Type | Description |
---|---|---|
_nativeToken | address | The address of the token on its native chain. |
_amount | uint256 | The amount of the token to be received. |
_recipient | address | The address that will receive the tokens. |
_chainId | uint256 | The source chainId or target chaindId for this token |
_tokenMetadata | bytes | Additional data used to deploy the bridged token if it doesn't exist already. |
confirmDeployment​
function confirmDeployment(address[] _tokens) external payable
Change the status to DEPLOYED to the tokens passed in parameter Will call the method setDeployed on the other chain using the message Service
Parameters​
Name | Type | Description |
---|---|---|
_tokens | address[] | Array of bridged tokens that have been deployed. |
setMessageService​
function setMessageService(address _messageService) external
Change the address of the Message Service.
Parameters​
Name | Type | Description |
---|---|---|
_messageService | address | The address of the new Message Service. |
setDeployed​
function setDeployed(address[] _nativeTokens) external
It can only be called from the Message Service. To change the status of
the native tokens to DEPLOYED meaning they have been deployed on the other chain
a user or postman needs to use the claimMessage
function of the
Message Service to trigger the transaction.
Parameters​
Name | Type | Description |
---|---|---|
_nativeTokens | address[] | The addresses of the native tokens. |
setReserved​
function setReserved(address _token) external
Make sure that _token is native to the current chain where you are calling this function from
Linea can reserve tokens. In this case, the token cannot be bridged. Linea can only reserve tokens that have not been bridged before.
Parameters​
Name | Type | Description |
---|---|---|
_token | address | The address of the token to be set as reserved. |
setRemoteTokenBridge​
function setRemoteTokenBridge(address _remoteTokenBridge) external
Sets the address of the remote token bridge. Can only be called once.
Parameters​
Name | Type | Description |
---|---|---|
_remoteTokenBridge | address | The address of the remote token bridge to be set. |
removeReserved​
function removeReserved(address _token) external
Removes a token from the reserved list.
Parameters​
Name | Type | Description |
---|---|---|
_token | address | The address of the token to be removed from the reserved list. |
setCustomContract​
function setCustomContract(address _nativeToken, address _targetContract) external
Linea can set a custom ERC20 contract for specific ERC20. For security purpose, Linea can only call this function if the token has not been bridged yet.
Parameters​
Name | Type | Description |
---|---|---|
_nativeToken | address | address of the token on the source chain. |
_targetContract | address | address of the custom contract. |