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 MATIC on Polygon. |
extraArgs | bytes | Users fill in the EVMExtraArgsV1 struct then encode it to bytes using the _argsToBytes function |
bytes4 EVM_EXTRA_ARGS_V1_TAG
struct EVMExtraArgsV1 {
uint256 gasLimit;
bool strict;
}
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. |
strict | bool | Used for strict sequencing. Read Sequencing for more details |
function _argsToBytes(struct Client.EVMExtraArgsV1 extraArgs) internal pure returns (bytes bts)
Checks if the given chain ID is supported for sending/receiving.
Name | Type | Description |
---|
extraArgs | Client.EVMExtraArgsV1 | Extra arguments. |
Name | Type | Description |
---|
bts | bytes | Encoded extra arguments in bytes. |