From 76a549e2cfb73fad90c40e0b2bd288b126c4d611 Mon Sep 17 00:00:00 2001 From: Thomas Hodges Date: Fri, 2 Oct 2026 09:47:03 -0500 Subject: [PATCH 1/2] Point General docs at current products The architecture page now leads with Data Feeds, Offchain Reporting, and CRE. The old one-oracle request page stays at the same URL and leaves the product menus. Broken links now name the page they open. The starter-kit page keeps Hardhat, Foundry, Anchor, and Apeworx. The bridge page opens with CCIP. Hackathon Resources and Developer Communications leave the product menus. Getting Help stays. The old glossary stays at its URL and asks crawlers not to index it. --- astro.config.ts | 5 + src/components/HeadSEO.astro | 2 +- src/config/sidebar.ts | 142 ++--------------- src/content.config.ts | 1 + src/content/any-api/find-oracle.mdx | 2 +- .../examples/existing-job-request.mdx | 2 +- .../any-api/get-request/introduction.mdx | 2 +- src/content/any-api/getting-started.mdx | 4 +- src/content/any-api/introduction.mdx | 18 +-- .../architecture-overview.mdx | 23 +-- .../architecture-request-model.mdx | 13 +- .../architecture-overview/llms-full.txt | 28 ++-- .../external-initiators-in-nodes.mdx | 5 +- .../external-initiators-introduction.mdx | 5 +- .../job-specs/direct-request-existing-job.mdx | 2 +- src/content/chainlink-nodes/llms-full.txt | 144 +++++++----------- .../chainlink-nodes/oracle-jobs/all-tasks.mdx | 2 +- .../chainlink-nodes/oracle-jobs/tasks.mdx | 2 +- .../resources/best-security-practices.mdx | 15 +- .../connecting-to-a-remote-database.mdx | 2 +- .../evm-performance-configuration.mdx | 105 +++++-------- .../performing-system-maintenance.mdx | 2 +- .../resources/run-an-ethereum-client.mdx | 2 +- .../v1/fulfilling-requests.mdx | 4 +- src/content/chainlink-nodes/v1/index.mdx | 4 +- src/content/data-feeds/llms-full.txt | 4 +- src/content/data-feeds/smartdata/index.mdx | 4 +- src/content/resources/bridge-risks.mdx | 2 +- .../create-a-chainlinked-project.mdx | 38 ++--- src/content/resources/glossary.mdx | 12 +- src/content/resources/hackathon-resources.mdx | 6 +- src/content/resources/llms-full.txt | 49 +++--- src/pages/chainlink-nodes.astro | 7 +- src/pages/search-index.astro | 2 +- 34 files changed, 255 insertions(+), 405 deletions(-) diff --git a/astro.config.ts b/astro.config.ts index a9944ea59a8..a3a41126569 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -106,6 +106,11 @@ export default defineConfig({ return false } + // Old v1 glossary. The URL stays. It is not a current product page. + if (cleanPath === "/resources/glossary") { + return false + } + return !redirectSources.has(cleanPath) }, serialize(item) { diff --git a/src/components/HeadSEO.astro b/src/components/HeadSEO.astro index 7fe67836a6d..5297142142a 100644 --- a/src/components/HeadSEO.astro +++ b/src/components/HeadSEO.astro @@ -116,7 +116,7 @@ const structuredDataObjects = diff --git a/src/config/sidebar.ts b/src/config/sidebar.ts index 7967f18d647..9d7fa01622a 100644 --- a/src/config/sidebar.ts +++ b/src/config/sidebar.ts @@ -1536,10 +1536,6 @@ export const SIDEBAR_WITH_SUNSET_PRODUCTS: Partial + This page describes the old basic request model. One contract calls one oracle. The URL stays so existing contracts + can still be read. Do not use this model for a new project. Use [Data Feeds](/data-feeds/getting-started), [Offchain + Reporting](/architecture-overview/off-chain-reporting), or [CRE](/cre/overview). + ## Contracts overview diff --git a/src/content/architecture-overview/llms-full.txt b/src/content/architecture-overview/llms-full.txt index ac6e998792a..d05fad52bef 100644 --- a/src/content/architecture-overview/llms-full.txt +++ b/src/content/architecture-overview/llms-full.txt @@ -65,31 +65,37 @@ Aggregators receive updates from the oracle network only when the **Deviation Th # Data Feeds Architecture Source: https://docs.chain.link/architecture-overview/architecture-overview -## Basic request model +Chainlink Data Feeds, Offchain Reporting (OCR), and the Chainlink Runtime Environment (CRE) are the current ways to bring data and computation to a smart contract. -Chainlink connects smart contracts with external data using its decentralized oracle network. Chainlink API requests are handled 1:1 by an oracle. +## Data Feeds -The [Basic Request Model](/architecture-overview/architecture-request-model) describes the onchain architecture of requesting data from a single oracle source. +A Chainlink Data Feed aggregates answers from many independent oracle nodes. Your contract reads that one aggregated answer. The [Decentralized Data Model](/architecture-overview/architecture-decentralized-model) describes how the feed is updated and how a consumer contract reads it. -To learn how to make a GET request using a single oracle, see [Make a GET Request](/any-api/get-request/introduction). +Start with [Data Feeds](/data-feeds/getting-started). -## Decentralized data model +## Offchain Reporting -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. +Offchain Reporting (OCR) is how those nodes agree. Each node reports its observation and signs it. The nodes then submit one aggregate transaction. The report is checked onchain against the quorum signatures. Read [Offchain Reporting](/architecture-overview/off-chain-reporting) for the protocol. -The [Decentralized Data Model](/architecture-overview/architecture-decentralized-model) describes how data is aggregated, and how consumer contracts can retrieve this data. +## Chainlink Runtime Environment -## Offchain reporting +[CRE](/cre/overview) is the orchestration layer for new multi-step work. You write a workflow with the CRE SDK in Go or TypeScript. A workflow DON runs it. The workflow can call other DONs to fetch offchain data or to write onchain. Start with the [CRE getting started guide](/cre/getting-started/overview). -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. +## Basic request model -To learn more about OCR and how it works, see the [Offchain Reporting](/architecture-overview/off-chain-reporting) page. +The [Basic Request Model](/architecture-overview/architecture-request-model) is the old path: one contract, one oracle, and one request. That page stays at the same URL so existing contracts can still be read. It is not in the product navigation. Do not use it for a new project. --- -# Basic Request Model +# Basic Request Model (historical) Source: https://docs.chain.link/architecture-overview/architecture-request-model +> **CAUTION: Historical** +> +> This page describes the old basic request model. One contract calls one oracle. The URL stays so existing contracts +> can still be read. Do not use this model for a new project. Use [Data Feeds](/data-feeds/getting-started), [Offchain +> Reporting](/architecture-overview/off-chain-reporting), or [CRE](/cre/overview). + ## Contracts overview All source code is open source and available in the [Chainlink Github repository](https://github.com/smartcontractkit/chainlink). diff --git a/src/content/chainlink-nodes/external-initiators/external-initiators-in-nodes.mdx b/src/content/chainlink-nodes/external-initiators/external-initiators-in-nodes.mdx index a41f0631b84..eac37fdff68 100644 --- a/src/content/chainlink-nodes/external-initiators/external-initiators-in-nodes.mdx +++ b/src/content/chainlink-nodes/external-initiators/external-initiators-in-nodes.mdx @@ -7,8 +7,9 @@ title: "Adding External Initiators to Nodes" import { Aside } from "@components" ## Creating an external initiator diff --git a/src/content/chainlink-nodes/external-initiators/external-initiators-introduction.mdx b/src/content/chainlink-nodes/external-initiators/external-initiators-introduction.mdx index 6a20e1f5961..fd0852c6cac 100644 --- a/src/content/chainlink-nodes/external-initiators/external-initiators-introduction.mdx +++ b/src/content/chainlink-nodes/external-initiators/external-initiators-introduction.mdx @@ -19,8 +19,9 @@ External initiators allow jobs in a node to be initiated depending on some exter Initiator Bridges handle the authentication to and from the External Initiator and where to send the messages. When creating a Bridge two parameters are required: diff --git a/src/content/chainlink-nodes/job-specs/direct-request-existing-job.mdx b/src/content/chainlink-nodes/job-specs/direct-request-existing-job.mdx index a64ee1bc44c..4102046fce6 100644 --- a/src/content/chainlink-nodes/job-specs/direct-request-existing-job.mdx +++ b/src/content/chainlink-nodes/job-specs/direct-request-existing-job.mdx @@ -6,7 +6,7 @@ title: "Existing Job Example specs" This is an example v2 (TOML) job spec for returning gas price using [etherscan](https://docs.etherscan.io/api-endpoints/gas-tracker#get-gas-oracle) in one Chainlink API Call. Note that the job : -- Uses an [external adapter](/chainlink-nodes/external-adapters/external-adapters) to consume the etherscan API: [EtherScan External Adapter](https://github.com/smartcontractkit/external-adapters-js/tree/develop/packages/sources/etherscan). Note that this is done using the [bridge](/chainlink-nodes/oracle-jobs/all-tasks/#bridge-task) task: `type="bridge" name="etherscan"`. +- Uses an [external adapter](https://github.com/smartcontractkit/external-adapters-js) to consume the etherscan API: [EtherScan External Adapter](https://github.com/smartcontractkit/external-adapters-js/tree/develop/packages/sources/etherscan). Note that this is done using the [bridge](/chainlink-nodes/oracle-jobs/all-tasks/#bridge-task) task: `type="bridge" name="etherscan"`. - Calls the `fulfillOracleRequest2` function. If you are a node operator, use an [Operator contract](https://github.com/smartcontractkit/chainlink/blob/contracts-v1.3.0/contracts/src/v0.8/operatorforwarder/Operator.sol) with this job. To test this job spec from a smart contract, see this [Example](/any-api/get-request/examples/existing-job-request). diff --git a/src/content/chainlink-nodes/llms-full.txt b/src/content/chainlink-nodes/llms-full.txt index 460f32354a0..91f64f796fe 100644 --- a/src/content/chainlink-nodes/llms-full.txt +++ b/src/content/chainlink-nodes/llms-full.txt @@ -894,8 +894,9 @@ Source: https://docs.chain.link/chainlink-nodes/external-initiators/external-ini > **NOTE** > -> External initiators are disabled on nodes by default. Set the `FEATURE_EXTERNAL_INITIATORS=true` [configuration -> variable](/chainlink-nodes/v1/configuration) to enable this feature. +> External initiators are disabled on nodes by default. Set +> [JobPipeline.ExternalInitiatorsEnabled](/chainlink-nodes/v1/node-config#externalinitiatorsenabled) to `true` to enable +> this feature. ## Creating an external initiator @@ -1019,8 +1020,9 @@ External initiators allow jobs in a node to be initiated depending on some exter > **NOTE** > -> External initiators are disabled on nodes by default. Set the `FEATURE_EXTERNAL_INITIATORS=true` [configuration -> variable](/chainlink-nodes/v1/configuration) to enable this feature. +> External initiators are disabled on nodes by default. Set +> [JobPipeline.ExternalInitiatorsEnabled](/chainlink-nodes/v1/node-config#externalinitiatorsenabled) to `true` to enable +> this feature. Initiator Bridges handle the authentication to and from the External Initiator and where to send the messages. When creating a Bridge two parameters are required: @@ -1041,7 +1043,7 @@ Source: https://docs.chain.link/chainlink-nodes/job-specs/direct-request-existin This is an example v2 (TOML) job spec for returning gas price using [etherscan](https://docs.etherscan.io/api-endpoints/gas-tracker#get-gas-oracle) in one Chainlink API Call. Note that the job : -- Uses an [external adapter](/chainlink-nodes/external-adapters/external-adapters) to consume the etherscan API: [EtherScan External Adapter](https://github.com/smartcontractkit/external-adapters-js/tree/develop/packages/sources/etherscan). Note that this is done using the [bridge](/chainlink-nodes/oracle-jobs/all-tasks/#bridge-task) task: `type="bridge" name="etherscan"`. +- Uses an [external adapter](https://github.com/smartcontractkit/external-adapters-js) to consume the etherscan API: [EtherScan External Adapter](https://github.com/smartcontractkit/external-adapters-js/tree/develop/packages/sources/etherscan). Note that this is done using the [bridge](/chainlink-nodes/oracle-jobs/all-tasks/#bridge-task) task: `type="bridge" name="etherscan"`. - Calls the `fulfillOracleRequest2` function. If you are a node operator, use an [Operator contract](https://github.com/smartcontractkit/chainlink/blob/contracts-v1.3.0/contracts/src/v0.8/operatorforwarder/Operator.sol) with this job. To test this job spec from a smart contract, see this [Example](/any-api/get-request/examples/existing-job-request). @@ -1938,7 +1940,7 @@ Given the input string "Hello, playground", the task will return "SGVsbG8sIHBsYX ## Bridge task -Bridge tasks make HTTP POST requests to pre-configured URLs. Bridges can be configured via the UI or the CLI, and are referred to by a simple user-specified name. This is the way that most jobs interact with [External Adapters](/chainlink-nodes/external-adapters/external-adapters). +Bridge tasks make HTTP POST requests to pre-configured URLs. Bridges can be configured via the UI or the CLI, and are referred to by a simple user-specified name. This is the way that most jobs interact with an adapter from the [external adapters repository](https://github.com/smartcontractkit/external-adapters-js). **Parameters** @@ -2999,7 +3001,7 @@ Source: https://docs.chain.link/chainlink-nodes/oracle-jobs/tasks Tasks are a replacement for core adapters that is more flexible. Tasks can be composed in arbitrary order into [pipelines](#writing-pipelines). Pipelines consist of one or more threads of execution where tasks are executed in a well-defined order. -You can use Chainlink's [built-in tasks](/chainlink-nodes/oracle-jobs/all-tasks), or you can create your own [external adapters](/chainlink-nodes/external-adapters/external-adapters) for tasks which are accessed through a `bridge`. +You can use Chainlink's [built-in tasks](/chainlink-nodes/oracle-jobs/all-tasks), or you can create your own [external adapters](https://github.com/smartcontractkit/external-adapters-js) for tasks which are accessed through a `bridge`. ## Shared attributes @@ -3101,8 +3103,7 @@ To be proactive in detecting any issues before or when they occur, active monito - Ethereum http and websocket ports to be open and responsive. (Usually: 8545 & 8546) - Ethereum client disk, RAM and CPU usage. -Monitoring can be set up from the Docker container's output and fed into most major logging providers. For example, you can use Docker's docs to set up the logging driver for [Amazon CloudWatch](https://docs.docker.com/config/containers/logging/awslogs/) and [Google Cloud Logging](https://docs.docker.com/config/containers/logging/gcplogs/). You will want to set the [ -JSON_CONSOLE](/chainlink-nodes/v1/configuration) configuration variable to `true` so that the output of the container is JSON-formatted for logging. +Monitoring can be set up from the Docker container's output and fed into most major logging providers. For example, you can use Docker's docs to set up the logging driver for [Amazon CloudWatch](https://docs.docker.com/config/containers/logging/awslogs/) and [Google Cloud Logging](https://docs.docker.com/config/containers/logging/gcplogs/). You will want to set [Log.JSONConsole](/chainlink-nodes/v1/node-config#jsonconsole) to `true` so that the output of the container is JSON-formatted for logging. ## Frequent updates @@ -3117,14 +3118,14 @@ The following are suggestions for job specifications and configuration settings [Job Specifications](/chainlink-nodes/oracle-jobs/jobs): - Include the address of your oracle contract address for all RunLog initiated jobs, as shown in the [Fulfilling Requests](/chainlink-nodes/v1/fulfilling-requests/#add-a-job-to-the-node) guide. -- Override the global `MIN_INCOMING_CONFIRMATIONS` config by setting a `confirmations` field in jobs which perform offchain payments to allow for greater security by making the node ensure the transaction is still valid after X blocks. +- Override the global `EVM.MinIncomingConfirmations` config by setting a `confirmations` field in jobs which perform offchain payments to allow for greater security by making the node ensure the transaction is still valid after X blocks. -[Configuring Chainlink Nodes](/chainlink-nodes/v1/configuration): +[Node Config](/chainlink-nodes/v1/node-config): -- [MINIMUM_CONTRACT_PAYMENT_LINK_JUELS](/chainlink-nodes/v1/configuration): ensure your required payment amount is high enough to meet the costs of responding onchain. -- [MIN_INCOMING_CONFIRMATIONS](/chainlink-nodes/v1/configuration): this can be set to 0 for common data request jobs. See the bullet above on setting individual `confirmations` for specific jobs. -- [LOG_FILE_MAX_SIZE](/chainlink-nodes/v1/configuration): Set this to `0` if you're using external log drivers which parse the output from Docker containers. This will save you disk space. -- [JSON_CONSOLE](/chainlink-nodes/v1/configuration): Set to `true` if you're using external log drivers to parse the output of Docker containers. This will make it easier to parse individual fields of the log and set up alerts. +- [EVM.MinContractPayment](/chainlink-nodes/v1/node-config#mincontractpayment): ensure your required payment amount is high enough to meet the costs of responding onchain. +- [EVM.MinIncomingConfirmations](/chainlink-nodes/v1/node-config#minincomingconfirmations): this can be set to 0 for common data request jobs. See the bullet above on setting individual `confirmations` for specific jobs. +- [Log.File.MaxSize](/chainlink-nodes/v1/node-config#maxsize): Set this below `1mb` if you're using external log drivers which parse the output from Docker containers. A value smaller than 1Mb disables logging to disk. +- [Log.JSONConsole](/chainlink-nodes/v1/node-config#jsonconsole): Set to `true` if you're using external log drivers to parse the output of Docker containers. This will make it easier to parse individual fields of the log and set up alerts. ## Addresses @@ -3296,46 +3297,28 @@ You can configure as many send-only nodes as you want. Send-only nodes only broa > Transaction broadcasts are always sent to every primary node and send-only node. It is redundant to specify the same > URL for a send-only node as an existing primary node, and it has no effect. -Here is an example for how to specify the [`EVM_NODES` environment variable](/chainlink-nodes/v1/configuration): +Set the chain and its RPC endpoints in TOML. The chain id goes on `[[EVM]]`. Each endpoint is an [`[[EVM.Nodes]]`](/chainlink-nodes/v1/node-config#evmnodes) entry: -```shell -export EVM_NODES=' -[ - { - "name": "primary_1", - "evmChainId": "137", - "wsUrl": "wss://endpoint-1.example.com/ws", - "httpUrl": "http://endpoint-1.example.com/", - "sendOnly": false - }, - { - "name": "primary_2", - "evmChainId": "137", - "wsUrl": "ws://endpoint-2.example.com/ws", - "httpUrl": "http://endpoint-2.example.com/", - "sendOnly": false - }, - { - "name": "primary_3", - "evmChainId": "137", - "wsUrl": "wss://endpoint-3.example.com/ws", - "httpUrl": "http://endpoint-3.example.com/", - "sendOnly": false - }, - { - "name": "sendonly_1", - "evmChainId": "137", - "httpUrl": "http://endpoint-4.example.com/", - "sendOnly": true - }, - { - "name": "sendonly_2", - "evmChainId": "137", - "httpUrl": "http://endpoint-5.example.com/", - "sendOnly": true - }, -] -' +```toml +[[EVM]] +ChainID = '137' + +[[EVM.Nodes]] +Name = 'primary_1' +WSURL = 'wss://endpoint-1.example.com/ws' +HTTPURL = 'http://endpoint-1.example.com/' +SendOnly = false + +[[EVM.Nodes]] +Name = 'primary_2' +WSURL = 'wss://endpoint-2.example.com/ws' +HTTPURL = 'http://endpoint-2.example.com/' +SendOnly = false + +[[EVM.Nodes]] +Name = 'sendonly_1' +HTTPURL = 'http://endpoint-4.example.com/' +SendOnly = true ``` Send-only nodes are used for broadcasting transactions only, and must support the following RPC calls: @@ -3351,25 +3334,22 @@ Send-only nodes are used for broadcasting transactions only, and must support th > Our recommendation is that node operators should **not** use load-balancers for RPCs. If you do use them, the load > balancers must provide finality guarantees. -Chainlink node version 1.3.0 and above has built in failover and load balancing for primary nodes. Chainlink always uses round-robin requests across all primary nodes. Chainlink monitors when nodes go offline and stops routing requests to those nodes. If you don't want to use Chainlink's built-in failover, or you want to use an external proxy instead, you can disable failover completely using the following environment variables: +Chainlink node version 1.3.0 and above has built in failover and load balancing for primary nodes. Chainlink always uses round-robin requests across all primary nodes. Chainlink monitors when nodes go offline and stops routing requests to those nodes. If you don't want to use Chainlink's built-in failover, or you want to use an external proxy instead, you can disable failover completely with these TOML settings: -```text -NODE_NO_NEW_HEADS_THRESHOLD=0 -NODE_POLL_FAILURE_THRESHOLD=0 -NODE_POLL_INTERVAL=0 -``` +```toml +[EVM] +NoNewHeadsThreshold = '0s' -- [NODE_NO_NEW_HEADS_THRESHOLD](/chainlink-nodes/v1/configuration): Controls how long to wait receiving no new heads before marking a node dead -- [NODE_POLL_FAILURE_THRESHOLD](/chainlink-nodes/v1/configuration): Controls how many consecutive poll failures will disable a node -- [NODE_POLL_INTERVAL](/chainlink-nodes/v1/configuration): Controls how often the node will be polled +[EVM.NodePool] +PollFailureThreshold = 0 +PollInterval = '0s' +``` -By default, these environment variables use the following values: +- [EVM.NoNewHeadsThreshold](/chainlink-nodes/v1/node-config#nonewheadsthreshold): Controls how long to wait receiving no new heads before marking a node out of sync. Set it to zero to disable the check. +- [EVM.NodePool.PollFailureThreshold](/chainlink-nodes/v1/node-config#pollfailurethreshold): Controls how many consecutive poll failures will disable a node. Set it to zero to disable poll checking. +- [EVM.NodePool.PollInterval](/chainlink-nodes/v1/node-config#pollinterval-1): Controls how often the node will be polled. Set it to zero to disable poll checking. -```text -NODE_NO_NEW_HEADS_THRESHOLD="3m" -NODE_POLL_FAILURE_THRESHOLD="5" -NODE_POLL_INTERVAL="10s" -``` +The defaults on the Node Config page are `NoNewHeadsThreshold = '3m'`, `PollFailureThreshold = 5`, and `PollInterval = '10s'`. ## Configuring websocket and HTTP URLs @@ -3379,19 +3359,13 @@ NODE_POLL_INTERVAL="10s" It is not recommended to configure primary nodes with *only* a websocket URL. Routing all traffic over only a websocket can cause problems. As a best practices, every primary node must have both websocket and HTTP URLs specified. This allows Chainlink to route almost all RPC calls over HTTP, which tends to be more robust and reliable. The websocket URL is used only for subscriptions. Both URLs must point to the same node because they are bundled together and have the same liveness state. -If you enabled HTTP URLs on all your primary nodes, you can increase the values for the following environment variables: - -- [ETH_RPC_DEFAULT_BATCH_SIZE](/chainlink-nodes/v1/configuration) -- [BLOCK_HISTORY_ESTIMATOR_BATCH_SIZE](/chainlink-nodes/v1/configuration) -- [ETH_LOG_BACKFILL_BATCH_SIZE](/chainlink-nodes/v1/configuration) +If you enabled HTTP URLs on all your primary nodes, you can increase these TOML settings: -By default, these config variables are set conservatively to avoid overflowing websocket frames. In HTTP mode, there are no such limitations. You might be able to improve performance with increased values similar to the following example: +- [EVM.RPCDefaultBatchSize](/chainlink-nodes/v1/node-config#rpcdefaultbatchsize) +- [EVM.GasEstimator.BlockHistory.BatchSize](/chainlink-nodes/v1/node-config#batchsize) +- [EVM.LogBackfillBatchSize](/chainlink-nodes/v1/node-config#logbackfillbatchsize) -```text -ETH_RPC_DEFAULT_BATCH_SIZE=1000 -BLOCK_HISTORY_ESTIMATOR_BATCH_SIZE=100 -ETH_LOG_BACKFILL_BATCH_SIZE=1000 -``` +By default, these settings are set conservatively to avoid overflowing websocket frames. In HTTP mode, there are no such limitations. Read the defaults on each setting before you raise them. > **CAUTION** > @@ -3833,7 +3807,7 @@ When the log messages on the first node indicate that it is waiting for the data You might want to run multiple instances of the Chainlink node on the same machine. If one instance goes down, the second instance can automatically pick up requests. Building off the concepts in the previous example, use Docker to have primary and a secondary containers referencing the same database URL. -Use the default `DATABASE_LOCKING_MODE=advisorylock` setting unless you want to test the `lease` or `dual` settings. See [the docs](/chainlink-nodes/v1/configuration) for more information about this configuration variable. +Chainlink nodes with v2.0 and later only support `lease` database locking. See [Database.Lock](/chainlink-nodes/v1/node-config#databaselock). Run the Chainlink node with a name option specified: @@ -4178,7 +4152,7 @@ ETH_URL=wss://your-node-name.quiknode.pro/security-hash/ At a minimum, disable the default RPC gas and txfee caps on your ETH node. This can be done in the TOML file as seen below, or by running go-ethereum with the command line arguments: `--rpc.gascap=0 --rpc.txfeecap=0`. -To learn more about configuring ETH nodes, see the [configuration page](/chainlink-nodes/v1/configuration). +The flags in this section are the ETH node settings. Chainlink node settings are on the [Node Config](/chainlink-nodes/v1/node-config) page. ## Additional Tools @@ -4196,9 +4170,9 @@ Source: https://docs.chain.link/chainlink-nodes/v1/fulfilling-requests You can use your Chainlink nodes to fulfill requests. This guide shows you how to deploy your own operator contract and add jobs to your node so that it can provide data to smart contracts. -Chainlink nodes can fulfill requests from open or unauthenticated APIs without the need for [External Adapters](/chainlink-nodes/external-adapters/external-adapters) as long as you've [added the jobs](#add-a-job-to-the-node) to the node. For these requests, requesters supply the URL to the open API that they want each node to retrieve. The Chainlink node will use [tasks](/chainlink-nodes/oracle-jobs/tasks) to fulfill the request. +Chainlink nodes can fulfill requests from open or unauthenticated APIs without an [external adapter](https://github.com/smartcontractkit/external-adapters-js) as long as you've [added the jobs](#add-a-job-to-the-node) to the node. For these requests, requesters supply the URL to the open API that they want each node to retrieve. The Chainlink node will use [tasks](/chainlink-nodes/oracle-jobs/tasks) to fulfill the request. -Some APIs require authentication by providing request headers for the operator's API key, which the Chainlink node supports. If you would like to provide access to an API that requires authentication, you must create a job that is specific for that API either using an [external adapter](/chainlink-nodes/external-adapters/external-adapters) or by using the parameters of the [HTTP task](/chainlink-nodes/oracle-jobs/all-tasks/#http-task). +Some APIs require authentication by providing request headers for the operator's API key, which the Chainlink node supports. If you would like to provide access to an API that requires authentication, you must create a job that is specific for that API either using an [external adapter](https://github.com/smartcontractkit/external-adapters-js) or by using the parameters of the [HTTP task](/chainlink-nodes/oracle-jobs/all-tasks/#http-task). ## Requirements @@ -4378,7 +4352,7 @@ Source: https://docs.chain.link/chainlink-nodes/v1 This section provides specific information for running and configuring v1.x.x Chainlink nodes. First you will [run a chainlink node](/chainlink-nodes/v1/running-a-chainlink-node) that implements the [basic request architecture model](/architecture-overview/architecture-request-model). Then you will [fulfill requests](/chainlink-nodes/v1/fulfilling-requests) initiated by a smart contract. -The [Configuring Nodes page](/chainlink-nodes/v1/configuration) lists all the environment variables for configuring a v1.x.x Chainlink node. +The [Configuring Nodes page](/chainlink-nodes/configuring-nodes) explains how to move from environment variables to TOML. The [Node Config](/chainlink-nodes/v1/node-config) page lists the TOML settings. --- diff --git a/src/content/chainlink-nodes/oracle-jobs/all-tasks.mdx b/src/content/chainlink-nodes/oracle-jobs/all-tasks.mdx index fd6982d646b..fe2c7d24bb8 100644 --- a/src/content/chainlink-nodes/oracle-jobs/all-tasks.mdx +++ b/src/content/chainlink-nodes/oracle-jobs/all-tasks.mdx @@ -79,7 +79,7 @@ Given the input string "Hello, playground", the task will return "SGVsbG8sIHBsYX ## Bridge task -Bridge tasks make HTTP POST requests to pre-configured URLs. Bridges can be configured via the UI or the CLI, and are referred to by a simple user-specified name. This is the way that most jobs interact with [External Adapters](/chainlink-nodes/external-adapters/external-adapters). +Bridge tasks make HTTP POST requests to pre-configured URLs. Bridges can be configured via the UI or the CLI, and are referred to by a simple user-specified name. This is the way that most jobs interact with an adapter from the [external adapters repository](https://github.com/smartcontractkit/external-adapters-js). **Parameters** diff --git a/src/content/chainlink-nodes/oracle-jobs/tasks.mdx b/src/content/chainlink-nodes/oracle-jobs/tasks.mdx index 88bb75b51a9..2a48a1fb803 100644 --- a/src/content/chainlink-nodes/oracle-jobs/tasks.mdx +++ b/src/content/chainlink-nodes/oracle-jobs/tasks.mdx @@ -14,7 +14,7 @@ import { Aside } from "@components" Tasks are a replacement for core adapters that is more flexible. Tasks can be composed in arbitrary order into [pipelines](#writing-pipelines). Pipelines consist of one or more threads of execution where tasks are executed in a well-defined order. -You can use Chainlink's [built-in tasks](/chainlink-nodes/oracle-jobs/all-tasks), or you can create your own [external adapters](/chainlink-nodes/external-adapters/external-adapters) for tasks which are accessed through a `bridge`. +You can use Chainlink's [built-in tasks](/chainlink-nodes/oracle-jobs/all-tasks), or you can create your own [external adapters](https://github.com/smartcontractkit/external-adapters-js) for tasks which are accessed through a `bridge`. ## Shared attributes diff --git a/src/content/chainlink-nodes/resources/best-security-practices.mdx b/src/content/chainlink-nodes/resources/best-security-practices.mdx index b52f3a9f391..cd3c740e162 100644 --- a/src/content/chainlink-nodes/resources/best-security-practices.mdx +++ b/src/content/chainlink-nodes/resources/best-security-practices.mdx @@ -57,8 +57,7 @@ To be proactive in detecting any issues before or when they occur, active monito - Ethereum http and websocket ports to be open and responsive. (Usually: 8545 & 8546) - Ethereum client disk, RAM and CPU usage. -Monitoring can be set up from the Docker container's output and fed into most major logging providers. For example, you can use Docker's docs to set up the logging driver for [Amazon CloudWatch](https://docs.docker.com/config/containers/logging/awslogs/) and [Google Cloud Logging](https://docs.docker.com/config/containers/logging/gcplogs/). You will want to set the [ -JSON_CONSOLE](/chainlink-nodes/v1/configuration) configuration variable to `true` so that the output of the container is JSON-formatted for logging. +Monitoring can be set up from the Docker container's output and fed into most major logging providers. For example, you can use Docker's docs to set up the logging driver for [Amazon CloudWatch](https://docs.docker.com/config/containers/logging/awslogs/) and [Google Cloud Logging](https://docs.docker.com/config/containers/logging/gcplogs/). You will want to set [Log.JSONConsole](/chainlink-nodes/v1/node-config#jsonconsole) to `true` so that the output of the container is JSON-formatted for logging. ## Frequent updates @@ -73,14 +72,14 @@ The following are suggestions for job specifications and configuration settings [Job Specifications](/chainlink-nodes/oracle-jobs/jobs): - Include the address of your oracle contract address for all RunLog initiated jobs, as shown in the [Fulfilling Requests](/chainlink-nodes/v1/fulfilling-requests/#add-a-job-to-the-node) guide. -- Override the global `MIN_INCOMING_CONFIRMATIONS` config by setting a `confirmations` field in jobs which perform offchain payments to allow for greater security by making the node ensure the transaction is still valid after X blocks. +- Override the global `EVM.MinIncomingConfirmations` config by setting a `confirmations` field in jobs which perform offchain payments to allow for greater security by making the node ensure the transaction is still valid after X blocks. -[Configuring Chainlink Nodes](/chainlink-nodes/v1/configuration): +[Node Config](/chainlink-nodes/v1/node-config): -- [MINIMUM_CONTRACT_PAYMENT_LINK_JUELS](/chainlink-nodes/v1/configuration): ensure your required payment amount is high enough to meet the costs of responding onchain. -- [MIN_INCOMING_CONFIRMATIONS](/chainlink-nodes/v1/configuration): this can be set to 0 for common data request jobs. See the bullet above on setting individual `confirmations` for specific jobs. -- [LOG_FILE_MAX_SIZE](/chainlink-nodes/v1/configuration): Set this to `0` if you're using external log drivers which parse the output from Docker containers. This will save you disk space. -- [JSON_CONSOLE](/chainlink-nodes/v1/configuration): Set to `true` if you're using external log drivers to parse the output of Docker containers. This will make it easier to parse individual fields of the log and set up alerts. +- [EVM.MinContractPayment](/chainlink-nodes/v1/node-config#mincontractpayment): ensure your required payment amount is high enough to meet the costs of responding onchain. +- [EVM.MinIncomingConfirmations](/chainlink-nodes/v1/node-config#minincomingconfirmations): this can be set to 0 for common data request jobs. See the bullet above on setting individual `confirmations` for specific jobs. +- [Log.File.MaxSize](/chainlink-nodes/v1/node-config#maxsize): Set this below `1mb` if you're using external log drivers which parse the output from Docker containers. A value smaller than 1Mb disables logging to disk. +- [Log.JSONConsole](/chainlink-nodes/v1/node-config#jsonconsole): Set to `true` if you're using external log drivers to parse the output of Docker containers. This will make it easier to parse individual fields of the log and set up alerts. ## Addresses diff --git a/src/content/chainlink-nodes/resources/connecting-to-a-remote-database.mdx b/src/content/chainlink-nodes/resources/connecting-to-a-remote-database.mdx index bcfc68f7354..1ba36ee970a 100644 --- a/src/content/chainlink-nodes/resources/connecting-to-a-remote-database.mdx +++ b/src/content/chainlink-nodes/resources/connecting-to-a-remote-database.mdx @@ -2,7 +2,7 @@ section: nodeOperator date: Last Modified title: "Connecting to a Remote Database" -whatsnext: { "Configuring Chainlink": "/chainlink-nodes/v1/configuration" } +whatsnext: { "Configuring Chainlink": "/chainlink-nodes/configuring-nodes" } --- This guide show you how to set up a PostgreSQL database and connect your Chainlink node to it. Alternatively, you can follow the guides below: diff --git a/src/content/chainlink-nodes/resources/evm-performance-configuration.mdx b/src/content/chainlink-nodes/resources/evm-performance-configuration.mdx index 22ee35c49dc..37c4e21b6cf 100644 --- a/src/content/chainlink-nodes/resources/evm-performance-configuration.mdx +++ b/src/content/chainlink-nodes/resources/evm-performance-configuration.mdx @@ -40,46 +40,28 @@ You can configure as many send-only nodes as you want. Send-only nodes only broa URL for a send-only node as an existing primary node, and it has no effect. -Here is an example for how to specify the [`EVM_NODES` environment variable](/chainlink-nodes/v1/configuration): - -```shell -export EVM_NODES=' -[ - { - "name": "primary_1", - "evmChainId": "137", - "wsUrl": "wss://endpoint-1.example.com/ws", - "httpUrl": "http://endpoint-1.example.com/", - "sendOnly": false - }, - { - "name": "primary_2", - "evmChainId": "137", - "wsUrl": "ws://endpoint-2.example.com/ws", - "httpUrl": "http://endpoint-2.example.com/", - "sendOnly": false - }, - { - "name": "primary_3", - "evmChainId": "137", - "wsUrl": "wss://endpoint-3.example.com/ws", - "httpUrl": "http://endpoint-3.example.com/", - "sendOnly": false - }, - { - "name": "sendonly_1", - "evmChainId": "137", - "httpUrl": "http://endpoint-4.example.com/", - "sendOnly": true - }, - { - "name": "sendonly_2", - "evmChainId": "137", - "httpUrl": "http://endpoint-5.example.com/", - "sendOnly": true - }, -] -' +Set the chain and its RPC endpoints in TOML. The chain id goes on `[[EVM]]`. Each endpoint is an [`[[EVM.Nodes]]`](/chainlink-nodes/v1/node-config#evmnodes) entry: + +```toml +[[EVM]] +ChainID = '137' + +[[EVM.Nodes]] +Name = 'primary_1' +WSURL = 'wss://endpoint-1.example.com/ws' +HTTPURL = 'http://endpoint-1.example.com/' +SendOnly = false + +[[EVM.Nodes]] +Name = 'primary_2' +WSURL = 'wss://endpoint-2.example.com/ws' +HTTPURL = 'http://endpoint-2.example.com/' +SendOnly = false + +[[EVM.Nodes]] +Name = 'sendonly_1' +HTTPURL = 'http://endpoint-4.example.com/' +SendOnly = true ``` Send-only nodes are used for broadcasting transactions only, and must support the following RPC calls: @@ -95,25 +77,22 @@ Send-only nodes are used for broadcasting transactions only, and must support th balancers must provide finality guarantees. -Chainlink node version 1.3.0 and above has built in failover and load balancing for primary nodes. Chainlink always uses round-robin requests across all primary nodes. Chainlink monitors when nodes go offline and stops routing requests to those nodes. If you don't want to use Chainlink's built-in failover, or you want to use an external proxy instead, you can disable failover completely using the following environment variables: +Chainlink node version 1.3.0 and above has built in failover and load balancing for primary nodes. Chainlink always uses round-robin requests across all primary nodes. Chainlink monitors when nodes go offline and stops routing requests to those nodes. If you don't want to use Chainlink's built-in failover, or you want to use an external proxy instead, you can disable failover completely with these TOML settings: -```text -NODE_NO_NEW_HEADS_THRESHOLD=0 -NODE_POLL_FAILURE_THRESHOLD=0 -NODE_POLL_INTERVAL=0 -``` +```toml +[EVM] +NoNewHeadsThreshold = '0s' -- [NODE_NO_NEW_HEADS_THRESHOLD](/chainlink-nodes/v1/configuration): Controls how long to wait receiving no new heads before marking a node dead -- [NODE_POLL_FAILURE_THRESHOLD](/chainlink-nodes/v1/configuration): Controls how many consecutive poll failures will disable a node -- [NODE_POLL_INTERVAL](/chainlink-nodes/v1/configuration): Controls how often the node will be polled +[EVM.NodePool] +PollFailureThreshold = 0 +PollInterval = '0s' +``` -By default, these environment variables use the following values: +- [EVM.NoNewHeadsThreshold](/chainlink-nodes/v1/node-config#nonewheadsthreshold): Controls how long to wait receiving no new heads before marking a node out of sync. Set it to zero to disable the check. +- [EVM.NodePool.PollFailureThreshold](/chainlink-nodes/v1/node-config#pollfailurethreshold): Controls how many consecutive poll failures will disable a node. Set it to zero to disable poll checking. +- [EVM.NodePool.PollInterval](/chainlink-nodes/v1/node-config#pollinterval-1): Controls how often the node will be polled. Set it to zero to disable poll checking. -```text -NODE_NO_NEW_HEADS_THRESHOLD="3m" -NODE_POLL_FAILURE_THRESHOLD="5" -NODE_POLL_INTERVAL="10s" -``` +The defaults on the Node Config page are `NoNewHeadsThreshold = '3m'`, `PollFailureThreshold = 5`, and `PollInterval = '10s'`. ## Configuring websocket and HTTP URLs @@ -123,19 +102,13 @@ NODE_POLL_INTERVAL="10s" It is not recommended to configure primary nodes with _only_ a websocket URL. Routing all traffic over only a websocket can cause problems. As a best practices, every primary node must have both websocket and HTTP URLs specified. This allows Chainlink to route almost all RPC calls over HTTP, which tends to be more robust and reliable. The websocket URL is used only for subscriptions. Both URLs must point to the same node because they are bundled together and have the same liveness state. -If you enabled HTTP URLs on all your primary nodes, you can increase the values for the following environment variables: +If you enabled HTTP URLs on all your primary nodes, you can increase these TOML settings: -- [ETH_RPC_DEFAULT_BATCH_SIZE](/chainlink-nodes/v1/configuration) -- [BLOCK_HISTORY_ESTIMATOR_BATCH_SIZE](/chainlink-nodes/v1/configuration) -- [ETH_LOG_BACKFILL_BATCH_SIZE](/chainlink-nodes/v1/configuration) +- [EVM.RPCDefaultBatchSize](/chainlink-nodes/v1/node-config#rpcdefaultbatchsize) +- [EVM.GasEstimator.BlockHistory.BatchSize](/chainlink-nodes/v1/node-config#batchsize) +- [EVM.LogBackfillBatchSize](/chainlink-nodes/v1/node-config#logbackfillbatchsize) -By default, these config variables are set conservatively to avoid overflowing websocket frames. In HTTP mode, there are no such limitations. You might be able to improve performance with increased values similar to the following example: - -```text -ETH_RPC_DEFAULT_BATCH_SIZE=1000 -BLOCK_HISTORY_ESTIMATOR_BATCH_SIZE=100 -ETH_LOG_BACKFILL_BATCH_SIZE=1000 -``` +By default, these settings are set conservatively to avoid overflowing websocket frames. In HTTP mode, there are no such limitations. Read the defaults on each setting before you raise them. +For a new project, start from the product guide you need: + +- [Data Feeds](/data-feeds/getting-started) +- [Data Streams](/data-streams/tutorials/overview) +- [VRF v2.5](/vrf/v2-5/getting-started) +- [CCIP](/ccip/v2/evm/getting-started) +- [CRE](/cre/getting-started/overview) + ## Installing into existing projects -Chainlink is supported by [Hardhat](http://hardhat.org), [Brownie](https://eth-brownie.readthedocs.io/en/stable), [Truffle](https://www.trufflesuite.com), and other frameworks. +Chainlink is supported by [Hardhat](https://hardhat.org), [Foundry](https://book.getfoundry.sh/), and [Anchor](https://www.anchor-lang.com/). [Apeworx](https://docs.apeworx.io/ape/stable/) is available for Vyper. If you already have a project, install the [@chainlink/contracts](https://www.npmjs.com/package/@chainlink/contracts) NPM package. @@ -59,22 +67,6 @@ To learn more about Hardhat, read the [Hardhat Documentation](https://hardhat.or For more details on how to use Chainlink with Hardhat, see the blog post for [How to use Hardhat with Chainlink](https://blog.chain.link/using-chainlink-with-hardhat/). -### Brownie Starter Kit - -For the latest instructions, see the [Brownie Starter Kit](https://github.com/smartcontractkit/chainlink-mix) repository. - -To learn more about Brownie, read the [Brownie Documentation](https://eth-brownie.readthedocs.io/en/stable/). - -For more details on how to use Chainlink with Brownie, see the [Develop a DeFi Project Using Python](https://blog.chain.link/develop-python-defi-project/) blog post. - -### Truffle Starter Kit - -For the latest instructions, see the [Truffle Starter Kit](https://github.com/smartcontractkit/truffle-starter-kit) repository. - -To learn more about Truffle, read the [Truffle Suite Documentation](https://trufflesuite.com/docs/). - -For more details on how to use Chainlink with Truffle, see our blog post about [Using Truffle to interact with Chainlink Smart Contracts](https://www.trufflesuite.com/blog/using-truffle-to-interact-with-chainlink-smart-contracts). - ### Foundry Starter Kit For the latest instructions, see the following repositories: @@ -88,7 +80,7 @@ To learn more about Foundry, read the [Foundry Documentation](https://book.getfo For the latest instructions, see the [Apeworx Starter Kit](https://github.com/smartcontractkit/apeworx-starter-kit) repository. -To learn more about Truffle, read the [Apeworx Documentation](https://docs.apeworx.io/ape/stable/). +To learn more about Apeworx, read the [Apeworx Documentation](https://docs.apeworx.io/ape/stable/). ### Anchor Starter Kit (Solana) @@ -100,4 +92,4 @@ To learn more about Anchor, see the [Anchor Documentation](https://www.anchor-la See our blog post on [Testing Chainlink Smart Contracts](https://blog.chain.link/testing-chainlink-smart-contracts/) or watch the [Chainlink Hackathon Workshop](https://www.youtube.com/watch?v=d8SqLaH8pu0). -Tests samples can be found on [Hardhat Starter Kit](https://github.com/smartcontractkit/hardhat-starter-kit/tree/main/test) and [Truffle Starter Kit](https://github.com/smartcontractkit/truffle-starter-kit/tree/master/test) respectively. +Test samples can be found in the [Hardhat Starter Kit](https://github.com/smartcontractkit/hardhat-starter-kit/tree/main/test). diff --git a/src/content/resources/glossary.mdx b/src/content/resources/glossary.mdx index ba875f74ec5..4c7ef87bfbb 100644 --- a/src/content/resources/glossary.mdx +++ b/src/content/resources/glossary.mdx @@ -2,10 +2,18 @@ date: Last Modified title: "Glossary" section: global +metadata: + description: "Old Chainlink node v1 terms. This page is not indexed." + noindex: true --- import { Aside } from "@components" + + ### Adapter -An adapter or [task](#task) is a piece of software responsible for executing a specific piece of functionality. A Chainlink node comes with a number of Adapters built-in, commonly known as Core Adapters, but can also be extended via [Bridges](/chainlink-nodes/external-adapters/node-operators) to connect with user-defined [External Adapters](#external-adapter). +An adapter or [task](#task) is a piece of software responsible for executing a specific piece of functionality. A Chainlink node comes with a number of Adapters built-in, commonly known as Core Adapters, but can also be extended via [bridges](/chainlink-nodes/oracle-jobs/all-tasks#bridge-task) to connect with user-defined [external adapters](#external-adapter). ### Answer @@ -37,7 +45,7 @@ Encumbrance parameters are the part of a [service agreement](#service-agreement) [External adapters](https://github.com/smartcontractkit/chainlink/wiki/External-Adapters) are what make Chainlink easily extensible, providing simple integration of custom computations and specialized APIs. -A Chainlink node communicates with external adapters by sending a POST request with a JSON data payload. More information can be found on the external adapter [page](/chainlink-nodes/external-adapters/external-adapters). +A Chainlink node communicates with external adapters by sending a POST request with a JSON data payload. The adapter code lives in the [external adapters repository](https://github.com/smartcontractkit/external-adapters-js). The old external adapter docs now open the [v1 to v2 job migration](/chainlink-nodes/oracle-jobs/migration-v1-v2) page. ### Function selector diff --git a/src/content/resources/hackathon-resources.mdx b/src/content/resources/hackathon-resources.mdx index 15db5dd352e..2020b3e4946 100644 --- a/src/content/resources/hackathon-resources.mdx +++ b/src/content/resources/hackathon-resources.mdx @@ -8,7 +8,7 @@ import { Aside } from "@components" @@ -32,13 +32,13 @@ Always refer to the [getting help](/resources/getting-help) page for the latest If you are new to Smart Contracts, read the [Getting Started Guide](/getting-started/conceptual-overview). -- [Learning Resources](/getting-started/other-tutorials) +- [Chainlink Documentation](https://docs.chain.link) - [Video Tutorials](https://www.youtube.com/playlist?list=PLVP9aGDn-X0QwJVbQvuKr-zrh2_DV5M6J) - [What is Ethereum?](https://www.youtube.com/playlist?list=PLVP9aGDn-X0QwJVbQvuKr-zrh2_DV5M6J) - [Developer Blog featuring several tutorials](https://blog.chain.link/tag/developers/) - [Testing Chainlink Smart Contracts](https://blog.chain.link/testing-chainlink-smart-contracts/) - [NFTs and Chainlink](https://blog.chain.link/build-deploy-and-sell-your-own-dynamic-nft/) -- [Build an external adapter](/chainlink-nodes/external-adapters/developers) +- [External adapters repository](https://github.com/smartcontractkit/external-adapters-js) ## Inspiration diff --git a/src/content/resources/llms-full.txt b/src/content/resources/llms-full.txt index 3db76cff081..5e393b69630 100644 --- a/src/content/resources/llms-full.txt +++ b/src/content/resources/llms-full.txt @@ -41,7 +41,7 @@ After the transaction is confirmed onchain, the faucet app shows "Request comple # Cross-chain bridges and associated risks Source: https://docs.chain.link/resources/bridge-risks -When working with Chainlink on layer-2 chains and side chains, you must export your LINK tokens from Ethereum to the target chain using a cross-chain bridge. Follow this [video](https://www.youtube.com/watch?v=WKvIGkBWRUA) for an example of moving LINK tokens from Ethereum to Polygon. +Move LINK from Ethereum to another chain with [Chainlink CCIP](/ccip/evm/tutorials/application-developers/transfer-tokens-from-contract) and CCIP-powered applications such as [Transporter](https://app.transporter.io/?tab=token\&token=LINK). You do not have to use a third-party bridge. Cross-chain bridges come with their own risks. In fact, bridge attacks constitute some of the [largest cryptocurrency hacks](https://rekt.news/leaderboard/) by value. When moving your LINK tokens or any asset across chains, understand the risks that you are taking with your assets. Chainlink Labs does not endorse any bridge. Ultimately, you are responsible for assessing the bridge that you use to move your assets. @@ -654,7 +654,7 @@ To stay up to date on the hackathons that Chainlink is running or sponsoring, ke --- -# Install Frameworks +# Starter Kits and Frameworks Source: https://docs.chain.link/resources/create-a-chainlinked-project ![Starter kit logos](/images/starter-kit-images/starter-kits.webp) @@ -665,9 +665,17 @@ You can install and use Chainlink in your projects either manually or by using t > > If you're new to smart contract development and want a step-by-step guide, try out our [Getting Started](/getting-started/conceptual-overview) guide. +For a new project, start from the product guide you need: + +- [Data Feeds](/data-feeds/getting-started) +- [Data Streams](/data-streams/tutorials/overview) +- [VRF v2.5](/vrf/v2-5/getting-started) +- [CCIP](/ccip/v2/evm/getting-started) +- [CRE](/cre/getting-started/overview) + ## Installing into existing projects -Chainlink is supported by [Hardhat](http://hardhat.org), [Brownie](https://eth-brownie.readthedocs.io/en/stable), [Truffle](https://www.trufflesuite.com), and other frameworks. +Chainlink is supported by [Hardhat](https://hardhat.org), [Foundry](https://book.getfoundry.sh/), and [Anchor](https://www.anchor-lang.com/). [Apeworx](https://docs.apeworx.io/ape/stable/) is available for Vyper. If you already have a project, install the [@chainlink/contracts](https://www.npmjs.com/package/@chainlink/contracts) NPM package. @@ -702,22 +710,6 @@ To learn more about Hardhat, read the [Hardhat Documentation](https://hardhat.or For more details on how to use Chainlink with Hardhat, see the blog post for [How to use Hardhat with Chainlink](https://blog.chain.link/using-chainlink-with-hardhat/). -### Brownie Starter Kit - -For the latest instructions, see the [Brownie Starter Kit](https://github.com/smartcontractkit/chainlink-mix) repository. - -To learn more about Brownie, read the [Brownie Documentation](https://eth-brownie.readthedocs.io/en/stable/). - -For more details on how to use Chainlink with Brownie, see the [Develop a DeFi Project Using Python](https://blog.chain.link/develop-python-defi-project/) blog post. - -### Truffle Starter Kit - -For the latest instructions, see the [Truffle Starter Kit](https://github.com/smartcontractkit/truffle-starter-kit) repository. - -To learn more about Truffle, read the [Truffle Suite Documentation](https://trufflesuite.com/docs/). - -For more details on how to use Chainlink with Truffle, see our blog post about [Using Truffle to interact with Chainlink Smart Contracts](https://www.trufflesuite.com/blog/using-truffle-to-interact-with-chainlink-smart-contracts). - ### Foundry Starter Kit For the latest instructions, see the following repositories: @@ -731,7 +723,7 @@ To learn more about Foundry, read the [Foundry Documentation](https://book.getfo For the latest instructions, see the [Apeworx Starter Kit](https://github.com/smartcontractkit/apeworx-starter-kit) repository. -To learn more about Truffle, read the [Apeworx Documentation](https://docs.apeworx.io/ape/stable/). +To learn more about Apeworx, read the [Apeworx Documentation](https://docs.apeworx.io/ape/stable/). ### Anchor Starter Kit (Solana) @@ -743,7 +735,7 @@ To learn more about Anchor, see the [Anchor Documentation](https://www.anchor-la See our blog post on [Testing Chainlink Smart Contracts](https://blog.chain.link/testing-chainlink-smart-contracts/) or watch the [Chainlink Hackathon Workshop](https://www.youtube.com/watch?v=d8SqLaH8pu0). -Tests samples can be found on [Hardhat Starter Kit](https://github.com/smartcontractkit/hardhat-starter-kit/tree/main/test) and [Truffle Starter Kit](https://github.com/smartcontractkit/truffle-starter-kit/tree/master/test) respectively. +Test samples can be found in the [Hardhat Starter Kit](https://github.com/smartcontractkit/hardhat-starter-kit/tree/main/test). --- @@ -883,6 +875,11 @@ For important updates regarding the use of Chainlink Price Feeds, users should j # Glossary Source: https://docs.chain.link/resources/glossary +> **CAUTION: Old terms** +> +> This glossary still documents Chainlink node v1 terms. The URL stays. The page is not in the product navigation. Use +> the current docs for Data Feeds, Data Streams, CCIP, CRE, and VRF v2.5. + ### Adapter > **DANGER** @@ -890,7 +887,7 @@ Source: https://docs.chain.link/resources/glossary > The adapters or JSON adapters for v1 Jobs are removed for Chainlink nodes running version 1.0.0 and later. Use [v2 job > tasks](/chainlink-nodes/oracle-jobs/tasks) instead. -An adapter or [task](#task) is a piece of software responsible for executing a specific piece of functionality. A Chainlink node comes with a number of Adapters built-in, commonly known as Core Adapters, but can also be extended via [Bridges](/chainlink-nodes/external-adapters/node-operators) to connect with user-defined [External Adapters](#external-adapter). +An adapter or [task](#task) is a piece of software responsible for executing a specific piece of functionality. A Chainlink node comes with a number of Adapters built-in, commonly known as Core Adapters, but can also be extended via [bridges](/chainlink-nodes/oracle-jobs/all-tasks#bridge-task) to connect with user-defined [external adapters](#external-adapter). ### Answer @@ -914,7 +911,7 @@ Encumbrance parameters are the part of a [service agreement](#service-agreement) [External adapters](https://github.com/smartcontractkit/chainlink/wiki/External-Adapters) are what make Chainlink easily extensible, providing simple integration of custom computations and specialized APIs. -A Chainlink node communicates with external adapters by sending a POST request with a JSON data payload. More information can be found on the external adapter [page](/chainlink-nodes/external-adapters/external-adapters). +A Chainlink node communicates with external adapters by sending a POST request with a JSON data payload. The adapter code lives in the [external adapters repository](https://github.com/smartcontractkit/external-adapters-js). The old external adapter docs now open the [v1 to v2 job migration](/chainlink-nodes/oracle-jobs/migration-v1-v2) page. ### Function selector @@ -1015,7 +1012,7 @@ Source: https://docs.chain.link/resources/hackathon-resources > **NOTE: Note on Resources** > -> For a comprehensive list of resources, refer to the [Learning Resources](/getting-started/other-tutorials) page. +> For a comprehensive list of resources, refer to the [Chainlink Documentation](https://docs.chain.link). This page lists useful resource to help you get started with Hackathon projects. If you want to check out code from past hackathons to get some inspiration, check out the [Blog](https://blog.chain.link/?s=hackathon) to find past hackathons and winners. @@ -1037,13 +1034,13 @@ Always refer to the [getting help](/resources/getting-help) page for the latest If you are new to Smart Contracts, read the [Getting Started Guide](/getting-started/conceptual-overview). -- [Learning Resources](/getting-started/other-tutorials) +- [Chainlink Documentation](https://docs.chain.link) - [Video Tutorials](https://www.youtube.com/playlist?list=PLVP9aGDn-X0QwJVbQvuKr-zrh2_DV5M6J) - [What is Ethereum?](https://www.youtube.com/playlist?list=PLVP9aGDn-X0QwJVbQvuKr-zrh2_DV5M6J) - [Developer Blog featuring several tutorials](https://blog.chain.link/tag/developers/) - [Testing Chainlink Smart Contracts](https://blog.chain.link/testing-chainlink-smart-contracts/) - [NFTs and Chainlink](https://blog.chain.link/build-deploy-and-sell-your-own-dynamic-nft/) -- [Build an external adapter](/chainlink-nodes/external-adapters/developers) +- [External adapters repository](https://github.com/smartcontractkit/external-adapters-js) ## Inspiration diff --git a/src/pages/chainlink-nodes.astro b/src/pages/chainlink-nodes.astro index 60013bd3b04..7f73fc2c2f9 100644 --- a/src/pages/chainlink-nodes.astro +++ b/src/pages/chainlink-nodes.astro @@ -66,9 +66,12 @@ import styles from "@features/landing/styles/EthereumLandingPage.module.css" height="50" />

Add External Adapters to Your Node

-

Bring high-quality data and premium web APIs to contract developers.

+

+ Adapter code is in the external adapters repository. The old docs page now opens the v1 to v2 job migration + guide. +

diff --git a/src/pages/search-index.astro b/src/pages/search-index.astro index 2a3f7b70dd8..fcaf9a851fa 100644 --- a/src/pages/search-index.astro +++ b/src/pages/search-index.astro @@ -10,7 +10,7 @@ const pages = Object.values(pagesGlob) const postsMdxGlob = import.meta.glob>>("../content/**/*.mdx", { eager: true }) const postsMdx = Object.values(postsMdxGlob).filter( - (post) => !post.frontmatter.draft && !isSunsetContentFile(post.file) + (post) => !post.frontmatter.draft && !isSunsetContentFile(post.file) && !post.frontmatter.metadata?.noindex ) const postsMdxWithContent = postsMdx.map((post) => { From bfe582a667060e2ca371e0c8027cf632a326c3fc Mon Sep 17 00:00:00 2001 From: Thomas Hodges Date: Fri, 2 Oct 2026 10:20:17 -0500 Subject: [PATCH 2/2] Fix CCIP link --- src/content/resources/create-a-chainlinked-project.mdx | 2 +- src/content/resources/llms-full.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/resources/create-a-chainlinked-project.mdx b/src/content/resources/create-a-chainlinked-project.mdx index c09a88d47f3..8f01c79078a 100644 --- a/src/content/resources/create-a-chainlinked-project.mdx +++ b/src/content/resources/create-a-chainlinked-project.mdx @@ -27,7 +27,7 @@ For a new project, start from the product guide you need: - [Data Feeds](/data-feeds/getting-started) - [Data Streams](/data-streams/tutorials/overview) - [VRF v2.5](/vrf/v2-5/getting-started) -- [CCIP](/ccip/v2/evm/getting-started) +- [CCIP](/ccip/evm/getting-started) - [CRE](/cre/getting-started/overview) ## Installing into existing projects diff --git a/src/content/resources/llms-full.txt b/src/content/resources/llms-full.txt index 5e393b69630..a918b45be05 100644 --- a/src/content/resources/llms-full.txt +++ b/src/content/resources/llms-full.txt @@ -670,7 +670,7 @@ For a new project, start from the product guide you need: - [Data Feeds](/data-feeds/getting-started) - [Data Streams](/data-streams/tutorials/overview) - [VRF v2.5](/vrf/v2-5/getting-started) -- [CCIP](/ccip/v2/evm/getting-started) +- [CCIP](/ccip/evm/getting-started) - [CRE](/cre/getting-started/overview) ## Installing into existing projects