[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10481":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},10481,"chainlink","smartcontractkit\u002Fchainlink","smartcontractkit","node of the decentralized oracle network, bridging on and off-chain computation","https:\u002F\u002Fchain.link",null,"Go",8212,1970,315,108,0,1,17,40.88,"Other",false,"develop",true,[25,5,26,27,28,29],"blockchain","ethereum","golang","oracle","solidity","2026-06-12 02:02:22","\u003Cbr\u002F>\n\u003Cp align=\"center\">\n\u003Ca href=\"https:\u002F\u002Fchain.link\" target=\"_blank\">\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fsmartcontractkit\u002Fchainlink\u002Fdevelop\u002Fdocs\u002Flogo-chainlink-blue.svg\" width=\"225\" alt=\"Chainlink logo\">\n\u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cbr\u002F>\n\n[![GitHub tag (latest SemVer)](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Ftag\u002Fsmartcontractkit\u002Fchainlink?style=flat-square)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fsmartcontract\u002Fchainlink\u002Ftags)\n[![GitHub license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fsmartcontractkit\u002Fchainlink?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002Fblob\u002Fmaster\u002FLICENSE)\n[![GitHub workflow changeset](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fsmartcontractkit\u002Fchainlink\u002Fchangeset.yml)](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002Factions\u002Fworkflows\u002Fchangeset.yml?query=workflow%3AChangeset)\n[![GitHub contributors](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcontributors-anon\u002Fsmartcontractkit\u002Fchainlink?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002Fgraphs\u002Fcontributors)\n[![GitHub commit activity](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcommit-activity\u002Fy\u002Fsmartcontractkit\u002Fchainlink?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002Fcommits\u002Fmaster)\n[![Official documentation](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=docs&message=latest&color=blue)](https:\u002F\u002Fdocs.chain.link\u002F)\n\n[Chainlink](https:\u002F\u002Fchain.link\u002F) expands the capabilities of smart contracts by enabling access to real-world data and off-chain computation while maintaining the security and reliability guarantees inherent to blockchain technology.\n\nThis repo contains the Chainlink core node and contracts. The core node is the bundled binary available to be run by node operators participating in a [decentralized oracle network](https:\u002F\u002Flink.smartcontract.com\u002Fwhitepaper).\nAll major release versions have pre-built docker images available for download from the [Chainlink dockerhub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fsmartcontract\u002Fchainlink\u002Ftags).\nIf you are interested in contributing please see our [contribution guidelines](.\u002Fdocs\u002FCONTRIBUTING.md).\nIf you are here to report a bug or request a feature, please [check currently open Issues](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002Fissues).\nFor more information about how to get started with Chainlink, check our [official documentation](https:\u002F\u002Fdocs.chain.link\u002F).\n\n## Community\n\nChainlink has an active and ever growing community. [Discord](https:\u002F\u002Fdiscordapp.com\u002Finvite\u002FaSK4zew)\nis the primary communication channel used for day to day communication,\nanswering development questions, and aggregating Chainlink related content. Take\na look at the [community docs](.\u002Fdocs\u002FCOMMUNITY.md) for more information\nregarding Chainlink social accounts, news, and networking.\n\n## Build Chainlink\n\n1. [Install Go 1.23](https:\u002F\u002Fgolang.org\u002Fdoc\u002Finstall), and add your GOPATH's [bin directory to your PATH](https:\u002F\u002Fgolang.org\u002Fdoc\u002Fcode.html#GOPATH)\n   - Example Path for macOS `export PATH=$GOPATH\u002Fbin:$PATH` & `export GOPATH=\u002FUsers\u002F$USER\u002Fgo`\n2. Install [NodeJS v20](https:\u002F\u002Fnodejs.org\u002Fen\u002Fdownload\u002Fpackage-manager\u002F) & [pnpm v10 via npm](https:\u002F\u002Fpnpm.io\u002Finstallation#using-npm).\n   - It might be easier long term to use [nvm](https:\u002F\u002Fnodejs.org\u002Fen\u002Fdownload\u002Fpackage-manager\u002F#nvm) to switch between node versions for different projects. For example, assuming $NODE_VERSION was set to a valid version of NodeJS, you could run: `nvm install $NODE_VERSION && nvm use $NODE_VERSION`\n3. Install [Postgres (>= 12.x)](https:\u002F\u002Fwiki.postgresql.org\u002Fwiki\u002FDetailed_installation_guides). It is recommended to run the latest major version of postgres.\n   - Note if you are running the official Chainlink docker image, the highest supported Postgres version is 16.x due to the bundled client.\n   - You should [configure Postgres](https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Fssl-tcp.html) to use SSL connection (or for testing you can set `?sslmode=disable` in your Postgres query string).\n4. Download Chainlink: `git clone https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink && cd chainlink`\n5. Build and install Chainlink: `make install`\n6. Run the node: `chainlink help`\n\nFor the latest information on setting up a development environment, see the [Development Setup Guide](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002Fwiki\u002FDevelopment-Setup-Guide).\n\n### Build from PR\n\nTo build an unofficial testing-only image from a feature branch or PR. You can do one of the following:\n\n1. Send a workflow dispatch event from our [`docker-build` workflow](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002Factions\u002Fworkflows\u002Fdocker-build.yml).\n2. Add the `build-publish` label to your PR and then either retry the `docker-build` workflow, or push a new commit.\n\n### Build Plugins\n\nPlugins are defined in yaml files within the `plugins\u002F` directory. Each plugin file is a yaml file and has a `plugins.` prefix name. Plugins are installed with [loopinstall](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink-common\u002Ftree\u002Fmain\u002Fpkg\u002Floop\u002Fcmd\u002Floopinstall).\n\nTo install the plugins, run:\n\n```bash\nmake install-plugins\n```\n\nSome plugins (such as those in `plugins\u002Fplugins.private.yaml`) reference private GitHub repositories. To build these plugins, you must have a GITHUB_TOKEN environment variable set, or preferably use the [gh](https:\u002F\u002Fcli.github.com\u002Fmanual\u002Fgh) GitHub CLI tool to use the [GitHub CLI credential helper](https:\u002F\u002Fcli.github.com\u002Fmanual\u002Fgh_auth_setup-git) like:\n\n```shell\n# Sets up a credential helper.\ngh auth setup-git\n```\n\nThen you can build the plugins with:\n\n```shell\nmake install-plugins-private\n```\n\n### Docker Builds\n\nTo build the experimental \"plugins\" Chainlink docker image, you can run this from the root of the repository:\n\n```shell\n# The GITHUB_TOKEN is required to access private repos which are used by some plugins.\nexport GITHUB_TOKEN=$(gh auth token) # requires the `gh` cli tool.\nmake docker-plugins\n```\n\n### Ethereum Execution Client Requirements\n\nIn order to run the Chainlink node you must have access to a running Ethereum node with an open websocket connection.\nAny Ethereum based network will work once you've [configured](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink#configure) the chain ID.\nEthereum node versions currently tested and supported:\n\n[Officially supported]\n\n- [Parity\u002FOpenethereum](https:\u002F\u002Fgithub.com\u002Fopenethereum\u002Fopenethereum) (NOTE: Parity is deprecated and support for this client may be removed in future)\n- [Geth](https:\u002F\u002Fgithub.com\u002Fethereum\u002Fgo-ethereum\u002Freleases)\n- [Besu](https:\u002F\u002Fgithub.com\u002Fhyperledger\u002Fbesu)\n\n[Supported but broken]\nThese clients are supported by Chainlink, but have bugs that prevent Chainlink from working reliably on these execution clients.\n\n- [Nethermind](https:\u002F\u002Fgithub.com\u002FNethermindEth\u002Fnethermind)\n  Blocking issues:\n  - ~https:\u002F\u002Fgithub.com\u002FNethermindEth\u002Fnethermind\u002Fissues\u002F4384~\n- [Erigon](https:\u002F\u002Fgithub.com\u002Fledgerwatch\u002Ferigon)\n  Blocking issues:\n  - https:\u002F\u002Fgithub.com\u002Fledgerwatch\u002Ferigon\u002Fdiscussions\u002F4946\n  - https:\u002F\u002Fgithub.com\u002Fledgerwatch\u002Ferigon\u002Fissues\u002F4030#issuecomment-1113964017\n\nWe cannot recommend specific version numbers for ethereum nodes since the software is being continually updated, but you should usually try to run the latest version available.\n\n## Running a local Chainlink node\n\n**NOTE**: By default, chainlink will run in TLS mode. For local development you can disable this by using a `dev build` using `make chainlink-dev` and setting the TOML fields:\n\n```toml\n[WebServer]\nSecureCookies = false\nTLS.HTTPSPort = 0\n\n[Insecure]\nDevWebServer = true\n```\n\nAlternatively, you can generate self signed certificates using `tools\u002Fbin\u002Fself-signed-certs` or [manually](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002Fwiki\u002FCreating-Self-Signed-Certificates).\n\nTo start your Chainlink node, simply run:\n\n```bash\nchainlink node start\n```\n\nBy default this will start on port 6688. You should be able to access the UI at [http:\u002F\u002Flocalhost:6688\u002F](http:\u002F\u002Flocalhost:6688\u002F).\n\nChainlink provides a remote CLI client as well as a UI. Once your node has started, you can open a new terminal window to use the CLI. You will need to log in to authorize the client first:\n\n```bash\nchainlink admin login\n```\n\n(You can also set `ADMIN_CREDENTIALS_FILE=\u002Fpath\u002Fto\u002Fcredentials\u002Ffile` in future if you like, to avoid having to login again).\n\nNow you can view your current jobs with:\n\n```bash\nchainlink jobs list\n```\n\nTo find out more about the Chainlink CLI, you can always run `chainlink help`.\n\nCheck out the [doc](https:\u002F\u002Fdocs.chain.link\u002F) pages on [Jobs](https:\u002F\u002Fdocs.chain.link\u002Fdocs\u002Fjobs\u002F) to learn more about how to create Jobs.\n\n### Configuration\n\nNode configuration is managed by a combination of environment variables and direct setting via API\u002FUI\u002FCLI.\n\nCheck the [official documentation](https:\u002F\u002Fdocs.chain.link\u002Fdocs\u002Fconfiguration-variables) for more information on how to configure your node.\n\n### External Adapters\n\nExternal adapters are what make Chainlink easily extensible, providing simple integration of custom computations and specialized APIs. A Chainlink node communicates with external adapters via a simple REST API.\n\nFor more information on creating and using external adapters, please see our [external adapters page](https:\u002F\u002Fdocs.chain.link\u002Fdocs\u002Fexternal-adapters).\n\n## Verify Official Chainlink Releases\n\nWe use `cosign` with OIDC keyless signing during the [Build, Sign and Publish Chainlink](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002Factions\u002Fworkflows\u002Fbuild-publish.yml) workflow.\n\nIt is encourage for any node operator building from the official Chainlink docker image to verify the tagged release version was did indeed built from this workflow.\n\nYou will need `cosign` in order to do this verification. [Follow the instruction here to install cosign](https:\u002F\u002Fdocs.sigstore.dev\u002Fsystem_config\u002Finstallation\u002F).\n\n```bash\n# tag is the tagged release version - ie. 2.16.0\ncosign verify index.docker.io\u002Fsmartcontract\u002Fchainlink:${tag} \\\n      --certificate-oidc-issuer https:\u002F\u002Ftoken.actions.githubusercontent.com \\\n      --certificate-identity \"https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002F.github\u002Fworkflows\u002Fbuild-publish.yml@refs\u002Ftags\u002Fv${tag}\"\n```\n\n## Development\n\n### Running tests\n\n1. [Install pnpm 10 via npm](https:\u002F\u002Fpnpm.io\u002Finstallation#using-npm)\n\n2. Install [gencodec](https:\u002F\u002Fgithub.com\u002Ffjl\u002Fgencodec) and [jq](https:\u002F\u002Fstedolan.github.io\u002Fjq\u002Fdownload\u002F) to be able to run `go generate .\u002F...` and `make abigen`\n\n3. Install mockery\n\n`make mockery`\n\nUsing the `make` command will install the correct version.\n\n4. Generate and compile static assets:\n\n```bash\nmake generate\n```\n\n5. Prepare your development environment:\n\nThe tests require a postgres database. In turn, the environment variable\n`CL_DATABASE_URL` must be set to value that can connect to `_test` database, and the user must be able to create and drop\nthe given `_test` database.\n\nNote: Other environment variables should not be set for all tests to pass\n\nThere helper script for initial setup to create an appropriate test user. It requires postgres to be running on localhost at port 5432. You will be prompted for\nthe `postgres` user password\n\n```bash\nmake setup-testdb\n```\n\nThis script will save the `CL_DATABASE_URL` in `.dbenv`\n\nChanges to database require migrations to be run. Similarly, `pull`'ing the repo may require migrations to run.\nAfter the one-time setup above:\n\n```\nsource .dbenv\nmake testdb\n```\n\nIf you encounter the error `database accessed by other users (SQLSTATE 55006) exit status 1`\nand you want force the database creation then use\n\n```\nsource .dbenv\nmake testdb-force\n```\n\n7. Run tests:\n\n```bash\ngo test .\u002F...\n```\n\n#### Notes\n\n- The `parallel` flag can be used to limit CPU usage, for running tests in the background (`-parallel=4`) - the default is `GOMAXPROCS`\n- The `p` flag can be used to limit the number of _packages_ tested concurrently, if they are interferring with one another (`-p=1`)\n- The `-short` flag skips tests which depend on the database, for quickly spot checking simpler tests in around one minute\n\n#### Race Detector\n\nAs of Go 1.1, the runtime includes a data race detector, enabled with the `-race` flag. This is used in CI via the\n`tools\u002Fbin\u002Fgo_core_race_tests` script. If the action detects a race, the artifact on the summary page will include\n`race.*` files with detailed stack traces.\n\n> _**It will not issue false positives, so take its warnings seriously.**_\n\nFor local, targeted race detection, you can run:\n\n```bash\nGORACE=\"log_path=$PWD\u002Frace\" go test -race .\u002Fcore\u002Fpath\u002Fto\u002Fpkg -count 10\nGORACE=\"log_path=$PWD\u002Frace\" go test -race .\u002Fcore\u002Fpath\u002Fto\u002Fpkg -count 100 -run TestFooBar\u002Fsub_test\n```\n\nhttps:\u002F\u002Fgo.dev\u002Fdoc\u002Farticles\u002Frace_detector\n\n#### Fuzz tests\n\nAs of Go 1.18, fuzz tests `func FuzzXXX(*testing.F)` are included as part of the normal test suite, so existing cases are executed with `go test`.\n\nAdditionally, you can run active fuzzing to search for new cases:\n\n```bash\ngo test .\u002Fpkg\u002Fpath -run=XXX -fuzz=FuzzTestName\n```\n\nhttps:\u002F\u002Fgo.dev\u002Fdoc\u002Ffuzz\u002F\n\n### Go Modules\n\nThis repository contains three Go modules:\n\n```mermaid\nflowchart RL\n    github.com\u002Fsmartcontractkit\u002Fchainlink\u002Fv2\n    github.com\u002Fsmartcontractkit\u002Fchainlink\u002Fintegration-tests --> github.com\u002Fsmartcontractkit\u002Fchainlink\u002Fv2\n    github.com\u002Fsmartcontractkit\u002Fchainlink\u002Fcore\u002Fscripts --> github.com\u002Fsmartcontractkit\u002Fchainlink\u002Fv2\n\n```\n\nThe `integration-tests` and `core\u002Fscripts` modules import the root module using a relative replace in their `go.mod` files,\nso dependency changes in the root `go.mod` often require changes in those modules as well. After making a change, `go mod tidy`\ncan be run on all three modules using:\n\n```\nmake gomodtidy\n```\n\n### Code Generation\n\nGo generate is used to generate mocks in this project. Mocks are generated with [mockery](https:\u002F\u002Fgithub.com\u002Fvektra\u002Fmockery) and live in core\u002Finternal\u002Fmocks.\n\n### Nix\n\nA [shell.nix](https:\u002F\u002Fnixos.wiki\u002Fwiki\u002FDevelopment_environment_with_nix-shell) is provided for use with the [Nix package manager](https:\u002F\u002Fnixos.org\u002F). By default,we utilize the shell through [Nix Flakes](https:\u002F\u002Fnixos.wiki\u002Fwiki\u002FFlakes).\n\nNix defines a declarative, reproducible development environment. Flakes version use deterministic, frozen (`flake.lock`) dependencies to\ngain more consistency\u002Freproducibility on the built artifacts.\n\nTo use it:\n\n1. Install [nix package manager](https:\u002F\u002Fnixos.org\u002Fdownload.html) in your system.\n\n- Enable [flakes support](https:\u002F\u002Fnixos.wiki\u002Fwiki\u002FFlakes#Enable_flakes)\n\n2. Run `nix develop`. You will be put in shell containing all the dependencies.\n\n- Optionally, `nix develop --command $SHELL` will make use of your current shell instead of the default (bash).\n- You can use `direnv` to enable it automatically when `cd`-ing into the folder; for that, enable [nix-direnv](https:\u002F\u002Fgithub.com\u002Fnix-community\u002Fnix-direnv) and `use flake` on it.\n\n3. Create a local postgres database:\n\n```sh\nmkdir -p $PGDATA && cd $PGDATA\u002F\ninitdb\npg_ctl -l postgres.log -o \"--unix_socket_directories='$PWD'\" start\ncreatedb chainlink_test -h localhost\ncreateuser --superuser --password chainlink -h localhost\n# then type a test password, e.g.: chainlink, and set it in shell.nix CL_DATABASE_URL\n```\n\n4. When re-entering project, you can restart postgres: `cd $PGDATA; pg_ctl -l postgres.log -o \"--unix_socket_directories='$PWD'\" start`\n   Now you can run tests or compile code as usual.\n5. When you're done, stop it: `cd $PGDATA; pg_ctl -o \"--unix_socket_directories='$PWD'\" stop`\n\n### Changesets\n\nWe use [changesets](https:\u002F\u002Fgithub.com\u002Fchangesets\u002Fchangesets) to manage versioning for libs and the services.\n\nEvery PR that modifies any configuration or code, should most likely accompanied by a changeset file.\n\nTo install `changesets`:\n\n1. Install `pnpm` if it is not already installed - [docs](https:\u002F\u002Fpnpm.io\u002Finstallation).\n2. Run `pnpm install`.\n\nEither after or before you create a commit, run the `make gocs` command to create an accompanying changeset entry which will reflect on the CHANGELOG for the next release.\n\nThe format is based on [Keep a Changelog](https:\u002F\u002Fkeepachangelog.com\u002Fen\u002F1.0.0\u002F),\n\nand this project adheres to [Semantic Versioning](https:\u002F\u002Fsemver.org\u002Fspec\u002Fv2.0.0.html).\n\n### Tips\n\nFor more tips on how to build and test Chainlink, see our [development tips page](https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink\u002Fwiki\u002FDevelopment-Tips).\n\n### Contributing\n\nContributions are welcome to Chainlink's source code.\n\nPlease check out our [contributing guidelines](.\u002Fdocs\u002FCONTRIBUTING.md) for more details.\n\nThank you!\n","Chainlink 是一个去中心化的预言机网络节点，用于连接链上和链下计算。它主要使用 Go 语言开发，核心功能包括为智能合约提供安全可靠的外部数据接入以及执行复杂的链下计算任务。Chainlink 的设计确保了即使在处理敏感信息时也能保持区块链技术的高安全性与可靠性。适用于需要将现实世界的数据或事件（如价格、天气等）引入到区块链上的各种应用场景中，特别是在金融、保险等行业构建基于真实数据触发的智能合约服务。",2,"2026-06-11 03:28:47","top_topic"]