diff --git a/src/config/sidebar.ts b/src/config/sidebar.ts index 8eadc8ac09f..96a9424eacf 100644 --- a/src/config/sidebar.ts +++ b/src/config/sidebar.ts @@ -854,7 +854,7 @@ export const SIDEBAR: Partial> = { url: "ccip/tutorials/programmable-token-transfers", }, { - title: "Manual execution", + title: "Manual Execution", url: "ccip/tutorials/manual-execution", }, { @@ -886,6 +886,10 @@ export const SIDEBAR: Partial> = { title: "Architecture", url: "ccip/architecture", }, + { + title: "Manual Execution", + url: "ccip/concepts/manual-execution", + }, { title: "Best Practices", url: "ccip/best-practices", diff --git a/src/content/ccip/concepts.mdx b/src/content/ccip/concepts/index.mdx similarity index 100% rename from src/content/ccip/concepts.mdx rename to src/content/ccip/concepts/index.mdx diff --git a/src/content/ccip/concepts/manual-execution.mdx b/src/content/ccip/concepts/manual-execution.mdx new file mode 100644 index 00000000000..5db9036b63a --- /dev/null +++ b/src/content/ccip/concepts/manual-execution.mdx @@ -0,0 +1,14 @@ +--- +section: ccip +date: Last Modified +title: "CCIP Manual Execution" +whatsnext: { "Learn CCIP best practices": "/ccip/best-practices" } +--- + +CCIP messages are eligible for manual execution if either of these conditions is met: if the execution on the receiver contract failed or the CCIP message timed out (the current timeout is set at 8 hours). The latter scenario might occur in extreme network congestion, where CCIP cannot deliver the message within the specified time frame. Consider the following important points: + +- Ineffectiveness of Manual Execution for Business Logic Errors: If the failure is due to a flaw in the receiver contract's business logic, manual execution will not rectify the issue. In our example, the failure is attributed to an insufficient gas limit for message delivery. Therefore, increasing the gas limit would allow for successful manual execution of the message delivery. +- Decoupling CCIP Message Reception and Business Logic: We advise separating the reception of CCIP messages from the core business logic of the contract. Implementing 'escape hatches' or fallback mechanisms is recommended to gracefully manage situations where the business logic encounters issues. To explore this concept further, refer to the [Defensive example](/ccip/tutorials/programmable-token-transfers-defensive). +- Manual Execution by Any Account: Any account can manually execute a CCIP message that is eligible for manual execution, but the executing account must have sufficient native gas tokens (such as ETH on Ethereum or MATIC on Polygon) to cover the gas costs associated with the delivery of the CCIP message. +- Batching Support: In cases where a single transaction includes multiple CCIP messages, the system provides a convenient batching feature. This allows you to manually execute all failed CCIP messages within the transaction collectively rather than addressing each one individually. +- Time Limitations in CCIP Explorer: Currently, the [CCIP explorer](https://ccip.chain.link/) does not support the manual execution of CCIP messages older than 48 hours. Please get in touch with us for assistance if you need to manually execute messages older than 48 hours on mainnets. diff --git a/src/content/ccip/service-limits.mdx b/src/content/ccip/service-limits.mdx index 5baf1e83bd8..cfebeaaf830 100644 --- a/src/content/ccip/service-limits.mdx +++ b/src/content/ccip/service-limits.mdx @@ -22,4 +22,4 @@ Across all networks, CCIP transactions are subject to the following service limi | Maximum message `data` length | `data` payload sent within the [CCIP message](/ccip/api-reference/client#evm2anymessage) | 50 kilobytes | | Message Gas Limit | User specified [gas limit](/ccip/api-reference/client#evmextraargsv1) | 2,000,000 | | Maximum number of tokens | Maximum number of distinct tokens a user can transfer in a single transaction | 1 | -| Timeout | Maximum duration for the execution of a [CCIP message](/ccip/api-reference/client#evm2anymessage) | 24 hours | +| Timeout | Maximum duration for the execution of a [CCIP message](/ccip/api-reference/client#evm2anymessage) | 8 hours | diff --git a/src/content/ccip/tutorials/manual-execution.mdx b/src/content/ccip/tutorials/manual-execution.mdx index 68746886a21..b71146e9ae6 100644 --- a/src/content/ccip/tutorials/manual-execution.mdx +++ b/src/content/ccip/tutorials/manual-execution.mdx @@ -21,28 +21,6 @@ This tutorial is similar to the [programmable token transfers example](/ccip/tut 1. Manual Execution via CCIP Explorer: Using the [CCIP explorer](https://ccip.chain.link/), you will override the previously set gas limit and retry the execution. This process is referred to as _manual execution_. 1. Confirm Successful Execution: After manually executing the transaction with an adequate gas limit, you'll see that the status of your CCIP message is updated to successful. This indicates that the tokens and data were correctly transferred to the receiver contract. - - - - - - ## Before you begin 1. You should understand how to write, compile, deploy, and fund a smart contract. If you need to brush up on the basics, read this [tutorial](/quickstarts/deploy-your-first-contract), which will guide you through using the [Solidity programming language](https://soliditylang.org/), interacting with the [MetaMask wallet](https://metamask.io) and working within the [Remix Development Environment](https://remix.ethereum.org/).