mirror of
https://github.com/vacp2p/linea-monorepo.git
synced 2026-01-09 20:27:58 -05:00
* did poc for autogenerated *.mdx into docs.linea.build * changed sparseMerkleProof * first draft of contracts-docgen * fix typos * try different github token * cleanup * created create-docs-website-pr-branch * cleanup for doc website repo scripts * created first docs-repo pr using create-docs-website-pr-branch.sh * improve comments * added bash script segment to change filename to lowercase * fix *.mdx headers to make more docusarus friendly * update scripts for updated docs pr * added comments to updateSidebar.js * fix scripts after local test * added installation checks * Update contracts/docs/scripts/create-docs-website-pr-branch.sh Co-authored-by: The Dark Jester <thedarkjester@users.noreply.github.com> Signed-off-by: kyzooghost <73516204+kyzooghost@users.noreply.github.com> --------- Signed-off-by: kyzooghost <73516204+kyzooghost@users.noreply.github.com> Co-authored-by: The Dark Jester <thedarkjester@users.noreply.github.com>
487 lines
12 KiB
Plaintext
487 lines
12 KiB
Plaintext
# `ITokenBridge`
|
|
|
|
### InitializationData
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
event TokenReserved(address token)
|
|
```
|
|
|
|
Emitted when the token address is reserved.
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ---- | ----------- |
|
|
| token | address | The indexed token address. |
|
|
|
|
### ReservationRemoved
|
|
|
|
```solidity
|
|
event ReservationRemoved(address token)
|
|
```
|
|
|
|
Emitted when the token address reservation is removed.
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ---- | ----------- |
|
|
| token | address | The indexed token address. |
|
|
|
|
### CustomContractSet
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
error ReservedToken(address token)
|
|
```
|
|
|
|
_Thrown when attempting to bridge a reserved token._
|
|
|
|
### RemoteTokenBridgeAlreadySet
|
|
|
|
```solidity
|
|
error RemoteTokenBridgeAlreadySet(address remoteTokenBridge)
|
|
```
|
|
|
|
_Thrown when the remote token bridge is already set._
|
|
|
|
### AlreadyBridgedToken
|
|
|
|
```solidity
|
|
error AlreadyBridgedToken(address token)
|
|
```
|
|
|
|
_Thrown when attempting to reserve an already bridged token._
|
|
|
|
### InvalidPermitData
|
|
|
|
```solidity
|
|
error InvalidPermitData(bytes4 permitData, bytes4 permitSelector)
|
|
```
|
|
|
|
_Thrown when the permit data is invalid._
|
|
|
|
### PermitNotFromSender
|
|
|
|
```solidity
|
|
error PermitNotFromSender(address owner)
|
|
```
|
|
|
|
_Thrown when the permit is not from the sender._
|
|
|
|
### PermitNotAllowingBridge
|
|
|
|
```solidity
|
|
error PermitNotAllowingBridge(address spender)
|
|
```
|
|
|
|
_Thrown when the permit does not grant spending to the bridge._
|
|
|
|
### ZeroAmountNotAllowed
|
|
|
|
```solidity
|
|
error ZeroAmountNotAllowed(uint256 amount)
|
|
```
|
|
|
|
_Thrown when the amount being bridged is zero._
|
|
|
|
### NotReserved
|
|
|
|
```solidity
|
|
error NotReserved(address token)
|
|
```
|
|
|
|
_Thrown when trying to unreserve a non-reserved token._
|
|
|
|
### TokenNotDeployed
|
|
|
|
```solidity
|
|
error TokenNotDeployed(address token)
|
|
```
|
|
|
|
_Thrown when trying to confirm deployment of a non-deployed token._
|
|
|
|
### AlreadyBrigedToNativeTokenSet
|
|
|
|
```solidity
|
|
error AlreadyBrigedToNativeTokenSet(address token)
|
|
```
|
|
|
|
_Thrown when trying to set a custom contract on a bridged token._
|
|
|
|
### NativeToBridgedTokenAlreadySet
|
|
|
|
```solidity
|
|
error NativeToBridgedTokenAlreadySet(address token)
|
|
```
|
|
|
|
_Thrown when trying to set a custom contract on an already set token._
|
|
|
|
### StatusAddressNotAllowed
|
|
|
|
```solidity
|
|
error StatusAddressNotAllowed(address token)
|
|
```
|
|
|
|
_Thrown when trying to set a token that is already either native, deployed or reserved._
|
|
|
|
### DecimalsAreUnknown
|
|
|
|
```solidity
|
|
error DecimalsAreUnknown(address token)
|
|
```
|
|
|
|
_Thrown when the decimals for a token cannot be determined._
|
|
|
|
### TokenListEmpty
|
|
|
|
```solidity
|
|
error TokenListEmpty()
|
|
```
|
|
|
|
_Thrown when the token list is empty._
|
|
|
|
### bridgeTokenWithPermit
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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. |
|
|
|