Skip to content

Sentence case; move one CCIP page in nav #1814

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

Merged
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
8 changes: 4 additions & 4 deletions src/config/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -856,6 +856,10 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
},
],
},
{
title: "Service Limits",
url: "ccip/service-limits",
},
{
title: "Service Responsibility",
url: "ccip/service-responsibility",
Expand Down Expand Up @@ -930,10 +934,6 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
title: "Best Practices",
url: "ccip/best-practices",
},
{
title: "Service Limits",
url: "ccip/service-limits",
},
],
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ import { ClickToZoom } from "@components"

This page describes how data aggregation is applied to produce Chainlink Data Feeds and provides more insight as to how Data Feeds are updated.

## Data Aggregation
## Data aggregation

Each data feed is updated by multiple, independent Chainlink oracle operators. The [AccessControlledOffchainAggregator](https://github.com/smartcontractkit/libocr/blob/master/contract/AccessControlledOffchainAggregator.sol) aggregates the data onchain.

Offchain Reporting (OCR) further enhances the aggregation process. To learn more about OCR and how it works, see the [Offchain Reporting](/architecture-overview/off-chain-reporting) page.

<ClickToZoom src="/images/contract-devs/price-aggr.png" />

## Shared Data Resource
## Shared data resource

Each data feed is built and funded by the community of users who rely on accurate, up-to-date data in their smart contracts. As more users rely on and contribute to a data feed, the quality of the data feed improves. For this reason, each data feed has its own properties depending on the needs of its community of users.

Expand Down
6 changes: 3 additions & 3 deletions src/content/architecture-overview/architecture-overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,21 @@ metadata:
title: "Data Feeds Architecture"
---

## Basic Request Model
## Basic request model

Chainlink connects smart contracts with external data using its decentralized oracle network. Chainlink API requests are handled 1:1 by an oracle.

The [Basic Request Model](/architecture-overview/architecture-request-model) describes the onchain architecture of requesting data from a single oracle source.

To learn how to make a GET request using a single oracle, see [Make a GET Request](/any-api/get-request/introduction).

## Decentralized Data Model
## Decentralized data model

For a more robust and trustworthy answer, you can aggregate data from many oracles. With onchain aggregation, data is aggregated from a decentralized network of independent oracle nodes. This architecture is applied to Chainlink Data Feeds, which can aggregate data such as asset price data.

The [Decentralized Data Model](/architecture-overview/architecture-decentralized-model) describes how data is aggregated, and how consumer contracts can retrieve this data.

## Offchain Reporting
## Offchain reporting

Offchain Reporting (OCR) is an improvement on the decentralization and scalability of Chainlink networks. With our Offchain Reporting aggregators, all nodes communicate using a peer to peer network. During the communication process, a lightweight consensus algorithm runs where each node reports its price observation and signs it. A single aggregate transaction is then transmitted, which saves a significant amount of gas.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ metadata:

import { ClickToZoom } from "@components"

## Contracts Overview
## Contracts overview

All source code is open source and available in the [Chainlink Github repository](https://github.com/smartcontractkit/chainlink).

Expand Down Expand Up @@ -54,7 +54,7 @@ Oracle contracts are responsible for handling onchain requests made through the

For fulfillment, the oracle contract has a `fulfillOracleRequest` function which is used by the node to fulfill a request once it has the result of the job. This function returns the result to the `ChainlinkClient` using the callback function defined in the original request.

### Offchain Oracle Node
### Offchain oracle node

The offchain oracle node is responsible for listening for events emitted by its corresponding onchain smart contract. Once it detects an `OracleRequest` event, it uses the data emitted to perform a job.

Expand Down
8 changes: 4 additions & 4 deletions src/content/ccip/architecture.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { Aside, ClickToZoom } from "@components"
page.
</Aside>

## High-Level Architecture
## High-level architecture

Below is a diagram displaying the basic architecture of CCIP. Routers are smart contracts that provide a simple and consistent interface for users. Users can interact with routers to:

Expand Down Expand Up @@ -45,7 +45,7 @@ CCIP enables a _sender_ on a _source blockchain_ to send a _message_ to a _recei
| Receiver | A smart contract or an EOA. **Note**: An EOA cannot receive arbitrary data. It can only receive tokens. |
| Destination Blockchain | The blockchain the receiver resides on. |

## Detailed Architecture
## Detailed architecture

The figure below outlines the different components involved in a cross-chain transaction:

Expand Down Expand Up @@ -112,7 +112,7 @@ Token pools provide rate limiting, which is a security feature enabling token is

The Risk Management contract maintains the list of Risk Management node addresses that are allowed to bless or curse. The contract also holds the quorum logic for blessing a committed Merkle Root and cursing CCIP on a destination blockchain. Read the [Risk Management Network Concepts](/ccip/concepts#risk-management-network) section to learn more.

### Offchain Components
### Offchain components

#### Committing DON

Expand Down Expand Up @@ -164,7 +164,7 @@ Each [lane](/ccip/concepts#lane) also has an aggregate rate limit that limits th

Consider an example where a lane has a maximum capacity of 100,000 USD, a refill rate of 167 USD per second, and several token transfers with a total value of 60,000 USD have been executed. In that example, the remaining available capacity is 40,000 USD. If a user intends to transfer tokens equating to 50,000 USD, they must wait at least 60 seconds for capacity to refill the additional 10,000 USD that is required. The maximum throughput in USD value on the lane is 100,000 USD every 10 minutes.

## CCIP Execution latency
## CCIP execution latency

Chainlink CCIP has been purposely designed to take a security-first approach to minimize the risk of block reorgs on the source blockchain. The end-to-end transaction time of a CCIP cross-chain transaction largely depends on the time it takes for the transaction on the source chain to reach [finality](/ccip/concepts#finality). The time to reach finality varies by blockchain. For example, on Ethereum, it takes about [15 minutes for a block to be finalized](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/#finality). When cross-chain transactions are initiated from a chain with faster finality, such as Avalanche, which has a [time-to-finality of around one second](https://support.avax.network/en/articles/5325234-what-is-transactional-finality), the end-to-end transaction time is faster.

Expand Down
6 changes: 3 additions & 3 deletions src/content/ccip/concepts/manual-execution.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -64,17 +64,17 @@ Depending on the situation, you can take one of the following steps:

When manual execution is initiated, a Merkle proof is generated for the message to be executed. During execution, the CCIP explorer submits the Merkle proof and the new gas limit (if the initial failure was due to a low gas limit). This Merkle proof is verified by the [OffRamp contract](/ccip/architecture#offramp) against the Merkle root in the [CommitStore contract](/ccip/architecture#commit-store), and that was blessed by the [Risk Management Network](/ccip/architecture#risk-management-network). This mirrors the automated execution performed by the [CCIP Executing DON](/ccip/architecture#executing-don), with the addition that the execution is resubmitted using the gas limit you provide.

## Frequently Asked Questions
## Frequently asked questions

1. **Can anyone execute a transaction on the CCIP explorer even if they are not the initiator of the transaction?**

Yes, any EOA can manually execute a CCIP message that is eligible for manual execution. However, 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.

<br />

1. **If a user sends multiple messages and the first message isnt successfully delivered and goes into a _manual execution_ mode, does that mean all subsequent messages from the user will also be stuck?**
1. **If a user sends multiple messages and the first message isn't successfully delivered and goes into a _manual execution_ mode, does that mean all subsequent messages from the user will also be stuck?**

It depends. If a message goes into manual execution mode due to receiver errors (unhandled exceptions or gas limit issues), subsequent messages dont get automatically blocked, unless they would encounter the same error. However, suppose a message goes into manual execution mode after the Smart Execution time window expires (currently 8 hours). In that case, subsequent messages must wait for the first message to be processed to maintain the default sequence.
It depends. If a message goes into manual execution mode due to receiver errors (unhandled exceptions or gas limit issues), subsequent messages don't get automatically blocked, unless they would encounter the same error. However, suppose a message goes into manual execution mode after the Smart Execution time window expires (currently 8 hours). In that case, subsequent messages must wait for the first message to be processed to maintain the default sequence.

<br />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ As with all smart contract testing, it is important to test the boundaries of yo

Test all of your mission-critical contracts, and stress-test the contract to confirm the performance and correct operation of your use case under load and adversarial conditions. The Chainlink Automation Network will continue to operate under stress, but so should your contract. For a list of supported testnet blockchains, please review the [supported networks page](/chainlink-automation/overview/supported-networks).

### Using ERC-677 Tokens
### Using ERC-677 tokens

For registration on Mainnet, you need ERC-677 LINK. Many token bridges give you ERC-20 LINK tokens. Use PegSwap to [convert Chainlink tokens (LINK) to be ERC-677 compatible](https://pegswap.chain.link/). To register on a supported testnet, get [LINK](/resources/link-token-contracts) for the testnet that you want to use from our faucet.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Before you deploy contracts to use with Chainlink Automation, read the [Best Pra

</Aside>

## Automation Compatible Contracts
## Automation compatible contracts

A contract is Automation-compatible when it follows a specified interface that allows the Chainlink Automation Network to determine if, when, and how the contract should be automated.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,4 @@ In this example the total gas used by each `performUpkeep()` function was 133,46

## Conclusion

Using Chainlink Automation efficiently not only allows you to reduce the gas fees, but also keeps them within predictable limits. Thats the reason why [several Defi protocols](https://chainlinktoday.com/prominent-founders-examine-chainlink-keepers-role-in-defis-evolution/) outsource their maintenance tasks to Chainlink Automation.
Using Chainlink Automation efficiently not only allows you to reduce the gas fees, but also keeps them within predictable limits. That's the reason why [several Defi protocols](https://chainlinktoday.com/prominent-founders-examine-chainlink-keepers-role-in-defis-evolution/) outsource their maintenance tasks to Chainlink Automation.
2 changes: 1 addition & 1 deletion src/content/chainlink-automation/guides/forwarder.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ To make this work you will need to:
- Create `setForwarder` function so you can update the `forwarder` address
- After registration run `setForwarder` with the forwarder address in your UI, or programmatically fetch it using `registry.getForwarder(upkeepID)` using the Registry interface.

## Code Example
## Code example

The code sample below uses the Forwarder:

Expand Down
12 changes: 6 additions & 6 deletions src/content/chainlink-automation/guides/job-scheduler.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,25 +28,25 @@ In the [Chainlink Automation App](https://automation.chain.link/), click the blu

<ClickToZoom src="/images/automation/auto-ui-home.png" />

### Connecting your Wallet
### Connecting your wallet

If you do not already have a wallet connected with the Chainlink Automation network, the interface will prompt you to do so. Click the **Connect Wallet** button and follow the remaining prompts to connect your wallet to one of the [Automation supported blockchain networks](/chainlink-automation/overview/supported-networks).

<ClickToZoom src="/images/automation/auto-ui-wallet.png" />

## Trigger Selection
## Trigger selection

Select **Time-based** trigger.

<ClickToZoom src="/images/automation/ui_select_trigger.png" />

## Using Time-Based Triggers
## Using time-based triggers

When you select the time-based trigger, you are prompted to enter a _contract address_. Provide the address of the contract you want to automate. If you did not verify the contract on chain, you will need to paste the [Application Binary Interface](https://docs.soliditylang.org/en/develop/abi-spec.html) (ABI) of the deployed contract into the corresponding text box. Select the function name that you want to execute and provide any static inputs. If you want to use dynamic inputs please see [Custom logic Upkeeps](/chainlink-automation/guides/register-upkeep)

<ClickToZoom src="/images/automation/automation-time-based-trigger.png" />

### Specifying the Time Schedule
### Specifying the time schedule

After you have successfully entered your contract address and ABI, specify your time schedule in the form of a [CRON expression](https://en.wikipedia.org/wiki/Cron). CRON expressions provide a shorthand way of creating a time schedule. You can use the provided example buttons in the Automation app to experiment with different schedules. Then, create your own time schedule.

Expand Down Expand Up @@ -80,7 +80,7 @@ After entering your CRON expression, click **Next**.

<ClickToZoom src="/images/automation/automation-cron-expression.png" />

## Entering Upkeep Details
## Entering upkeep details

Provide the following information in the Automation app:

Expand All @@ -107,7 +107,7 @@ Provide the following information in the Automation app:

<ClickToZoom src="/images/automation/automation-upkeep-details.png" />

## Complete Upkeep Registration
## Complete upkeep registration

Click **Register upkeep** and confirm the transaction in MetaMask.
![Upkeep Registration Success Message](/images/automation/automation-registration-submitted.png)
Expand Down
14 changes: 7 additions & 7 deletions src/content/chainlink-automation/guides/log-trigger.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Create powerful smart contracts that use log data as both trigger and input. Thi
your upkeep on a testnet before deploying it to a mainnet.
</Aside>

## Emit a Log
## Emit a log

1. Open `CountEmitLog.sol` in Remix. This contract contains an event `WantsToCount` that keeps track of the address of the message sender. The function `emitCountLog` emits this event.

Expand Down Expand Up @@ -60,19 +60,19 @@ Create powerful smart contracts that use log data as both trigger and input. Thi

<ClickToZoom src="/images/automation/auto-ui-home.png" />

### Connecting your Wallet
### Connecting your wallet

If you do not already have a wallet connected with the Chainlink Automation network, the interface will prompt you to do so. Click the **Connect Wallet** button and follow the remaining prompts to connect your wallet to one of the [Automation supported blockchain networks](/chainlink-automation/overview/supported-networks).

<ClickToZoom src="/images/automation/auto-ui-wallet.png" />

## Trigger Selection
## Trigger selection

Select **Log Trigger**.

<ClickToZoom src="/images/automation/ui_select_trigger.png" />

## Using Log Triggers
## Using log triggers

<Aside type="tip" title="Reorg protection">
Your upkeeps will be protected against logs that are emitted during a reorg.
Expand All @@ -94,7 +94,7 @@ Select **Log Trigger**.

<ClickToZoom src="/images/automation/log_trig_3_logsig_filter_populated.png" />

## Entering Upkeep Details
## Entering upkeep details

Provide the following information in the Automation app:

Expand Down Expand Up @@ -125,7 +125,7 @@ Provide the following information in the Automation app:
- **Check data**: Optional input field that you may use depending on whether you are using it in your contract.
- **Your email address (optional)**: This email address will be used to send you an email notification when your upkeep is underfunded.

## Complete Upkeep Registration
## Complete upkeep registration

Click **Register upkeep** and confirm the transaction in MetaMask.
![Upkeep Registration Success Message](/images/automation/automation-registration-submitted.png)
Expand All @@ -134,6 +134,6 @@ Your upkeeps will be displayed in your list of **Active Upkeeps**. You must moni

<ClickToZoom src="/images/automation/log-trig-config.png" />

## Performing Upkeep
## Performing upkeep

Navigate back to the Etherscan page for `CountEmitLog.sol`. Under _Write Contract_, click the button to **emitCountLog**. Refresh the upkeep details page. You may have to wait a few moments. Under _History_, you should see the upkeep has been performed.
4 changes: 2 additions & 2 deletions src/content/chainlink-automation/guides/manage-upkeeps.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { Aside } from "@components"

Manage your Upkeeps to get the best performance.

## Fund your Upkeep
## Fund your upkeep

You must monitor the balance of your Upkeep. If the Upkeep LINK balance drops below the [minimum balance](/chainlink-automation/overview/automation-economics#minimum-balance), the Chainlink Automation Network will not perform the Upkeep.

Expand All @@ -39,7 +39,7 @@ Follow these steps to fund your Upkeep:
1. **Receive a success message** and verify that the funds were added to the Upkeep
![Funds Added Successful Message](/images/automation/automation-add-funds.png)

## Maintain a Minimum Balance
## Maintain a minimum balance

Each Upkeep has a [minimum balance](/chainlink-automation/overview/automation-economics#minimum-balance) to ensure that an Upkeeps will still run should a sudden spike occur. If your Upkeep LINK balance drops below this amount, the Upkeep will not be performed.

Expand Down
10 changes: 5 additions & 5 deletions src/content/chainlink-automation/guides/register-upkeep.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -36,25 +36,25 @@ Create powerful automation for your smart contract that leverages custom logic t

<ClickToZoom src="/images/automation/auto-ui-home.png" />

### Connecting your Wallet
### Connecting your wallet

If you do not already have a wallet connected with the Chainlink Automation network, the interface will prompt you to do so. Click the **Connect Wallet** button and follow the remaining prompts to connect your wallet to one of the [Automation supported blockchain networks](/chainlink-automation/overview/supported-networks).

<ClickToZoom src="/images/automation/auto-ui-wallet.png" />

## Trigger Selection
## Trigger selection

Select **Custom Logic** trigger.

{" "}

<ClickToZoom src="/images/automation/ui_select_trigger.png" />

## Using Custom Logic Triggers
## Using custom logic triggers

Provide the address of your [compatible contract](/chainlink-automation/guides/compatible-contracts). You do not need to verify the contract onchain, but it must be [compatible](/chainlink-automation/guides/compatible-contracts) with the `AutomationCompatibleInterface` contract.

## Entering Upkeep Details
## Entering upkeep details

Provide the following information in the Automation app:

Expand Down Expand Up @@ -84,7 +84,7 @@ Provide the following information in the Automation app:
- **Check data**: This field is provided as an input for when your `checkUpkeep` function is simulated. Either leave this field blank or specify a hexadecimal value starting with `0x`. To learn how to make flexible upkeeps using `checkData`, see the [Flexible Upkeeps](/chainlink-automation/guides/flexible-upkeeps) guide.
- **Your email address (optional)**: This email address will be used to send you an email notification when your upkeep is underfunded.

## Complete Upkeep Registration
## Complete upkeep registration

Click **Register upkeep** and confirm the transaction in MetaMask.
![Upkeep Registration Success Message](/images/automation/automation-registration-submitted.png)
Expand Down
Loading