Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CCIP mainnet #1905

Merged
merged 7 commits into from
Apr 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added public/images/ccip/support-manual-exec.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 5 additions & 2 deletions src/content/ccip/best-practices.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ whatsnext: { "Supported networks": "/ccip/supported-networks" }
---

import { Aside } from "@components"
import CcipCommon from "@features/ccip/CcipCommon.astro"

Before you deploy your cross-chain dApps to mainnet, make sure that your dApps follow the best practices in this document. You are responsible for thoroughly reviewing your code and applying best practices to ensure that your cross-chain dApps are secure and reliable. If you have a unique use case for CCIP that might involve additional cross-chain risk, [contact the Chainlink Labs Team](https://chain.link/contact?ref_id=CCIP) before deploying your application to mainnet.
<CcipCommon callout="talkToExpert" />

<Aside type="note" title="Interfaces and Applications">
Chainlink CCIP is a messaging protocol. Third parties may build user interfaces or other applications on top of CCIP.
Expand All @@ -16,6 +17,8 @@ Before you deploy your cross-chain dApps to mainnet, make sure that your dApps f
visit the Chainlink Foundation [Terms of Service](https://chain.link/terms) for more information.
</Aside>

Before you deploy your cross-chain dApps to mainnet, make sure that your dApps follow the best practices in this document. You are responsible for thoroughly reviewing your code and applying best practices to ensure that your cross-chain dApps are secure and reliable. If you have a unique use case for CCIP that might involve additional cross-chain risk, [contact the Chainlink Labs Team](https://chain.link/ccip-contact) before deploying your application to mainnet.

## Verify destination chain

Before calling the router's `ccipSend` [function](/ccip/api-reference/i-router-client#ccipsend), ensure that your code allows users to send CCIP messages to trusted destination chains.
Expand Down Expand Up @@ -73,7 +76,7 @@ Although CCIP has been thoroughly reviewed and audited, inherent risks might sti

## Review and audit your code

Before securing value with contracts that implement CCIP interfaces and routers, ensure that your code is secure and reliable. If you have a unique use case for CCIP that might involve additional cross-chain risk, [contact the Chainlink Labs Team](https://chain.link/contact?ref_id=CCIP) before deploying your application to mainnet.
Before securing value with contracts that implement CCIP interfaces and routers, ensure that your code is secure and reliable. If you have a unique use case for CCIP that might involve additional cross-chain risk, [contact the Chainlink Labs Team](https://chain.link/ccip-contact) before deploying your application to mainnet.

## Soak test your dApps

Expand Down
8 changes: 5 additions & 3 deletions src/content/ccip/concepts/manual-execution.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,9 @@ When manual execution is initiated, a Merkle proof is generated for the message

<br />

1. **If the maximum gas limit is 2M (2,000,000) on mainnet, but it turns out that the destination blockchain requires more than that, will an override of > 2M still work?**
1. **If the maximum gas limit is 3M (3,000,000) on mainnet, but it turns out that the destination blockchain requires more than that, will an override of > 3M still work?**

Yes, but only for this execution. This works because the gas limit for this execution instance isn’t passing through the CCIP validation for the gas limit, for which the CCIP executing DON pays the gas. However, if you consistently need more than 2M for your use case, please reach out to us via this [contact form](https://chain.link/contact?v=Build%20Cross-Chain%20Applications).
Yes, but only for this execution. This works because the gas limit for this execution instance isn’t passing through the CCIP validation for the gas limit, for which the CCIP executing DON pays the gas. However, if you consistently need more than 3M for your use case, please reach out to us via this [contact form](https://chain.link/ccip-contact).

<br />

Expand Down Expand Up @@ -111,4 +111,6 @@ When manual execution is initiated, a Merkle proof is generated for the message

1. **My transaction meets one of the conditions to trigger manual execution, but I do not see this option on the CCIP explorer. How am I supposed to execute this manually?**

This should not happen, but in the unlikely scenario that this does happen, please reach out directly to Chainlink Labs by filling out this [form](https://chainlinkcommunity.typeform.com/ccip-explorer). Make sure to include the CCIP Message ID, your preferred contact details, and the issue you faced in your communication.
This should not happen, but in the unlikely scenario that it does, please submit a support ticket as shown below. Include the CCIP Message ID, your preferred contact details, and a detailed description of the issue you faced. This will help us assist you more effectively.

![CCIP manual execution support ticket](/images/ccip/support-manual-exec.gif)
7 changes: 3 additions & 4 deletions src/content/ccip/examples/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@ whatsnext: { "Supported networks": "/ccip/supported-networks", "Learn CCIP best
---

import { Aside } from "@components"
import CcipCommon from "@features/ccip/CcipCommon.astro"

Several example dApps and tools are available to help you learn about use cases for CCIP.
<CcipCommon callout="talkToExpert" />

<Aside type="note" title="Mainnet Access">
[Apply for Mainnet Early Access](https://chainlinkcommunity.typeform.com/ccip-form?#ref_id=ccip_docs) to get started.
</Aside>
Several example dApps and tools are available to help you learn about use cases for CCIP.

## CCIP Starter Kits

Expand Down
3 changes: 3 additions & 0 deletions src/content/ccip/getting-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ whatsnext:
---

import { CodeSample, ClickToZoom, CopyText, Aside } from "@components"
import CcipCommon from "@features/ccip/CcipCommon.astro"

<CcipCommon callout="talkToExpert" />

A simple use case for Chainlink CCIP is sending data between smart contracts on different blockchains. This guide shows you how to deploy a CCIP sender contract and a CCIP receiver contract to two different blockchains and send data from the sender contract to the receiver contract. You pay the CCIP fees using LINK.

Expand Down
23 changes: 2 additions & 21 deletions src/content/ccip/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,9 @@ whatsnext:
---

import { ClickToZoom, Aside } from "@components"
import CcipCommon from "@features/ccip/CcipCommon.astro"

<Aside type="note" title="Early Access">
<p>
Chainlink CCIP is in the “Early Access” stage of development, which means that Chainlink CCIP currently has
functionality which is under development and may be changed in later versions. There is no guarantee any of the
contemplated features of Chainlink CCIP or the Chainlink Network will be implemented as specified. Chainlink CCIP is
a messaging protocol. Chainlink does not hold or transfer any assets. Please review the{" "}
<a href="https://chain.link/terms">Chainlink Terms of Service</a> which provides important information and
disclosures. By using Chainlink CCIP, you expressly acknowledge and agree to accept these terms.
</p>
[Apply for Mainnet Early Access](https://chainlinkcommunity.typeform.com/ccip-form?#ref_id=ccip_docs) to start building
on mainnet.
</Aside>
<CcipCommon callout="talkToExpert" />

Blockchain interoperability protocols are important for the Web3 ecosystem and traditional systems that need to interact with different blockchains. These protocols are the foundation for building blockchain abstraction layers, allowing traditional backends and dApps to interact with any blockchain network through a single middleware solution. Without a blockchain interoperability protocol, Web2 systems and dApps would need to build separate in-house implementations for each cross-chain interaction that they want to use, which is a time-consuming, resource-intensive, and complex process.

Expand Down Expand Up @@ -78,15 +68,6 @@ Chainlink CCIP enables a variety of use cases:

Read [What Are Cross-Chain Smart Contracts](https://chain.link/education-hub/cross-chain-smart-contracts) to learn about cross-chain smart contracts and examples of use cases they enable.

<Aside type="note" title="Early Access">
Chainlink CCIP is in the "Early Access" stage of development, which means that Chainlink CCIP currently has
functionality which is under development and may be changed in later versions. There is no guarantee any of the
contemplated features of Chainlink CCIP or the Chainlink Network will be implemented as specified. Chainlink CCIP is a
messaging protocol. Chainlink does not hold or transfer any assets. Please review the [Chainlink Terms of
Service](https://chain.link/terms) which provides important information and disclosures. By using Chainlink CCIP, you
expressly acknowledge and agree to accept these terms.
</Aside>

## Supported networks

See the [Supported Networks](/ccip/supported-networks/) page for a list of supported networks, tokens, and contract addresses.
Expand Down
9 changes: 9 additions & 0 deletions src/content/ccip/release-notes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@ title: "Chainlink CCIP Release Notes"

import { Aside } from "@components"

## Chainlink CCIP is GA - 2024-04-24

Chainlink CCIP is now Generally Available (GA) on mainnet and testnet.

To support your development and implementation needs, we encourage you to reach out to our team of experts for guidance and support. For expert advice, visit the [Chainlink CCIP Contact form](https://chain.link/ccip-contact).

Additionally, the [Chainlink CCIP local
simulator](https://github.com/smartcontractkit/chainlink-local) is available to enhance your development workflow with CCIP. This tool allows you to simulate Chainlink CCIP functionality locally within your Hardhat and Foundry projects. The simulator is designed so you can test your contracts locally and transition smoothly to test networks without any modifications.

## Support for WETH transfers and gas limit mainnet increase - 2024-04-11

### WETH and support of _Lock and Unlock_ mechanism
Expand Down
12 changes: 2 additions & 10 deletions src/content/ccip/service-limits.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,13 @@ title: "CCIP Service Limits"
---

import { Aside } from "@components"

<Aside type="note" title="Early Access">
Chainlink CCIP is in the “Early Access” stage of development, which means that Chainlink CCIP currently has
functionality which is under development and may be changed in later versions. There is no guarantee any of the
contemplated features of Chainlink CCIP or the Chainlink Network will be implemented as specified. Chainlink CCIP is a
messaging protocol. Chainlink does not hold or transfer any assets. Please review the [Chainlink Terms of
Service](https://chain.link/terms) which provides important information and disclosures. By using Chainlink CCIP, you
expressly acknowledge and agree to accept these terms.
</Aside>
import CcipCommon from "@features/ccip/CcipCommon.astro"

## Mainnet

<Aside type="note" title="Increase the gas limit">
If you consistently need more than 3M for your use case, please reach out to your Chainlink Labs point of contact or
contact us via this [contact form](https://chain.link/contact?v=Build%20Cross-Chain%20Applications).
contact us via this [contact form](https://chain.link/ccip-contact).
</Aside>

| Item | Description | Limit |
Expand Down
8 changes: 8 additions & 0 deletions src/content/ccip/service-responsibility.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ date: Last Modified
title: "Chainlink CCIP Service Responsibility"
---

import { Aside } from "@components"

<Aside type="note" title="Terms Of Service">
Chainlink does not hold or transfer any assets. Please review the
<a href="https://chain.link/terms">Chainlink Terms of Service</a> which provides important information and disclosures.
By using Chainlink CCIP, you expressly acknowledge and agree to accept these terms.
</Aside>

The Chainlink Cross-Chain Interoperability Protocol (CCIP) is a secure, reliable, and easy-to-use interoperability protocol for building cross-chain applications and services. The use of CCIP involves application developers, blockchain development teams, and Chainlink node operators, among others. These participants share responsibility for ensuring that operation and performance match expectations. Please note that CCIP support of a particular blockchain, application, or token does not constitute endorsement of such blockchain, application, or token.

## Application Developer Responsibilities
Expand Down
17 changes: 1 addition & 16 deletions src/content/ccip/supported-networks/v1_2_0/mainnet.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,7 @@ import Main from "@features/ccip/components/supported-networks/Main.astro"
import { Environment, Version } from "@config/data/ccip"
import CcipCommon from "@features/ccip/CcipCommon.astro"

<Aside type="note" title="Early Access">
<p>
Chainlink CCIP is in the “Early Access” stage of development, which means that Chainlink CCIP currently has
functionality which is under development and may be changed in later versions. There is no guarantee any of the
contemplated features of Chainlink CCIP or the Chainlink Network will be implemented as specified. Chainlink CCIP is
a messaging protocol. Chainlink does not hold or transfer any assets. Please review the{" "}
<a href="https://chain.link/terms">Chainlink Terms of Service</a> which provides important information and
disclosures. By using Chainlink CCIP, you expressly acknowledge and agree to accept these terms.
</p>
[Apply for Mainnet Early Access](https://chainlinkcommunity.typeform.com/ccip-form?#ref_id=ccip_docs) to start building
on mainnet.
</Aside>

<Aside type="caution" title="Deprecation Notice for CCIP v1.0.0">
CCIP v1.0.0 is no longer supported. You must use the router addresses listed on this page.
</Aside>
<CcipCommon callout="talkToExpert" />

<CcipCommon callout="supportedNetworksConcepts" />

Expand Down
2 changes: 2 additions & 0 deletions src/content/ccip/supported-networks/v1_2_0/testnet.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import Main from "@features/ccip/components/supported-networks/Main.astro"
import { Environment, Version } from "@config/data/ccip"
import CcipCommon from "@features/ccip/CcipCommon.astro"

<CcipCommon callout="talkToExpert" />

<CcipCommon callout="supportedNetworksConcepts" />

## Configuration
Expand Down
2 changes: 2 additions & 0 deletions src/content/ccip/tutorials/cross-chain-tokens.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ In this tutorial, you will use Chainlink CCIP to transfer tokens from a smart co

## Tutorial

<CcipCommon callout="useSimulator" />

In this tutorial, you will transfer [CCIP-BnM](/ccip/test-tokens#tokens) tokens from a contract on Avalanche Fuji to an account on Ethereum Sepolia. First, you will pay [CCIP fees in LINK](#transfer-tokens-and-pay-in-link), then you will pay [CCIP fees in native gas](#transfer-tokens-and-pay-in-native). The destination account can be an [EOA (Externally Owned Account)](https://ethereum.org/en/developers/docs/accounts/#types-of-account) or a smart contract. Moreover, the example shows how to transfer CCIP-BnM tokens, but you can re-use the same example to transfer other tokens as long as they are supported for your [lane](/ccip/concepts#lane).

<CodeSample src="samples/CCIP/TokenTransferor.sol" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ This tutorial extends the [programmable token transfers example](/ccip/tutorials

## Tutorial

<CcipCommon callout="useSimulator" />

In this guide, you'll initiate a transaction from a smart contract on _Avalanche Fuji_, sending a _string_ text and CCIP-BnM tokens to another smart contract on _Ethereum Sepolia_ using CCIP. However, a deliberate failure in the processing logic will occur upon reaching the receiver contract. This tutorial will demonstrate a graceful error-handling approach, allowing the contract owner to recover the locked tokens.

<Aside type="note" title="Correctly estimate your gas limit">
Expand Down
2 changes: 2 additions & 0 deletions src/content/ccip/tutorials/programmable-token-transfers.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ In this tutorial, you will use Chainlink CCIP to transfer tokens and arbitrary d

## Tutorial

<CcipCommon callout="useSimulator" />

In this tutorial, you will send a _string_ text and CCIP-BnM tokens between smart contracts on _Avalanche Fuji_ and _Ethereum Sepolia_ using CCIP. First, you will pay [CCIP fees in LINK](#transfer-and-receive-tokens-and-data-and-pay-in-link), then you will pay [CCIP fees in native gas](#transfer-and-receive-tokens-and-data-and-pay-in-native).

<CodeSample src="samples/CCIP/ProgrammableTokenTransfers.sol" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ This tutorial will teach you how to use Chainlink CCIP to send arbitrary data be

## Tutorial

<CcipCommon callout="useSimulator" />

In this tutorial, you will deploy a _message tracker_ contract on the source blockchain (Avalanche Fuji) and an _acknowledger_ on the destination blockchain (Ethereum Sepolia). Throughout the tutorial, you will pay for CCIP fees using LINK tokens. Here is a step-by-step breakdown:

1. **Sending and building a CCIP message:** Initiate and send a message from the _message tracker_ contract on Avalanche Fuji to the _acknowledger_ contract on Ethereum Sepolia. The _message tracker_ contract constructs a CCIP message that encapsulates a text string and establishes a tracking status for this message before sending it off.
Expand Down
2 changes: 2 additions & 0 deletions src/content/ccip/tutorials/send-arbitrary-data.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ In this tutorial, you will use Chainlink CCIP to send data between smart contrac

## Tutorial

<CcipCommon callout="useSimulator" />

In this tutorial, you will send a _string_ text between smart contracts on _Avalanche Fuji_ and _Ethereum Sepolia_ using CCIP. First, you will pay [CCIP fees in LINK](#send-data-and-pay-in-link), then you will pay [CCIP fees in native gas](#send-data-and-pay-in-native).

<CodeSample src="samples/CCIP/Messenger.sol" />
Expand Down
15 changes: 13 additions & 2 deletions src/features/ccip/CcipCommon.astro
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,18 @@ const SupportedNetworksConcepts = await Astro.glob("./Supported-networks-concept
const SupportedNetworksConceptsComponent = SupportedNetworksConcepts[0].Content
const ImportCCIPPackage = await Astro.glob("./ImportCCIPPackage.mdx")
const ImportCCIPPackageComponent = ImportCCIPPackage[0].Content

const TalkToExpert = await Astro.glob("./Talk-Expert.mdx")
const TalkToExpertComponent = TalkToExpert[0].Content
const UseSimulator = await Astro.glob("./Use-Simulator.mdx")
const UseSimulatorComponent = UseSimulator[0].Content
export type Props = {
callout?: "extraArgsCallout" | "thirdPartyApps" | "supportedNetworksConcepts" | "importCCIPPackage"
callout?:
| "extraArgsCallout"
| "thirdPartyApps"
| "supportedNetworksConcepts"
| "importCCIPPackage"
| "talkToExpert"
| "useSimulator"
}
const { callout } = Astro.props as Props
---
Expand All @@ -18,3 +27,5 @@ const { callout } = Astro.props as Props
{callout === "thirdPartyApps" && <ThirdPartyAppsComponent />}
{callout === "supportedNetworksConcepts" && <SupportedNetworksConceptsComponent />}
{callout === "importCCIPPackage" && <ImportCCIPPackageComponent />}
{callout === "talkToExpert" && <TalkToExpertComponent />}
{callout === "useSimulator" && <UseSimulatorComponent />}
7 changes: 7 additions & 0 deletions src/features/ccip/Talk-Expert.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { Aside } from "@components"

<Aside type="note" title="Talk to a CCIP expert">
If you require technical advice or wish to consult on your project's implementation, please contact a CCIP expert. Our
dedicated team is ready to support your projects and ensure their success. For expert guidance, visit the [Chainlink
CCIP Contact form](https://chain.link/ccip-contact).
</Aside>
11 changes: 11 additions & 0 deletions src/features/ccip/Use-Simulator.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Aside } from "@components"

<Aside type="note" title="Optimize your development with the CCIP local simulator">
Enhance your development workflow using the [Chainlink CCIP local
simulator](https://github.com/smartcontractkit/chainlink-local), an installable package designed to simulate Chainlink
CCIP locally within your Hardhat and Foundry projects. It provides a robust smart contracts and scripts suite,
enabling you to build, deploy, and execute CCIP token transfers and arbitrary messages on a local Hardhat or Anvil
development node. With Chainlink Local, you can also work on forked nodes, ensuring a seamless transition of your
contracts to test networks without modifications. Start integrating Chainlink Local today to streamline your
development process and validate your CCIP implementations effectively.
</Aside>
Loading