Anchor 0.1.0 发布:Sigma Prime 的 Rust SSV 客户端

Anchor 0.1.0 是 Sigma Prime 发布的基于 Rust 语言的 SSV (Secret Shared Validators) 客户端,旨在为 SSV 网络提供一个独立的、多样化的客户端实现,以提高网络的安全性和稳定性。该版本目前仅限于在测试网上部署,并提供了多种安装和运行方式,欢迎开发者参与贡献。

Anchor 0.1.0:Sigma Prime 的 Rust SSV 客户端

我们很高兴地宣布 Anchor 的首次公开发布,这是我们基于 Rust 的分布式验证器技术 (DVT) 客户端,用于 SSV 网络。

Anchor 是 SSV 协议的一个独立实现,用 Rust 编写,并建立在 Lighthouse(Sigma Prime 的 Ethereum 共识客户端)的基础上。截至本次发布,Anchor 可以在公共测试网上与 SSV Labs 现有的 Golang 实现互操作,从而为 SSV 网络提供了一个替代客户端。

重要提示:此版本仅限于测试网部署。由于 Anchor 仍在开发中,存在已知问题,并且尚未经过全面审计,因此已故意禁用主网连接。所有功能均被视为 WIP,CLI、HTTP API 和 Prometheus 指标等接口可能会在未来的版本中发生更改。

为什么构建 Rust SSV 实现?

客户端多样性

多个独立的客户端可以降低整个网络发生故障的风险。不同的代码库,由不同的团队用不同的语言编写,有助于防止错误或漏洞影响整个 SSV 生态系统。

分布式验证器技术

DVT 允许多个运营商共同管理验证器职责,而无需任何单个运营商访问完整的验证器私钥。每个运营商都持有一个密钥份额,并参与阈值签名方案以签署证明和提议。这种方法将验证器运营的责任分配给多个参与方,减少了单点故障,同时保持了 Ethereum 质押的非托管属性。

在哪里可以找到该版本

Anchor 0.1.0 可以通过多个分发渠道获得:

预构建的二进制文件 Linux 和 MacOS 的预构建二进制文件可在我们的 Github 上的 sigp/anchor/releases 上找到。

Docker 镜像:预构建的 Docker 镜像可在 Docker Hub 上的 sigp/anchor 上找到。可用的标签包括:

  • latest(稳定版本)
  • latest-unstable(开发版本)

访问 hub.docker.com/r/sigp/anchor/tags 以查看可用 Docker 镜像和支持架构的完整列表。

源代码:完整的源代码也可在 GitHub 上的 sigp/anchor 上找到。你可以使用标准的 Rust 构建命令编译 Anchor:

## 克隆存储库
git clone https://github.com/sigp/anchor.git
cd anchor

## 使用 Cargo 构建
cargo build --release

## 该二进制文件将在 target/release/anchor 中可用
./target/release/anchor --help

安装

## 使用 Docker
docker pull sigp/anchor:latest

## 或从源代码编译
git clone https://github.com/sigp/anchor.git && cd anchor
make install

在 Hoodi 上运行 Anchor SSV 运营商

前提条件

Anchor 需要访问 Ethereum 执行客户端和共识客户端:

