4 个版本
0.2.0 | 2024 年 7 月 11 日 |
---|---|
0.2.0-rc.1 | 2024 年 6 月 27 日 |
0.1.0 | 2024 年 5 月 21 日 |
0.1.0-rc.1 | 2024 年 5 月 15 日 |
0.0.0 |
|
在 #tss 中排名第 14
每月下载量 168
用于 entropy-testing-utils
625KB
9K SLoC
entropy-tss
存储密钥份额并执行熵协议的阈值签名服务器。
运行针对 entropy-protocol
私有用户 API 的 JS 绑定的集成测试
cd crates/protocol
make build-nodejs-testing
cd nodejs-test
yarn
cd ../../..
cargo test -p entropy-tss --release -F wasm_test test_wasm
如果在重新运行这些测试后遇到问题,请在重新运行 yarn
之前移除 nodejs-test/node_modules
。
lib.rs
:
服务器
存储密钥份额并参与签名协议的阈值服务器。
概述
这公开了一个 HTTP API。
HTTP 端点
某些端点是为用户设计的,某些是为熵链节点设计的,还有某些是为 server
的其他实例设计的
对于用户
大多数面向用户的端点都接受一个 SignedMessage,它是一个加密并签名的消息。
/user/sign_tx
- POST
[crate::user::api::sign_tx()]
由用户调用以提交待签名的事务(签名的新的方式)。接受一个在 SignedMessage 中加密的 [UserSignatureRequest]。
响应是分块响应流。如果可以处理 UserSignatureRequest
,则发送成功响应头。然后运行签名协议。当它完成后,响应流中将发送一条消息,包含结果。
如果一切顺利,消息将是一个包含单个属性 "Ok" 的 JSON 对象,其中包含一个包含两个字符串的数组。
例如
{"Ok":["t7Mcxfdigds3RoT6OO/P+uMFE+XigRjUpn72E1cRU4Q2u7cVxZlsNRYhnahA+DvSNHBddj0HRz5u/XPlJT9QOQE=","32d7c0bfd90b546993d1ad51c542e1fc9dd1706c7bca395c8bd7f9642ae842400769488404dabd25d438cf08785a6750f95e7489245b8760af115f450d5f0a83"]}
第一个字符串是由签名协议生成的base64编码签名。这是一个65字节的签名,最后一个字节是一个恢复ID。
第二个字符串是由TSS服务器生成的sr25519签名,可以用来自证这个响应确实来自这个TSS服务器。
如果签名不成功,消息将是一个包含单个属性"Err"的JSON对象,其中包含错误消息,例如
{"Err":"reqwest事件错误:无效状态码:500内部服务器错误"}
Curl示例用于user/sign_tx
curl -X POST -H "Content-Type: application/json" \
-d '{"msg" "0x174...hex encoded signedmessage...","sig":"821754409744cbb878b44bd1e3dc575a4ea721e12d781b074fcdb808fc79fd33dd1928b1a281c0b6261a30536a7c0106a102f27dad1bc3ef475b626f0e57c983","pk":[172,133,159,138,33,110,235,27,50,11,76,118,209,24,218,61,116,7,250,82,52,132,208,169,128,18,109,59,77,13,34,10],"recip":[10,192,41,240,184,83,178,59,237,101,45,109,13,230,155,124,195,141,148,249,55,50,238,252,133,181,134,30,144,247,58,34],"a":[169,94,23,7,19,184,134,70,233,117,2,84,242,135,246,95,159,14,218,125,209,191,175,89,41,196,182,96,117,5,159,98],"nonce":[114,93,158,35,209,188,96,248,85,131,95,237]}' \
-H "Accept: application/json" \
http://127.0.0.1:3001/user/sign_tx
对于区块链节点
/user/new
- POST
[crate::user::api::new_user()]
在用户注册期间由链下工作员(传播选板)调用。这接受一个parity scale编码的entropy_shared::types::OcwMessageDkg,它告诉我们哪些验证器在注册组中,并将执行DKG。
对于阈值服务器的其他实例
-
/user/receive_key
- 在注册或主动刷新期间从同一签名子组的另一个阈值服务器接收密钥份额。接受一个包含用户账户ID和相关密钥份额的[UserRegistrationInfo],封装在crate::validation::SignedMessage中。
-
/ws
- 签名和DKG协议消息的WebSocket服务器。这是在启动签名协议时由其他阈值服务器打开的。 -
/validator/sync_kvdb
- POST - 当另一个阈值服务器加入以获取其子组成员的密钥份额时调用。接受一个请求密钥份额的用户账户ID列表,封装在crate::validation::SignedMessage中。响应为crate::validation::SignedMessage列表,每个列表包含一个序列化的synedrion::KeyShare。
-
/version
- Get - 获取节点版本信息 -
/healthz
- Get - 获取节点是否正在运行 -
/hashes
- Get - 获取节点支持的哈希
用于测试/开发
不安全有额外的路由,仅供测试和开发目的,不会在生产中使用。这些路由仅在编译此crate时启用了unsafe
功能时才可用。
unsafe/get
- POST - 根据其键从键值存储中获取值。unsafe/put
- POST - 更新键值存储中的现有值。unsafe/delete
- POST - 根据其键从键值存储中删除值。unsafe/remove_keys
- GET - 从键值存储中删除所有内容。
已启动组件
依赖项
~86–120MB
~2M SLoC