WIP: HYBX OMNL and deployment documentation updates
This commit is contained in:
296
docs/ccip-integration/reference/API_REFERENCE.md
Normal file
296
docs/ccip-integration/reference/API_REFERENCE.md
Normal file
@@ -0,0 +1,296 @@
|
||||
# CCIP API Reference for ChainID 138
|
||||
|
||||
**Date**: 2025-01-27
|
||||
**Network**: ChainID 138 (DeFi Oracle Meta Mainnet)
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This document provides API reference for CCIP contracts on ChainID 138.
|
||||
|
||||
---
|
||||
|
||||
## CCIP Router API
|
||||
|
||||
### Functions
|
||||
|
||||
#### `ccipSend(uint64 destinationChainSelector, EVM2AnyMessage memory message)`
|
||||
|
||||
Send a message to a destination chain.
|
||||
|
||||
**Parameters**:
|
||||
- `destinationChainSelector`: Chain selector of destination chain
|
||||
- `message`: CCIP message structure
|
||||
|
||||
**Returns**:
|
||||
- `bytes32 messageId`: Unique message identifier
|
||||
- `uint256 fees`: Fees paid for the message
|
||||
|
||||
**Example**:
|
||||
```solidity
|
||||
IRouterClient.EVM2AnyMessage memory message = IRouterClient.EVM2AnyMessage({
|
||||
receiver: abi.encode(receiverAddress),
|
||||
data: messageData,
|
||||
tokenAmounts: new IRouterClient.TokenAmount[](0),
|
||||
feeToken: address(0), // Native ETH
|
||||
extraArgs: ""
|
||||
});
|
||||
|
||||
(bytes32 messageId, uint256 fees) = router.ccipSend{value: fee}(
|
||||
destinationSelector,
|
||||
message
|
||||
);
|
||||
```
|
||||
|
||||
#### `getFee(uint64 destinationChainSelector, EVM2AnyMessage memory message)`
|
||||
|
||||
Calculate fee for sending a message.
|
||||
|
||||
**Parameters**:
|
||||
- `destinationChainSelector`: Chain selector of destination chain
|
||||
- `message`: CCIP message structure
|
||||
|
||||
**Returns**:
|
||||
- `uint256 fee`: Required fee amount
|
||||
|
||||
**Example**:
|
||||
```solidity
|
||||
uint256 fee = router.getFee(destinationSelector, message);
|
||||
```
|
||||
|
||||
#### `getSupportedTokens(uint64 destinationChainSelector)`
|
||||
|
||||
Get list of supported tokens for a destination chain.
|
||||
|
||||
**Parameters**:
|
||||
- `destinationChainSelector`: Chain selector
|
||||
|
||||
**Returns**:
|
||||
- `address[] tokens`: Array of supported token addresses
|
||||
|
||||
#### `addSupportedChain(uint64 chainSelector)` (Admin Only)
|
||||
|
||||
Add a supported destination chain.
|
||||
|
||||
**Parameters**:
|
||||
- `chainSelector`: Chain selector to add
|
||||
|
||||
#### `removeSupportedChain(uint64 chainSelector)` (Admin Only)
|
||||
|
||||
Remove a supported destination chain.
|
||||
|
||||
#### `addSupportedToken(uint64 chainSelector, address token)` (Admin Only)
|
||||
|
||||
Add a supported token for a chain.
|
||||
|
||||
**Parameters**:
|
||||
- `chainSelector`: Chain selector
|
||||
- `token`: Token address
|
||||
|
||||
#### `updateFees(uint256 baseFee, uint256 dataFeePerByte)` (Admin Only)
|
||||
|
||||
Update fee configuration.
|
||||
|
||||
**Parameters**:
|
||||
- `baseFee`: New base fee
|
||||
- `dataFeePerByte`: New data fee per byte
|
||||
|
||||
---
|
||||
|
||||
## CCIPWETH9Bridge API
|
||||
|
||||
### Functions
|
||||
|
||||
#### `sendCrossChain(uint64 destinationChainSelector, address recipient, uint256 amount)`
|
||||
|
||||
Send WETH9 tokens to another chain.
|
||||
|
||||
**Parameters**:
|
||||
- `destinationChainSelector`: Destination chain selector
|
||||
- `recipient`: Recipient address on destination chain
|
||||
- `amount`: Amount of WETH9 to send
|
||||
|
||||
**Returns**:
|
||||
- `bytes32 messageId`: Message ID for tracking
|
||||
|
||||
**Example**:
|
||||
```solidity
|
||||
// Approve first
|
||||
weth9.approve(address(bridge), amount);
|
||||
|
||||
// Send
|
||||
bytes32 messageId = bridge.sendCrossChain(
|
||||
5009297550715157269, // Ethereum Mainnet
|
||||
recipientAddress,
|
||||
amount
|
||||
);
|
||||
```
|
||||
|
||||
#### `ccipReceive(Any2EVMMessage calldata message)` (Router Only)
|
||||
|
||||
Receive WETH9 tokens from another chain. Called by router.
|
||||
|
||||
#### `calculateFee(uint64 destinationChainSelector, uint256 amount)`
|
||||
|
||||
Calculate fee for cross-chain transfer.
|
||||
|
||||
**Parameters**:
|
||||
- `destinationChainSelector`: Destination chain selector
|
||||
- `amount`: Transfer amount
|
||||
|
||||
**Returns**:
|
||||
- `uint256 fee`: Required fee
|
||||
|
||||
#### `addDestination(uint64 chainSelector, address receiverBridge)` (Admin Only)
|
||||
|
||||
Add destination chain configuration.
|
||||
|
||||
#### `removeDestination(uint64 chainSelector)` (Admin Only)
|
||||
|
||||
Remove destination chain.
|
||||
|
||||
#### `updateDestination(uint64 chainSelector, address receiverBridge)` (Admin Only)
|
||||
|
||||
Update destination receiver bridge address.
|
||||
|
||||
#### `getDestinationChains()`
|
||||
|
||||
Get list of configured destination chains.
|
||||
|
||||
**Returns**:
|
||||
- `uint64[]`: Array of chain selectors
|
||||
|
||||
#### `getUserNonce(address user)`
|
||||
|
||||
Get user's current nonce.
|
||||
|
||||
**Returns**:
|
||||
- `uint256`: User nonce
|
||||
|
||||
---
|
||||
|
||||
## CCIPWETH10Bridge API
|
||||
|
||||
Same as CCIPWETH9Bridge, but for WETH10 tokens.
|
||||
|
||||
---
|
||||
|
||||
## Events
|
||||
|
||||
### Router Events
|
||||
|
||||
```solidity
|
||||
event MessageSent(
|
||||
bytes32 indexed messageId,
|
||||
uint64 indexed destinationChainSelector,
|
||||
address indexed sender,
|
||||
bytes receiver,
|
||||
bytes data,
|
||||
TokenAmount[] tokenAmounts,
|
||||
address feeToken,
|
||||
bytes extraArgs
|
||||
);
|
||||
|
||||
event MessageReceived(
|
||||
bytes32 indexed messageId,
|
||||
uint64 indexed sourceChainSelector,
|
||||
address indexed sender,
|
||||
bytes data,
|
||||
TokenAmount[] tokenAmounts
|
||||
);
|
||||
```
|
||||
|
||||
### Bridge Events
|
||||
|
||||
```solidity
|
||||
event CrossChainTransferInitiated(
|
||||
bytes32 indexed messageId,
|
||||
address indexed sender,
|
||||
uint64 indexed destinationChainSelector,
|
||||
address recipient,
|
||||
uint256 amount,
|
||||
uint256 nonce
|
||||
);
|
||||
|
||||
event CrossChainTransferCompleted(
|
||||
bytes32 indexed messageId,
|
||||
uint64 indexed sourceChainSelector,
|
||||
address indexed recipient,
|
||||
uint256 amount
|
||||
);
|
||||
|
||||
event DestinationAdded(uint64 chainSelector, address receiverBridge);
|
||||
event DestinationRemoved(uint64 chainSelector);
|
||||
event DestinationUpdated(uint64 chainSelector, address receiverBridge);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Data Structures
|
||||
|
||||
### EVM2AnyMessage
|
||||
|
||||
```solidity
|
||||
struct EVM2AnyMessage {
|
||||
bytes receiver; // Encoded receiver address
|
||||
bytes data; // Message data
|
||||
TokenAmount[] tokenAmounts; // Token amounts to transfer
|
||||
address feeToken; // Fee token address (0 for native)
|
||||
bytes extraArgs; // Extra arguments
|
||||
}
|
||||
```
|
||||
|
||||
### Any2EVMMessage
|
||||
|
||||
```solidity
|
||||
struct Any2EVMMessage {
|
||||
bytes32 messageId; // Unique message ID
|
||||
uint64 sourceChainSelector; // Source chain selector
|
||||
bytes sender; // Encoded sender address
|
||||
bytes data; // Message data
|
||||
TokenAmount[] tokenAmounts; // Token amounts received
|
||||
}
|
||||
```
|
||||
|
||||
### TokenAmount
|
||||
|
||||
```solidity
|
||||
struct TokenAmount {
|
||||
address token; // Token address
|
||||
uint256 amount; // Amount
|
||||
TokenAmountType amountType; // Fiat or Native
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Error Codes
|
||||
|
||||
### Router Errors
|
||||
|
||||
- `CCIPRouter: chain not supported`
|
||||
- `CCIPRouter: insufficient native token fee`
|
||||
- `CCIPRouter: duplicate message`
|
||||
- `CCIPRouter: empty receiver`
|
||||
|
||||
### Bridge Errors
|
||||
|
||||
- `CCIPWETH9Bridge: destination not enabled`
|
||||
- `CCIPWETH9Bridge: transfer failed`
|
||||
- `CCIPWETH9Bridge: transfer already processed`
|
||||
- `CCIPWETH9Bridge: invalid amount`
|
||||
- `CCIPWETH9Bridge: zero recipient`
|
||||
|
||||
---
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [Developer Integration Guide](../developer-guides/CCIP_INTEGRATION_GUIDE.md)
|
||||
- [User Guide](../user-guides/CCIP_BRIDGE_USER_GUIDE.md)
|
||||
- [Deployment Guide](DEPLOYMENT_GUIDE_CHAIN138.md)
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2025-01-27
|
||||
|
||||
Reference in New Issue
Block a user