分布式数字身份——创建一个Weidentity数字身份
前言
DID
基于区块链技术的分布式数字身份是一种自我主权的、可验证的、新型数字身份。W3C为这种身份定义了“分布式数字身份标识符规范”(Decentralized ID,DID)—— 一种新型的全球标识符。 分布式标识符(DID)的用途包括以下两个方面∶其一,使用标识符来标识 DID?主体(人员,组织,设备,密钥,服务和一般事物)的特定实例;其二,促进实体之?间创建持久加密的专用通道,而无需任何中心化注册机制。它们可以用于诸如凭证交?换和认证。 ?? DID 是将DID对象(DID)与DID 文档(DID Doc)相关联的URL,一个实体可?以具有多个 DID,甚至与另一个实体的每个关系可以关联一个或多个DID(成对假名?和一次性标识符)以保护隐私性,身份所有者通过证明拥有与绑定到该 DID的公钥相?关联的私钥来建立DID的所有权。 ?? ?一个DID的定义具有以下形式∶"did∶"++“∶”+<method特定?的标识符> ?? ??这类似于一种名字空间的表达,通常是实现并注册了特定DID操作?方法的厂商(比如Weidentity的did-method就为weid)名称的缩写,比如 did∶nist∶0x1234abcd。考虑到方便与其它基于Internet 的标?识符一起使用,method特定的标识符通常是 URL 、URI标识符或者账户地址(例如:0xfd28ad212a2de77fee518b4914b8579a40c601fa)。
Weid
什么是 WeIdentity? WeIdentity是一套分布式多中心的技术解决方案,可承载实体对象(人或者物)的现实身份与链上身份的可信映射、以及实现实体对象之间安全的访问授权与数据交换。WeIdentity由微众银行自主研发并完全开源,秉承公众联盟链整合资源、交换价值、服务公众的理念,致力于成为链接多个垂直行业领域的分布式商业基础设施,促进泛行业、跨机构、跨地域间的身份认证和数据合作。
WeIdentity目前主要包含两大模块:WeIdentity DID以及WeIdentity Credential。
所以我们也可以知道weid是did规范的一种实现方案。
前置环境准备
基础配置
- CentOS/Ubuntu 7.2 / 16.04,64位 部署 RestServer 用
- JDK 1.8+ 推荐使用 1.8u141 及以上
- FISCO-BCOS 节点 1.3.8(即中央仓库的1.2.5)或 2.x 确保它可以和部署 Server 机器互相连通,可 telnet 其 channelPort 端口
- Gradle 4.6+ 同时支持 4.x 和 5.x 版本的 Gradle
- MySQL 5 + 需要MySQL存储必要的链上数据进行缓存
- Python 3 调用 weidentity sdk
FISCO BCOS 链
请食用官网最新部署文档
部署 Weidentity 合约
请食用官网最新部署文档
部署 Weidentity Rest Serivce
请食用官网最新部署文档 部署成功之后,rest service接口成功暴露在 http://ip:6001,自此我们的环境就搭建完成了。
使用 Weidentity Python SDK
经过上文我们获取到了rest service api,自此我们就可以通过python去调用weidentity的接口了。 项目地址:https://github.com/99Kies/Weidentity-Python-SDK
调用示例:
- 获取 weidentity python sdk
pip install pyweidentity
- 托管模式示例
from pyweidentity.weidentityService import weidentityService
URL = "http://192.168.80.144:6001"
weid = weidentityService(URL)
create_weid = weid.create_weidentity_did()
print(create_weid)
- 轻客户端模式示例
from pyweidentity.weidentityClient import weidentityClient
import random
URL = "http://192.168.80.144:6001"
weid = weidentityClient(URL)
privKey = "0xc4a116fb87ae9b8b87842b0f46e1bbf71c37fdae1104fd6d3fd2041e23c8c68e"
nonce = str(random.randint(1, 999999999999999999999999999999))
create_weid = weid.create_weidentity_did(privKey, nonce)
print(create_weid)
项目分享
分布式数字身份管理平台:https://github.com/SUIBE-Blockchain/SUIBE_DID_Data_Manager 我们这个项目也是基于weideneity python sdk去实现的一个did管理平台,感兴趣的同志也可以来完善项目哇。
参考链接
https://weidentity.readthedocs.io/zh_CN/latest/README.html https://weidentity.readthedocs.io/zh_CN/latest/docs/weidentity-rest-api.html https://tsmatz.wordpress.com/2019/12/24/decentralized-identifiers-did-tutorial/ https://baijiahao.baidu.com/s?id=1670362239120061827&wfr=spider&for=pc <>
总结
pyweidentity就是在weidentity rest service api上做了一层封装。所以理解起来并不吃力。期待各位python 大大能找出更有趣的项目玩法。 weidentity python sdk 仓库地址:https://github.com/99Kies/Weidentity-Python-SDK#how-to-use
关于作者
作者的联系方式:
微信:thf056 qq:1290017556 邮箱:1290017556@qq.com
你也可以通过 github | csdn | @新浪微博 关注我的动态
|