WeIdentity 极速体验 | 联盟链开发(九)

  • 李大狗
  • 更新于 2020-06-05 11:03
  • 阅读 4521

体验微众银行推出的 DID 数字身份组件

系列索引: 上链与背后的流程 | 联盟链开发(一) 动手编 SDK | 联盟链开发(二) SDK 1.0 版本的打造 | 联盟链开发(三) 将 SDK 发布到 PIP | 联盟链开发(四) 什么样的数据应该上链?| 联盟链开发 (五) BSN 相关问与答 | 联盟链开发(六) 链上简历应用 — 设计 | 联盟链开发(七) FISCO BCOS 介绍 | 联盟链开发(八) WeIdentity 极速体验 | 联盟链开发(九) 给Remix升个级 | 联盟链开发(十) 伪代码简述 ECDSA 签名过程 | 联盟链开发(十一) WeIdentity 的多签及限量凭证的实现 | 联盟链开发(十二)

上一篇文章中,我对 WeIdentity 已进行了简单介绍:

DID 数字身份系统 WeIdentity

WeIdentity是一套分布式多中心的技术解决方案,可承载实体对象(人或者物)的现实身份与链上身份的可信映射、以及实现实体对象之间安全的访问授权与数据交换。WeIdentity由微众银行自主研发并完全开源,秉承公众联盟链整合资源、交换价值、服务公众的理念,致力于成为链接多个垂直行业领域的分布式商业基础设施,促进泛行业、跨机构、跨地域间的身份认证和数据合作。

—— https://weidentity.readthedocs.io/zh_CN/latest/README.html

1 分布式数字身份系统最简模型

数字身份系统是区块链中重要、基础且需要深入理解的基础设施,在之后的文章中,我会对其进行更详尽的阐述。目前我们用最简单的例子去理解就可以了:

我们参加一次考试,评卷老师是成绩的发行方(Issuer);考生是成绩凭证(Credential)的持有方(Holder),负责申请、保存、出示这个成绩的凭证;所有人都可以成为验证方(Verifier),验证这个凭证是由当时的发行者颁发的,并且通过链上身份核验发行者的身份合法性。

然后,教育局负责老师的管理,所以教育局是委员会(Committee),教育局中的管理人员是委员会成员(Committee Member)。

+---------+
|  委员会  |
| 管理发行方|
+---------+
   | 管理
+---------+   发行   +-----------------+   提交   +-------------+
|  发行方  |========>|      持有方      |=========>|    验证方    |
| 发行凭证 |         | 请求/保存/提交凭证 |          |   请求凭证   |
+---------+         +-----------------+          +-------------+
   |                        | 注册身份                   |
   |    验证持有方    +-----------------+     验证持有方   |
   +===============>|      身份表      |<================+
                    +-----------------+

2 搭建 FISCO BCOS 测试环境

Repo 地址:

https://github.com/FISCO-BCOS/FISCO-BCOS

使用官方攻略进行部署即可:

https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/installation.html

需要注意的几点是:

1) 在启动节点时,我们运行的是如下指令:

bash build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545

其中-p选项指定起始端口,分别是p2p_port, channel_port, jsonrpc_port,出于安全考虑 jsonrpc/channel 默认监听127.0.0.1,需要外网访问请添加 -i 参数

我们将要通过其进行合约操作的 WeIdentity SDK ,以及将要运行的实例 WeId-Sample,都是通过 channel_port 和节点进行通讯。

-l "127.0.0.1:4"意即启用四个节点,每个节点都占用 3 个端口。因此,节点1 - 4的 channel_port 分别是 20200, 20201, 20202 和 20203。

2)fisco/nodes/127.0.0.1/sdk 目录下会生成一些证书,我们之后将会使用这些证书进行应用配置。

3) 建议使用 ssh 进行 git clone(也即 git clone git@github.com:WeBankFinTech/WeIdentity.git ),速度比较快。

3 通过 weid-build-tools 部署智能合约

WeIdentity Java SDK Repo 地址:

https://github.com/WeBankFinTech/WeIdentity

官方部署攻略:

https://weidentity.readthedocs.io/zh_CN/latest/docs/weidentity-build-with-deploy.html

1) 首先配置好 Java 环境与 Gradle,Gradle 可以通过 Homebrew 进行安装:

brew install gradle

2) 下载部署工具

git clone git@github.com:WeBankFinTech/weid-build-tools.git

3) 配置节点信息

cd weid-build-tools
vim run.config

将以下部分进行修改:

blockchain_address=127.0.0.1:20200
org_id=publisher #此处填入whatever u want

4) 配置节点证书和秘钥文件

将第二节中我们做节点时候的fisco/nodes/127.0.0.1/sdk中的证书拷贝到 resources 目录下。

