4 个版本

0.2.0 2024 年 7 月 11 日
0.2.0-rc.12024 年 6 月 27 日
0.1.0 2024 年 5 月 21 日
0.1.0-rc.12024 年 5 月 15 日
0.0.0 2024 年 1 月 4 日

#34#阈值签名

AGPL-3.0 或更高版本

1MB
9K SLoC

熵核心

CircleCI

此仓库包含熵区块链节点、阈值签名服务器(评估程序、存储阈值密钥份额和协调阈值签名)以及网络的各种测试工具。

我们的区块链节点是用 SubstrateSubstrate 的节点模板 编写的。

文档

您可以通过调用 cargo doc --no-deps --open 来构建 Entropy 的 API 文档。此外,这里还有 Entropy 的高级文档

入门指南

您可以通过多种方式开始使用此仓库。本节描述了一些方法。

使用 Docker 入门

此仓库提供了一个 Docker Compose 配置,可以启动一个简单的、两节点的开发区块链。我们提供了您可以拉取的 Docker 镜像,或者您也可以从源代码构建。

执行以下操作 以使用 Docker Compose 配置

  1. 安装 Docker。请确保您还安装了 Docker Compose。通过运行来确认
    docker compose version
    
  2. 启动配置
    docker compose up --detach # Detaching is optional.
    
  3. 如果您需要从 Docker 主机机器直接与阈值签名方案服务器通信,您还可能需要将其地址包含在您本地的 /etc/hosts 文件中
    echo "127.0.0.1	alice-tss-server bob-tss-server charlie-tss-server" | sudo tee -a /etc/hosts
    
  4. 确认您的本地开发网络正在运行。您可以
    • 查看服务器日志
      docker compose logs --follow # Following is also optional.
      
    • 使用 Entropy 测试 CLI 与本地运行的网络进行交互
      cargo run -p entropy-test-cli -- --chain-endpoint="ws://127.0.0.1:9944" status
      

从源码构建

要从源码构建,您需要在您的本地机器上安装一些开发工具。

执行以下操作 以从源码构建 Entropy。

  1. 安装 Rust操作系统依赖的 Substrate
  2. 通过运行以下命令构建链节点和阈值签名方案(TSS)服务器二进制文件:
    cargo build --release
    

运行:单节点开发链

可以使用以下命令启动本地 Entropy 节点进行开发和基本测试:

cargo run --release -p entropy -- --dev --rpc-external

构建完成后,二进制文件也可以直接运行。

./target/release/entropy --dev --rpc-external

可选地,您也可以启用详细日志来运行它。

RUST_BACKTRACE=1 ./target/release/entropy -ldebug --dev --rpc-external

测试

测试是通过 cargo test 来完成的。

要成功运行服务器测试,需要一个 Entropy 节点二进制文件。

您可以使用 ENTROPY_NODE 环境变量手动提供二进制文件。

ENTROPY_NODE="/path/to/entropy" cargo test -p entropy-tss

或者,如果没有使用 ENTROPY_NODE 指定路径,则测试套件将在 target 文件夹中搜索二进制文件。调试或发布二进制文件将根据测试套件的构建方式来选择。

例如,运行 cargo test -p entropy-tss --release 将期望 Entropy 节点的发布二进制文件,您可以按以下方式构建: cargo build -p entropy --release

要运行单个测试,您可以按以下方式指定测试:

cargo test -p entropy-tss --features unsafe -- test_sign_tx_no_chain --nocapture

与 Polkadot-JS 应用前端连接

一旦节点模板在本地运行,您可以使用 Polkadot-JS Apps 前端连接它,以与您的链进行交互。 点击此处 将 Apps 连接到您的本地节点模板。

命令行界面

此存储库包含一个简单的命令行界面客户端,用于测试目的。它可以与本地 docker-compose 网络和网络部署一起使用。

然而,它仅适用于测试网络,没有安全的私钥存储。要获得功能齐全的命令行客户端,请参阅 entropyxyz/cli

阈值密钥

  • 仅用于内部 devnet 的密钥(用于测试和与 docker-compose 构建的本地网络)。这些密钥不安全,它们仅用于方便,请勿将其用于任何真实用途。

Alice

  • 秘密短语 alarm mutual concert decrease hurry invest culture survey diagram crash snap click 是账户
  • 网络 ID/版本: substrate
  • 秘密种子: 0x29b55504652cedded9ce0ee1f5a25b328ae6c6e97827f84eee6315d0f44816d8
  • 公钥(十六进制): 0xe0543c102def9f6ef0e8b8ffa31aa259167a9391566929fd718a1ccdaabdb876
  • 账户 ID: 0xe0543c102def9f6ef0e8b8ffa31aa259167a9391566929fd718a1ccdaabdb876
  • SS58 地址: 5H8qc7f4mXFY16NBWSB9qkc6pTks98HdVuoQTs1aova5fRtN

Bob

  • 密语 where sight patient orphan general short empower hope party hurt month voice 是账户
  • 网络 ID/版本: substrate
  • 密种: 0xb0b5348db82db32d10a37b578e4c6242e148f14648661dccf8b3002fafa72cdd
  • 公钥(十六进制): 0x2a8200850770290c7ea3b50a8ff64c6761c882ff8393dc95fccb5d1475eff17f
  • 账户ID: 0x2a8200850770290c7ea3b50a8ff64c6761c882ff8393dc95fccb5d1475eff17f
  • SS58地址: 5D2SVCUkK5FgFiBwPTJuTN65J6fACSEoZrL41thZBAycwnQV

Charlie

  • 密语 lake carry still awful point mention bike category tornado plate brass lock 是账户
  • 网络ID/版本:substrate
  • 密种: 0xb9085925e9452f3e465b51a883a0dbb2c13d5610b6f8f7e7f206f7f044daa419
  • 公钥(十六进制): 0x14d223daeec68671f07298c66c9458980a48bb89fb8a85d5df31131acad8d611
  • 账户ID: 0x14d223daeec68671f07298c66c9458980a48bb89fb8a85d5df31131acad8d611
  • SS58地址: 5CY1EquGdAiiJJ28FDiT8EB1C3gnMixtPn4pbSggFF6nUat7

拉取元数据

每次链接口发生变化时,都需要拉取元数据。您需要使用 cargo install subxt-cli 安装Subxt。然后 运行开发链,然后调用 脚本 ./scripts/pull_entropy_metadata.sh

支持

需要帮助解决与 entropy-core 无关的问题吗?

前往 Entropy 社区仓库 寻求支持或提交工单。

许可协议

本仓库中的代码大部分采用 AGPL-3.0 许可协议。

但是也有一些例外

  • kvdb 库的原始代码来自 Alexar 的 tofnd 项目,该项目采用 MIT 许可协议。
  • runtimenode 库的原始代码来自 Parity 的 Substrate 项目,该项目采用 GPL-3.0-or-later WITH Classpath-exception-2.0 许可协议。
  • transaction-pause 合约的原始代码来自 Acala 项目,该项目采用 GPL-3.0-or-later WITH Classpath-exception-2.0 许可协议。

Entropy 对这些库所做的修改采用 AGPL-3.0 许可协议。

依赖项

~86–120MB
~2M SLoC