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

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

在 上一篇文章 中,我对 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 应用开发。

5 预告

以上即是 WeIdentity 体验全过程。

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

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 应用开发。

5 预告

以上即是 WeIdentity 体验全过程。

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

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

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

  • 发表于 12分钟前
  • 阅读 ( 6 )
  • 学分 ( 0 )
  • 分类:FISCO BCOS

原文 

https://learnblockchain.cn/article/1094

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » WeIdentity 极速体验 | 联盟链开发(九)

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址