#verifiable-credentials #verifiable #credentials #indy #hyperledger #ssi #proxy-server

indy-vdr

一个与 Hyperledger Indy 节点交互的库,Hyperledger Indy 是一个用于自主权身份的分布式账本(https://www.hyperledger.org/use/hyperledger-indy)

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 次下载

Apache-2.0

580KB
14K SLoC

Indy-VDR (可验证数据注册表)

Unit Tests Python Package

简介

这个库是从 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交易。可以使用timestampseq_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,或pooldomainconfig之一)和序列号获取特定交易。

如果使用单账本代理服务器,则路径中的{LEDGER}部分必须省略。

DID:Indy 解析器

Indy VDR 包含一个DID解析器,用于根据did:indy规范解析DID并将DID URL反引用到配置的账本对象。

GET /1.0/标识符/{DIDDID_URL}

连接到账本

无论使用库还是代理服务器,您都需要一个包含一组池创世交易的genesis.txn文件。您可以使用VON-Network在Docker中运行本地池,或遵循Indy-SDK说明

无论使用何种库,都可以通过设置环境变量RUST_LOG来调整生成的日志消息量。可接受的值有errorwarninfodebugtrace。在发生致命错误的情况下,也可以设置环境变量RUST_BACKTRACEfull以获得扩展输出。

如何贡献

  • 加入Hyperledger Discord。指导信息可在chat.hyperledger.org找到。
  • 所有Hyperledger仓库都需要开发者证书起源(DCO),因此为了使您的拉取请求被接受,您必须通过在每次提交上签字来证明您的提交。更多信息可以在签署提交文章中找到。

依赖关系

~11–15MB
~301K SLoC