这个 repo 包含 Chainlink 核心节点和合约。核心节点是捆绑的二进制文件,可由参与去中心化预言机网络的节点运营商运行。所有主要发行版本都有预构建的 docker 镜像,可从Chainlink dockerhub下载。
export PATH=$GOPATH/bin:$PATH
&export GOPATH=/Users/$USER/go
nvm install $NODE_VERSION && nvm use $NODE_VERSION
?sslmode=disable
在 Postgres 查询字符串中设置)。[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
git clone https://github.com/smartcontractkit/chainlink && cd chainlink
make install
chainlink help
基于 Apple Silicon 的本机构建应该开箱即用,但 Docker 映像需要更多考虑。
Chainlink Docker 镜像目前间接依赖于 WebAssemby,因为我们的terra-money/core
(CosmWasm) 依赖于smartcontractkit/chainlink-terra
. 这种依赖需要一个本地libwasmvm
库,它需要根据底层系统架构来获取。
默认情况下,将在 ARM64 系统(Apple Silicon)上构建支持 ARM64 的 Docker 映像,但也可以选择添加额外的LIBWASMVM_ARCH
构建参数并在aarch64
或之间进行选择x86_64
:
# LIBWASMVM_ARCH (libwasmvm.so) architecture choice, defaults to output of `uname -m` (arch) if unset
$ docker build . -t chainlink-develop:latest -f ./core/chainlink.Dockerfile --build-arg LIBWASMVM_ARCH=aarch64
注意:默认情况下,chainlink 将以 TLS 模式运行。对于本地开发,您可以通过设置以下环境变量来禁用此功能:
CHAINLINK_DEV=true
CHAINLINK_TLS_PORT=0
SECURE_COOKIES=false
tools/bin/self-signed-certs
或者,您可以使用或手动生成自签名证书。
要启动您的 Chainlink 节点,只需运行:
chainlink node start
默认情况下,这将在端口 6688 上启动。您应该能够通过http://localhost:6688/访问 UI 。
Chainlink 提供远程 CLI 客户端和 UI。节点启动后,您可以打开一个新的终端窗口来使用 CLI。您需要先登录以授权客户端:
chainlink admin login
(如果你愿意,你也可以ADMIN_CREDENTIALS_FILE=/path/to/credentials/file
在以后设置,以避免再次登录)。
现在您可以通过以下方式查看您当前的工作:
chainlink jobs list
要了解有关 Chainlink CLI 的更多信息,您可以随时运行chainlink help
.
查看Jobs的文档页面以了解有关如何创建 Jobs 的更多信息。
节点配置由环境变量和通过 API/UI/CLI 直接设置的组合管理。
查看官方文档以获取有关如何配置节点的更多信息。
外部适配器使 Chainlink 易于扩展,提供自定义计算和专用 API 的简单集成。Chainlink 节点通过简单的 REST API 与外部适配器通信。
有关创建和使用外部适配器的更多信息,请参阅我们的外部适配器页面。
安装mockery
make mockery
使用该make
命令将安装正确的版本。
pushd contracts
pnpm i
pnpm compile:native
popd
go generate ./...
export DATABASE_URL=postgresql://127.0.0.1:5432/chainlink_test?sslmode=disable
export CL_DATABASE_URL=$DATABASE_URL
注意:不应设置其他环境变量以使所有测试都通过
go run ./core/main.go local db preparetest
如果您最终修改了数据库的迁移,则需要重新运行
go test ./...
parallel
标志可用于限制 CPU 使用率,用于在后台运行测试 ( -parallel=4
) - 默认为GOMAXPROCS
p
标志可用于限制同时测试的包的数量,如果它们相互干扰(-p=1
)-short
标志跳过依赖于数据库的测试,以便在大约一分钟内快速抽查更简单的测试从 Go 1.1 开始,运行时包含一个数据竞争检测器,使用-race
flag 启用。这是通过 tools/bin/go_core_race_tests
脚本在 CI 中使用的。如果操作检测到竞争,摘要页面上的工件将包含 race.*
具有详细堆栈跟踪的文件。
它不会发出误报,所以请认真对待它的警告。
对于本地的、有针对性的种族检测,您可以运行:
GORACE="log_path=$PWD/race" go test -race ./core/path/to/pkg -count 10
GORACE="log_path=$PWD/race" go test -race ./core/path/to/pkg -count 100 -run TestFooBar/sub_test
https://go.dev/doc/articles/race_detector
从 Go 1.18 开始,模糊测试func FuzzXXX(*testing.F)
作为普通测试套件的一部分包含在内,因此现有案例使用go test
.
此外,您可以运行主动模糊测试来搜索新案例:
go test ./pkg/path -run=XXX -fuzz=FuzzTestName
目录内contracts/
:
pnpm i
pnpm test
Go generate 用于在该项目中生成模拟。模拟是用嘲讽生成的,存在于核心/内部/模拟中。
提供了一个shell.nix用于与Nix 包管理器一起使用,具有可选的薄片支持。它定义了一个声明式的、可重现的开发环境。Flakes 版本使用确定性的、冻结的 ( flake.lock
) 依赖项,而非 flakes shell 将使用您频道的包版本。
使用它:
nix-shell
。您将被放入包含所有依赖项的 shell 中。nix develop
而不是nix-shell
. 可选地,nix develop --command $SHELL
将使用您当前的 shell 而不是默认的 (bash)。direnv
时自动启用它;cd
为此,启用nix -direnv或启用它。use nix
use flake
mkdir -p $PGDATA && cd $PGDATA/
initdb
pg_ctl -l postgres.log -o "--unix_socket_directories='$PWD'" start
createdb chainlink_test -h localhost
createuser --superuser --password chainlink -h localhost
# then type a test password, e.g.: chainlink, and set it in shell.nix DATABASE_URL
cd $PGDATA; pg_ctl -l postgres.log -o "--unix_socket_directories='$PWD'" start
现在您可以像往常一样运行测试或编译代码。cd $PGDATA; pg_ctl -o "--unix_socket_directories='$PWD'" stop
[/hidecontent]