Loading...
Loading...
Chainlink CCIP Cross-Chain Tokens on Hedera. Use when bridging burn-and-mint CCT between Hedera and EVM, registering TokenAdminRegistry / pools, calling ccipSend with chain selectors, or wiring HTS-backed wrappers (HtsBurnMintERC20) vs vanilla BurnMintERC20. Not for Chainlink Data Feeds / price oracles.
npx skill4agent add hedera-dev/hedera-skills ccipccipSendBurnMint token + TokenPool (source)
→ Router.ccipSend(destSelector, message)
→ TokenPool lockOrBurn / releaseOrMint (dest)| Piece | Role |
|---|---|
| Router | |
| Chain selector | |
| Token + pool | Burn-mint ERC-20 + |
| Admin registry | |
| Lane config | |
| Fee | Native gas ( |
| Receiver | |
ccipSendremoteChainSelector29611155111296registerAdminViaGetCCIPAdmin(token)acceptAdminRole(token)TokenAdminRegistry.setPool(token, pool)applyChainUpdatesBurnMintERC20BurnMintTokenPool0x167HtsBurnMintERC20HtsBurnMintTokenPoolint64Client.EVM2AnyMessage memory message = Client.EVM2AnyMessage({
receiver: abi.encode(receiver),
data: "",
tokenAmounts: tokenAmounts, // token is the CCIP-registered ERC-20 / wrapper
feeToken: address(0),
extraArgs: Client._argsToBytes(
Client.EVMExtraArgsV2({ gasLimit: 0, allowOutOfOrderExecution: true })
)
});
uint256 fee = IRouterClient(router).getFee(destinationChainSelector, message);
IERC20(tokenToSend).approve(router, amount);
IRouterClient(router).ccipSend{ value: fee }(destinationChainSelector, message);applyChainUpdatesccipSendfeeToken = address(0)int64