Client Library API Reference
CCIP senders and receivers use the CCIP Client
library to build CCIP messages.
import { Client } from "@chainlink/contracts-ccip/src/v0.8/ccip/libraries/Client.sol";
Use this solidity struct to specify the token address and amount.
struct EVMTokenAmount {
address token;
uint256 amount;
}
Name | Type | Description |
---|
token | address | token address on the local chain. |
amount | uint256 | Amount of tokens. |
CCIP receivers use this solidity struct to parse the received CCIP message.
struct Any2EVMMessage {
bytes32 messageId;
uint64 sourceChainSelector;
bytes sender;
bytes data;
struct Client.EVMTokenAmount[] destTokenAmounts;
}
Name | Type | Description |
---|
messageId | bytes32 | CCIP messageId, generated on the source chain. |
sourceChainSelector | uint64 | Source chain selector. |
sender | bytes | Sender address. abi.decode(sender, (address)) if the source chain is an EVM chain. |
data | bytes | Payload sent within the CCIP message. |
destTokenAmounts | Client.EVMTokenAmount[] | Tokens and their amounts in their destination chain representation. |
CCIP senders use this solidity struct to build the CCIP message.
struct EVM2AnyMessage {
bytes receiver;
bytes data;
struct Client.EVMTokenAmount[] tokenAmounts;
address feeToken;
bytes extraArgs;
}
Name | Type | Description |
---|
receiver | bytes | Receiver address. Use abi.encode(sender) to encode the address to bytes. |
data | bytes | Payload sent within the CCIP message. |
tokenAmounts | Client.EVMTokenAmount[] | Tokens and their amounts in the source chain representation. |
feeToken | address | Address of feeToken. Set address(0) to pay in native gas tokens such as ETH on Ethereum or POL on Polygon. |
extraArgs | bytes | Users fill in the EVMExtraArgs struct then encode it to bytes using the _argsToBytes function |
bytes4 EVM_EXTRA_ARGS_V1_TAG
bytes4 EVM_EXTRA_ARGS_V2_TAG
struct EVMExtraArgsV1 {
uint256 gasLimit;
}
Name | Type | Description |
---|
gasLimit | uint256 | specifies the maximum amount of gas CCIP can consume to execute ccipReceive() on the contract located on the destination blockchain. Read Setting gasLimit for more details. |
struct EVMExtraArgsV2 {
uint256 gasLimit;
bool allowOutOfOrderExecution;
}
Name | Type | Description |
---|
gasLimit | uint256 | specifies the maximum amount of gas CCIP can consume to execute ccipReceive() on the contract located on the destination blockchain. Read Setting gasLimit for more details. |
allowOutOfOrderExecution | bool | if true, it indicates that the message can be executed in any order relative to other messages from the same sender. This value's default varies by chain. On some chains, a particular value is enforced, meaning if the expected value is not set, the message request will revert. |
function _argsToBytes(struct Client.EVMExtraArgsV1 extraArgs) internal pure returns (bytes bts)
It is used to convert the arguments to bytes.
Name | Type | Description |
---|
bts | bytes | Encoded extra arguments in bytes. |
function _argsToBytes(struct Client.EVMExtraArgsV2 extraArgs) internal pure returns (bytes bts)
It is used to convert the arguments to bytes.
Name | Type | Description |
---|
bts | bytes | Encoded extra arguments in bytes. |