7 个版本
0.4.3 | 2024 年 6 月 7 日 |
---|---|
0.4.2 | 2024 年 4 月 23 日 |
0.4.0 | 2023 年 9 月 15 日 |
0.3.4 | 2022 年 1 月 13 日 |
0.2.1 | 2021 年 5 月 6 日 |
#1 in #indy
每月 25 次下载
580KB
14K SLoC
Indy-VDR (可验证数据注册表)
简介
这个库是从 Hyperledger Indy SDK 衍生出来的,用于连接到 Indy 节点 区块链账本的更有限的使用场景。它用 Rust 编写,目前包括一个 Python 包装器和独立的代理服务器。
这个库仍在开发中,目前没有标准的发布包。
特性
Indy-VDR 可以用于连接到一个或多个给定创世交易的 Indy 节点账本池。提供构建账本请求并将其发送到验证者的方法,收集结果并确保节点之间存在共识。
从源代码构建
首先,您必须安装 Rust。对于开发,我们推荐使用带有 RLS 插件的 VS Code。
可以在根目录中运行 cargo build
来构建库和代理服务器。要仅构建库,请使用 cargo build --lib
。您可以通过添加 --release
来生成更小、更快的二进制文件,但会减少调试时可用信息。
此代码应能编译并将共享库和 indy-vdr-proxy
可执行文件放置在 target/debug
子目录中。在 Linux 上,库将被命名为 libindy_vdr.so
,在 Windows 上为 libindy_vdr.dll
,在 Mac OS 上为 libindy_vdr.dylib
。
包装器
Python 包装器位于 wrappers/python/indy_vdr
。为了使包装器能够定位共享库,后者可以放置在系统共享库目录中,例如 /usr/local/lib
。否则,必须将共享库的位置添加到您平台的相应环境变量中:Windows 上的 PATH
,Linux 上的 LD_LIBRARY_PATH
,或 Mac OS 上的 DYLD_LIBRARY_PATH
。
稍后应可以使用 pip install indy_vdr
通过您的平台预编译的 'wheel' 软件包进行安装,但目前在编译库时必须从源代码开始。
代理服务器
可以使用 indy-vdr-proxy
可执行文件提供一个简单的 REST API,用于与一个或多个 Indy 账本进行交互。可以通过运行 indy-vdr-proxy --help
检查命令行选项。
要启动单个账本的代理服务器,请使用以下命令
indy-vdr-proxy -p <PORT> (-g <OPTIONAL_PATH_TO_GENESIS_FILE>)
要使用 Indy 账本的默认配置启动代理服务器,请使用以下命令: indy-vdr-proxy -p <PORT> -- --multiple-ledgers
这将从 https://github.com/IDunion/indy-did-networks
获取账本配置。
可以通过指定 GitHub 仓库或本地文件夹提供自定义账本配置
indy-vdr-proxy -p <PORT> -g <GITHUB_URL or PATH_TO_FOLDER> -- --multiple-ledgers
结构需要如下所示 <NAMESPACE>/OPTIONAL<SUB_NAMESPACE>/pool_transactions_genesis.json
,例如 /sovrin/staging/pool_transactions_genesis.json
响应可以以 HTML 或 JSON 格式进行格式化。当请求的 text/html
内容类型根据接受头(如网络浏览器发送的)或请求查询字符串设置为 ?html
时,将选择 HTML 格式。否则,将选择 JSON 格式,并且可以使用查询字符串 ?raw
显式选择。对于大多数账本请求,JSON 响应包含有关联系了哪些节点信息,并在 X-Requests
标头中返回。
通过向 {LEDGER}/submit
端点发送 POST 请求,执行向账本发送准备好的请求,其中请求正文是 JSON 格式的有效载荷。还提供了其他端点作为账本读取交易的快捷方式
/
返回配置的账本{LEDGER}/
服务器和账本池的基本状态信息{LEDGER}/genesis
返回当前创世交易集合{LEDGER}/taa
获取当前账本的交易授权协议{LEDGER}/aml
获取当前账本的TAA接受方法列表{LEDGER}/nym/{DID}
获取与未限定DID关联的NYM交易。可以使用timestamp
或seq_no
查询参数来获取特定版本{LEDGER}/attrib/{DID}/endpoint
获取未限定DID注册的端点{LEDGER}/schema/{SCHEMA_ID}
通过其标识符获取模式{LEDGER}/cred_def/{CRED_DEF_ID}
通过其标识符获取凭证定义{LEDGER}/rev_reg/{REV_REG_ID}
通过其标识符获取撤销注册{LEDGER}/rev_reg_def/{REV_REG_ID}
通过注册标识符获取撤销注册定义{LEDGER}/rev_reg_delta/{REV_REG_ID}
通过注册标识符获取撤销注册增量{LEDGER}/auth
获取账本的所有AUTH规则{LEDGER}/auth/{TXN_TYPE}/{ADD|EDIT}
获取特定交易类型和操作的AUTH规则{LEDGER}/txn/{SUBLEDGER}/{SEQ_NO}
通过子账本标识符(0-2,或pool
、domain
或config
之一)和序列号获取特定交易。
如果使用单账本代理服务器,则路径中的{LEDGER}
部分必须省略。
DID:Indy 解析器
Indy VDR 包含一个DID解析器,用于根据did:indy规范解析DID并将DID URL反引用到配置的账本对象。
GET /1.0/标识符/{DID或DID_URL}
连接到账本
无论使用库还是代理服务器,您都需要一个包含一组池创世交易的genesis.txn
文件。您可以使用VON-Network在Docker中运行本地池,或遵循Indy-SDK说明。
无论使用何种库,都可以通过设置环境变量RUST_LOG
来调整生成的日志消息量。可接受的值有error
、warn
、info
、debug
和trace
。在发生致命错误的情况下,也可以设置环境变量RUST_BACKTRACE
为full
以获得扩展输出。
如何贡献
- 加入Hyperledger Discord。指导信息可在chat.hyperledger.org找到。
- 所有Hyperledger仓库都需要开发者证书起源(DCO),因此为了使您的拉取请求被接受,您必须通过在每次提交上签字来证明您的提交。更多信息可以在签署提交文章中找到。
依赖关系
~11–15MB
~301K SLoC