执行层:Anchor 需要执行客户端的 HTTP RPC 和 WebSocket 端点:

  • HTTP RPC 端点(默认:http://localhost:8545
  • WebSocket 端点(默认:ws://localhost:8546

共识层:信标节点 HTTP API 端点(默认:http://localhost:5052

步骤 1:生成 RSA 密钥

生成你的运营商身份所需的 RSA 密钥:

## 生成未加密的密钥(开发)
anchor keygen

## 生成加密的密钥(推荐)
anchor keygen --password --output-path ~/.anchor

保存你的公钥输出 - 你将需要它来进行运营商注册。

步骤 2:注册为 SSV 运营商

使用 SSV webapp 在 SSV 网络上注册你的运营商:

  1. 连接你的钱包
  2. 选择“加入作为运营商”
  3. 输入你的公钥和运营商详细信息
  4. 提交注册交易

有关详细说明,请参阅 SSV 运营商注册文档

步骤 3:配置并运行 Anchor

准备好你的数据目录并启动 Anchor 节点:

## 设置数据目录
mkdir -p ~/.anchor
mv key.pem ~/.anchor/hoodi  # 如果在其他地方生成并在 Hoodi 测试网上运行

## 在 Hoodi 测试网上启动 Anchor
anchor node \
  --network hoodi \
  --beacon-nodes http://localhost:5052 \
  --execution-rpc http://localhost:8545 \
  --execution-ws ws://localhost:8546 \
  --metrics

如果你加密了密钥,系统会在启动期间提示你输入密码。

监控

验证你的运营商是否正常运行:

  • SSV 网络浏览器 上检查运营商状态
  • http://localhost:5164 上查看指标(如果启用了 --metrics
  • 监控对等连接和验证器职责参与的日志

将验证器分配给你的运营商委员会

在你的 Anchor 运营商运行后,你可以创建一个包含你的运营商的分布式验证器委员会。SSV 使用阈值签名方案,其中验证器职责在多个运营商之间分配,从而提供容错能力,而无需运营商之间的信任。

测试⽹验证的先决条件

  • 测试网验证器:32 ETH 存入 Hoodi 测试网信标链
  • 验证器密钥库:测试网验证器的密钥库文件和密码
  • SSV 代币:用于支付运营费用的测试网 SSV 代币
  • 运营商选择:你的 Anchor 运营商以及其他运营商来完成委员会

委员会结构和容错

SSV 委员会遵循 n>=3f+1 结构,其中 f 代表委员会可以容忍的故障运营商数量:

  • 4 个运营商(最少):容忍 1 个离线运营商
  • 7 个运营商:容忍 2 个离线运营商
  • 10 个运营商:容忍 3 个离线运营商
  • 13 个运营商(当前最多):容忍 4 个离线运营商

根据你期望的容错能力选择委员会规模。较大的委员会提供更高的弹​​性,但会增加运营成本。

步骤 1:访问 SSV Webapp

导航到 app.ssv.network 并将你的钱包连接到 Hoodi 测试网。

步骤 2:启动验证器分配

从界面中选择“分配验证器”。

步骤 3:建立你的委员会

为你的委员会选择运营商,包括选择你的 Anchor 运营商。选择其他运营商以达到你期望的委员会规模(4、7、10 或 13),并查看运营商绩效指标和费用。

步骤 4:配置运营资金

设置运营周转期并存入所需数量的测试网 SSV 代币。你可以从 SSV 网络 faucet 获取测试网 SSV 代币。

步骤 5:生成密钥份额

对于测试网部署,请使用 SSV webapp 的在线密钥拆分工具。选择“在线”密钥拆分(仅在测试网上可用),上传你的验证器密钥库文件,输入密钥库密码,webapp 将自动生成和分配密钥份额。

替代方案:如果你不喜欢使用 Web 门户,请在本地使用 Anchor 的内置密钥拆分工具。请注意,截至本版本,本地拆分的密钥在拆分后仍需要通过 SSV webapp 添加,以便将其分配给运营商。

## Anchor 内置的 keysplitter
anchor keysplit onchain \
  --keystore-path /path/to/validator.json \
  --password validator_password \
  --owner 0x<your_wallet_address> \
  --output-path ./keyshares \
  --operators 1,2,3,4 \
  --rpc https://rpc.hoodi.node \
  --network hoodi

你的验证器现在将作为一个分布式委员会运行,你的 Anchor 运营商与其他运营商一起参与,以提供容错验证服务。

当前状态 & 贡献

已知问题

此版本有几个已知的限制:

  • 同步委员会聚合职责可能会失败,从而导致错误消息,例如“无法签署同步委员会贡献”和“签署同步委员会贡献时发生意外错误”。请注意,同步委员会签名本身可以工作并且已正确发布,因此大多数同步委员会职责应正确包含在信标链上。
  • 很少情况下,提案可能会失败。如果发生这种情况,请随时联系,因为日志将极大地帮助我们解决此问题。
  • 在某些情况下,传出消息的内部验证可能会失败,从而导致消息,例如“传出消息的验证失败 (Reject) err=ExcessiveDutyCount”。
  • 在初始同步期间,节点将发出多个 WARN 日志,其中包含消息“尝试更新未知验证器的索引”。这是预期的行为,并且将在未来的版本中调整日志记录。
  • 在初始同步期间,节点可能会重复记录“ERROR eth::index_sync: Failed to update validator indices err=SQLPoolError("timed out waiting for connection")”。 同步应该仍然能够完成。

反馈和支持

对于问题、反馈或疑问:

贡献

Anchor 欢迎有兴趣构建分布式验证器技术的开发人员做出贡献:

  1. 阅读我们的 贡献指南
  2. 设置开发环境
  3. 浏览 未解决的问题(查找“good first issue”标签)
  4. 在开始工作之前评论问题
  5. 通过 pull request 提交你的工作

分支:

  • stable:始终指向最新的稳定版本(非常适合大多数用户)

  • unstable:用于开发(开发人员应该基于此分支创建 PR)

    • *

虽然此版本仅限于测试网部署,但我们很高兴收集社区反馈并继续构建更具弹性和去中心化的验证生态系统。

有关最新更新和详细文档,请访问 anchor-book.sigmaprime.io

  • 原文链接: blog.sigmaprime.io/ancho...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
sigmaprime
sigmaprime
江湖只有他的大名,没有他的介绍。