{"id":26351510,"url":"https://github.com/santiellena/exploring-chainlink-ccip","last_synced_at":"2025-03-16T10:33:14.708Z","repository":{"id":203638282,"uuid":"710038253","full_name":"santiellena/exploring-chainlink-ccip","owner":"santiellena","description":"Simple implementation of Chainlink CCIP to make cross-chain transactions to EOA. From Avalanche Fuji to Sepolia.","archived":false,"fork":false,"pushed_at":"2023-11-24T19:05:50.000Z","size":20,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-24T02:36:38.731Z","etag":null,"topics":["avalanche-c-chain","ccip","chainlink","makefile","sepolia","solidity"],"latest_commit_sha":null,"homepage":"","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/santiellena.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-25T22:14:12.000Z","updated_at":"2023-10-29T18:34:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"874464d3-f60f-421a-99a7-a4c699502e8b","html_url":"https://github.com/santiellena/exploring-chainlink-ccip","commit_stats":null,"previous_names":["santiellena/exploring-chainlink-ccip"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santiellena%2Fexploring-chainlink-ccip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santiellena%2Fexploring-chainlink-ccip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santiellena%2Fexploring-chainlink-ccip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santiellena%2Fexploring-chainlink-ccip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/santiellena","download_url":"https://codeload.github.com/santiellena/exploring-chainlink-ccip/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243858891,"owners_count":20359257,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avalanche-c-chain","ccip","chainlink","makefile","sepolia","solidity"],"created_at":"2025-03-16T10:32:55.505Z","updated_at":"2025-03-16T10:33:14.691Z","avatar_url":"https://github.com/santiellena.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg  alt=\"Chainlink Logo\" src=\"https://cryptologos.cc/logos/chainlink-link-logo.png\" style=\"width: 40px;\"\u003e Exploring Chainlink CCIP \n\n## Introduction:\nThe Chainlink Cross-Chain Integration Protocol (CCIP) offers a unified and straightforward platform, allowing dApps and web3 entrepreneurs to confidently fulfill their cross-chain needs.\n\nIn my opinion, the idea of implementing a smart contract as router of the protocol is the most interesting part. As you can see, a router connects the end-user with the protocol and allows end-users to use CCIP by just learning how to intereact with the router contract.\n\n\u003cimg alt=\"CCIP Basic Architecture\" src=\"https://2422224061-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEm7Dwh3rUCIyHWLvZwRo%2Fuploads%2FeBXc5q78HsM8SNOYHUMS%2Fbasic-architecture.png?alt=media\u0026token=bae48b0f-ff55-49b3-857b-d8f35166266e\"\u003e\n\n\n#### Router in depth:\nAs said, the router is the contract responsible for initiating cross-chain interactions. There is one router per chain.\n\nWhen transfering tokens, the router contract routes the instruction to the destination-specific \u003ccode\u003eOnRamp\u003c/code\u003e. The \u003ccode\u003eOnRamp\u003c/code\u003e is a unique contract responsible for validating the incoming data and located within a 'lane' (the onRamp contract is more complex than that, I only intend to give a superficial description so that you can continue reading. A better explanation can be found [here](https://docs.chain.link/ccip/architecture#onramp)).\n\nA 'lane' is an unidirectional path between a source and a destination blockchain.\n\nWhen receiving tokens, the router is the smart contract that sends the tokens or the message to the receiver. The router receives the data from a \u003ccode\u003eOffRamp\u003c/code\u003e contract. The \u003ccode\u003eOffRamp\u003c/code\u003e is a unique contract responsible for verifying the proof provided by the [Executing DON](https://docs.chain.link/ccip/architecture#executing-don) against a committed and blessed [Merkle root](https://en.wikipedia.org/wiki/Merkle_tree).\n\n\n## Faucets:\nIf you want to experiment with CCIP, Chainlink provides a couple of allowed tokens that can be used for testing.\n\nBut first get some Link tokens so you can pay the fees:\n\n1. Go to https://faucets.chain.link/.\n2. In Metamask, select the network where you want to receive testnet LINK.\n3. Click Connect wallet so the faucet app can detect the network and wallet address.\n4. If you want to receive testnet funds at a different address, paste it in the Wallet address section. This field defaults to your connected wallet address.\n5. In the Request type section, select the testnet funds that you want to receive.\n6. Complete the Captcha and click Send request. The funds are transferred from the faucet to the wallet address that you specified.\n\n#\n\nTwo ERC20 test tokens are currently available on each testnet: CCIP-BnM (burn \u0026 mint) and CCIP-LnM (lock \u0026 mint).\n\nAdd CCIP-BnM to you previously connected to Avalanche Fuji wallet and then mint some tokens [here](https://docs.chain.link/ccip/test-tokens#mint-tokens-in-the-documentation)\n\n\n## Getting started:\n\nTo use this code, you need to have installed [foundry](https://github.com/crisgarner/awesome-foundry) \u0026 [npm](https://nodejs.org/en)\n\nTo check if you have them installed: \n\n```shell\n# In case you have them installed you will see the versions\n$ forge --version\n$ npm --version\n\n```\n\nInstall the necessary dependencies:\n\n```shell\n$ make install\n\n```\n\n\n\n## CCIP Send Tokens\n\n### Usage:\n\n#### From Avalanche Fuji to Sepolia:\n\n1) Deploy \u003ccode\u003eCCIPTokenSender.sol\u003c/code\u003e:\n\n\n```shell\n$ make deploy\n\n```\n\n2) Fund \u003ccode\u003eCCIPTokenSender.sol\u003c/code\u003e:\n\n- Open [Metamask](https://metamask.io/) or your wallet of preference\n\n- Send 1 Link (for fees) and the amount of CCIP-BnM you want to send\n\n3) Transfer tokens:\n\nTo continue with this step, first go to the Makefile file and read carefully its comments. Make sure you modify the file before executing any make command.\n\n- First you need to white list the destination chain:\n\n```shell\n$ make whitelist \n\n```\n\n- Then just transfer the tokens\n\n```shell\n$ make transfer\n\n```\n\n4) Check your Wallet on Sepolia network.\n- The tokens will arrive soon. As we are working with CCIP in testnets, transactions are slow.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsantiellena%2Fexploring-chainlink-ccip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsantiellena%2Fexploring-chainlink-ccip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsantiellena%2Fexploring-chainlink-ccip/lists"}