#ethereum #consensus #eth #beacon-chain

bin+lib checkpointq

为多个检查点提供者之间最终检查点的共识建立工具

1 个不稳定版本

0.1.0 2023年5月17日

#20#eth

MIT 许可证

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