此处假设 fisco和weid-build-tools 在同级目录下,同时你当前的目录是 weid-build-tools(通过 pwd 查看当前目录):

cp ../fisco/nodes/127.0.0.1/sdk/{node.crt,ca.crt,node.key} ./resources

5) 编译

chmod +x {compile.sh,deploy.sh}
./compile.sh

6) 合约部署

./deploy.sh

运行成功后,会打印如下信息:

contract is deployed with success.
===========================================.
weid contract address is 0x4ba81103afbd5fc203db14322c3a48cd1abb7770
cpt contract address is 0xb1f3f13f772f3fc04b27ad8c377def5bc0c94200
authority issuer contract address is 0xabb97b3042d0f50b87eef3c49ffc8447560faf76
evidence contract address is 0x8cc0de880394cbde18ca17f6ce2cf7af5c51891e
specificIssuer contract address is 0xca5fe4a67da7e25a24d76d24efbf955c475ab9ca
===========================================.

7) 查看生产的文件

发布 WeIdentity 智能合约的机构(在3)配置节点信息中所填)将会自动注册为委员会机构成员( Committee Member )。

发布 WeIdentity 智能合约会同时会在 weid-build-tools/output/admin 目录下动态生成私钥文件 ecdsa_key,以及对应的公钥文件 ecdsa_key.pub,此私钥后续用于注册权威机构(发行方)。

4 部署运行 weid-sample

Weid-sample Repo 地址:

https://github.com/WeBankFinTech/WeIdentity-Sample

官方部署攻略:

https://weidentity.readthedocs.io/zh_CN/latest/docs/weidentity-sample-commandline.html

Weid-sample 是基于 WeIdentity 开发的 Java 应用样例程序,提供了一整套的流程演示,可以帮您快速理解 WeIdentity 的运行机制。

1) 将 weid-build-tools 中的所有配置文件拷贝到 weid-sample 下。

假设 weid-build-tools 和 weid-sample 在同级目录,现在你在 weid-sample 目录中:

cp ../weid-build-tools/resources/* src/main/resources/

2)weid-build-tools/output/admin 中的私钥拷贝到weid-sample/keys/priv/下。

假设 weid-build-tools 和 weid-sample 在同级目录,现在你在 weid-sample 目录中:

cp ../weid-build-tools/output/admin/ecdsa_key keys/priv/

这一步操作的目的是获得注册 Authority Issuer 需要委员会机构成员( Committee Member )权限。

3) 修改节点和机构配置

vim src/main/resources/weidentity.properties

将下面两项进行修改:

blockchain.orgid=organizationA
nodes=127.0.0.1:20200

需要注意的是,在这个时候 blockchain.orgid 必须设置为 organizationA。这个配置将用来启动 AMOP 服务。

AMOP 介绍:

https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/amop_protocol.html

4) 编译

chmod +x *.sh
./build.sh

5) 启动 AMOP 服务

eid-sample 里的 AMOP 服务是模拟 Verifier 向 User Agent 发送获取秘钥的请求,因此 Verifier 和 User Agent 需要连接同一条链中的不同的区块链节点。 先启动 Verifier 进程:

./command.sh daemon

运行成功,会启动 Verifier 的 AMOP 服务,输出如下日志:

the AMOP server start success.

6) 修改 User Agent 配置

在启动完 Verifier 进程之后,还需要修改 User Agent 的配置,确保 User Agent 连接的区块链节点和 Verifier 连接的区块链节点在同一条链上,且连接的是不同的区块链节点:

vim dist/conf/weidentity.properties

将其修改为另一个组织名与端口即可:

blockchain.orgid=organizationB # whatever U want
nodes=10.10.10.11:20201

5 流程演示

1) Issuer 操作流程演示

./command.sh issuer

若运行成功,则会打印包括创建 WeID、注册成为 Authority Issuer、注册 CPT 和创建 Credential 等运行流程。

2) User Agent 操作流程演示

./command.sh user_agent

运行成功,则会打印包括创建 WeID、 通过 AMOP 获取 Verifier 发布的 Presentation Policy、创建 Presentation 以及打包 Presentation 成 QRcode 或者 Json 串的流程。

3) Verifier 操作流程演示

./command.sh verifier

运行成功,则会打印 Verifier 反序列化 Presentation 以及验证 Presentation 的过程。

以上三者在运行结束后均会输出 finish()。

实现的入口类在 weid-sample 工程的 com.webank.weid.demo.command.DemoCommand中,可以参考其进行 Java 应用开发。

6 预告

以上即是 WeIdentity 体验全过程。

在之后的文章里,我们会对业务流以及其他组件进行更细致的讲解。

slogan.jpeg

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

3 条评论

请先 登录 后评论
李大狗
李大狗
0x73c7...6A1d
面向炫酷编程