1 个不稳定版本
0.1.0 | 2023年5月17日 |
---|
#20 在 #eth
27KB
532 行
CheckpointQ
CheckpointQ(其中Q代表共识),是一个在多个Ethereum检查点提供者之间建立最终检查点共识的工具。
它会对多个检查点提供者发起请求,并且只有当配置的提供者中有超过2/3返回相同的检查点块根时,才返回最终检查点块根。
这确保了您不需要信任单个检查点提供者。提供者对最终检查点的一致性越高,您可以越有信心。
安装
目前,没有CheckpointQ的二进制发行版,因此您只能使用Rust工具链从源代码构建。
- 安装Rust。有关详细信息,请参阅此处。
- 克隆仓库。
- 运行
cargo build --release
以构建二进制文件。 - 运行
./target/release/checkpointq
以运行二进制文件。
用法
使用 --help
标志运行二进制文件以查看可用选项
Tool for establishing checkpoint quorum for finalized checkpoints across multiple checkpoint providers
Usage: checkpointq [OPTIONS] [COMMAND]
Commands:
server Run in server mode
help Print this message or the help of the given subcommand(s)
Options:
-e, --endpoints <ENDPOINTS> Path to config file where endpoints for network are listed. default is ./endpoint.yaml
-n, --network <NETWORK> [possible values: mainnet, goerli, sepolia]
-v, --verbose Display verbose result or not
-h, --help Print help information
-V, --version Print version information
CheckpointQ需要一个配置文件。示例文件可以在此处找到。配置文件是一个yaml文件,其中包含检查点提供者的端点。配置文件可以通过使用 -
标志传递给工具。以下是yaml文件内容的示例
endpoints:
mainnet:
- https://mainnet-checkpoint-sync.attestant.io
- https://beaconstate.ethstaker.cc
- https://beaconstate.info
- https://mainnet-checkpoint-sync.stakely.io
- https://checkpointz.pietjepuk.net
- https://sync.invis.tools
- https://sync-mainnet.beaconcha.in
- https://mainnet.checkpoint.sigp.io
- https://beaconstate-mainnet.chainsafe.io
goerli:
- https://sync-goerli.beaconcha.in
- https://goerli-sync.invis.tools
- https://goerli.beaconstate.ethstaker.cc
- https://prater-checkpoint-sync.stakely.io
- https://beaconstate-goerli.chainsafe.io
- https://goerli.checkpoint-sync.ethdevops.io
- https://goerli.beaconstate.info
- https://prater.checkpoint.sigp.io
sepolia:
- https://beaconstate-sepolia.chainsafe.io
- https://sepolia.beaconstate.info
- https://sepolia.checkpoint-sync.ethdevops.io
例如
➜ checkpointq git:(master) ✗ ./target/release/checkpointq --network sepolia --endpoints ./endpoints.yaml
Block root: 0x32c1b19ee499bfbd68b656eed0cf96278c4362942ad48b6cc7d15f620401351c
Epoch: 44614
工具可以以两种模式运行:默认模式会获取当前的最终块根并将其打印到控制台,以及 server
模式,它会运行一个服务器并公开 /:network/finalized
路径,其中可以请求最终块根。
通过运行 server
命令来启用 server
模式
例如
➜ checkpointq git:(master) ✗ ./target/release/checkpointq server --endpoints ./endpoints.yaml
默认端口为 7070
。可以通过使用 /:network/finalized
端点向服务器发送请求,例如
➜ checkpointq git:(master) ✗ curl https://127.0.0.1:7070/sepolia/finalized | jq
{
"block_root": "0x32c1b19ee499bfbd68b656eed0cf96278c4362942ad48b6cc7d15f620401351c",
"epoch": "44614"
}
依赖关系
~15–29MB
~473K SLoC