Back
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 .