一、Write a DID and Query Its Verkey

1、启动

docker network create --subnet 10.0.0.0/8 indy_pool_network
docker build --build-arg pool_ip=10.0.0.2 -f ci/indy-pool.dockerfile -t indy_pool .
docker run -d --ip=“10.0.0.2” --net=ci/indy_pool_network indy_pool

2、config

genesis_file_path = ‘/indy-sdk/cli/docker_pool_transactions_genesis’

3、run

python3.5 write_did.py
step:
(2)告诉SDK您将使用哪个池。 您应该已经使用docker compose或类似的方式启动了此池。 在这里,我们只是出于演示目的而转储配置。
3.1 创建新的分类帐池配置以连接到分类帐。
3.2 打开分类帐并获取处理。
3.3 创建新的身份钱包
(3)首先,将管家DID及其密钥对放入钱包中。 这不会给分类账写任何东西,但是它给了我们一个密钥,我们可以用它来签署我们稍后要提交的分类账交易。
此管家钥匙的DID和public verkey已经在分类账中; 它们是我们告诉SDK在上一步开始的创世纪交易的一部分。 但是我们还必须将DID,verkey和私人签名密钥放入我们的钱包中,这样我们就可以使用签名密钥向分类帐提交一个可接受的签名交易,创建我们的* next * DID(这是真正新的)。 这就是为什么我们在创建这个DID时使用硬编码的种子 - 它保证创建相同的DID和密钥材料来创建以符合txn期望。
3.4 打开身份钱包和处理
3.5 生成并存储管家DID和verkey

Steward DID: Th7MpTaRZVRYnPiabds81Y
Steward Verkey: FYmoFw55GeQH7SRFa37dkx1d2dZ3zUF8ckg7wmL7ofN4

3.6 生成和存储信任锚DID和verkey
为信任锚创建一个新的DID和verkey,并将其存储在我们的钱包中。 不要使用种子; 这个DID及其密钥是安全和随机的。 同样,我们还没有写到分类账。

Trust anchor DID: Nj7GhWA5CHmwSQEwhZEYnG
Trust anchor Verkey: CqoW6cuHLFV4zwm6MRDAfPWU3gsV8r8H9Q1VNxDjwJPm

indy中的一些操作只能通过具有特殊角色的身份(DID)来完成。例如,作为steward的DID可以将节点(他们拥有的节点)添加到验证器池,并且可以创建具有信任锚角色的DID。信任锚DID可以将任意DID添加到分类帐。
在这里,我们使用DID +密钥对材料填充我们的身份钱包,用于一个管家身份和一个信任锚身份。steward身份是一个引导步骤,而信任锚DID是我们稍后会查询的。
请注意,steward DID是使用种子创建的,但信任锚DID不是。这是因为管家DID及其verkey已经在分类账中;它们是我们告诉SDK在上一步开始的创世纪交易的一部分。但我们还必须将DID,verkey和私人签名密钥(分类帐不知道)放入我们的钱包中,这样我们就可以使用签名密钥向分类帐提交可接受的签名交易。我们将使用此管家的签名密钥来创建我们的下一个DID - 我们的信任锚,这是真正的新。这就是我们在创建管家DID时使用硬编码种子的原因 - 它保证创建与创世纪交易所期望的相同的DID和密钥材料。在诸如Sovrin“live”网络的生产indy池中,引导的管家身份不会知道种子。
(4)在这里,我们正在构建我们将发送的事务有效负载,以将Trust Anchor identity写入分类帐。 我们在分类帐已经识别的管理员DID的授权下提交此交易。 此调用将在我们的钱包中查找管家DID的私钥,并使用它来签署交易。
3.7 构建NYM请求以将信任锚添加到分类帐
NYM交易请求:

{'identifier': 'Th7MpTaRZVRYnPiabds81Y','operation': {'dest': 'Nj7GhWA5CHmwSQEwhZEYnG','role': '101','type': '1','verkey': 'CqoW6cuHLFV4zwm6MRDAfPWU3gsV8r8H9Q1VNxDjwJPm'},'protocolVersion': 2,'reqId': 1547539369614334029}

3.8 将NYM请求发送到分类帐
现在我们准备好了交易,发送它。 构建和发送是单独的步骤,因为一些客户可能想要在一段代码中准备事务(例如,可以访问特权后端系统),并且在不同的代码段中与分类帐通信(例如,生活在外部 安全的内部网络)。
NYM交易回复:

{'op': 'REPLY',
'result': {'auditPath': ['EsY4hbw8MPXuyQTiq43pvwJqak6pGzfKwJKMXoi6uYS7','DNHM372JZJoGcxdHdmsj3QSSiomyeZux6ssJXxAJqyvd'],'reqSignature': {'type': 'ED25519','values': [{'from': 'Th7MpTaRZVRYnPiabds81Y','value': 'yDLTXt9TQGC5KoHHV3MYeJkKmPCD8CRo541AQ1zTWKXAcroPTGfDTbVuss935Pf1wUKG83FJCmUv7TNSADUrBgk'}]},'rootHash': '3ihKMNpURyAKwrmFTrSWNEkE9G9HgUQQ7efhTTfPbcm5','txn': {'data': {'dest': 'Nj7GhWA5CHmwSQEwhZEYnG','role': '101','verkey': 'CqoW6cuHLFV4zwm6MRDAfPWU3gsV8r8H9Q1VNxDjwJPm'},'metadata': {'digest': 'ead3ee1878fe734abf99c84b0ab6d0077072233ecce25d9390441593bc63eb57','from': 'Th7MpTaRZVRYnPiabds81Y','reqId': 1547539369614334029},'protocolVersion': 2,'type': '1'},'txnMetadata': {'seqNo': 11,'txnId': '6f1289b93acb703bd54335fd2bb71951f71227855732d3fbd99c8687268c610a','txnTime': 1547539369},'ver': '1'}}

此时,我们已成功将新identity 写入分类帐。 我们的下一步将是查询它。
3.9 生成并存储DID和verkey,代表客户端想要获取获取信任锚Verkey。
(5)我们在这里创建第三个DID。 这个从未写入分类帐,但我们必须将它放在钱包中,因为对分类帐的每个请求都必须由某个请求者签名。 通过在此处创建DID,我们强制钱包分配一个密钥对和身份,我们可以使用该密钥对和身份来签署将从分类帐中读取信任锚信息的请求。

Client DID: 7GJpGSpcmHJmuzaYhcw4Mz
Client Verkey: 4R1rcRpFDTE115cGrDHMAa2VAVBRmcZ46z8TKenCg9gT

3.10 构建GET_NYM请求以查询信任锚verkey

GET_NYM request:
{'identifier': '7GJpGSpcmHJmuzaYhcw4Mz','operation': {'dest': 'Nj7GhWA5CHmwSQEwhZEYnG', 'type': '105'},'protocolVersion': 2,'reqId': 1547539369808735055}

3.11 将获取NYM请求发送到分类帐

GET_NYM response:
{'op': 'REPLY','result': {'data': '{"dest":"Nj7GhWA5CHmwSQEwhZEYnG","identifier":"Th7MpTaRZVRYnPiabds81Y","role":"101","seqNo":11,"txnTime":1547539369,"verkey":"CqoW6cuHLFV4zwm6MRDAfPWU3gsV8r8H9Q1VNxDjwJPm"}','dest': 'Nj7GhWA5CHmwSQEwhZEYnG','identifier': '7GJpGSpcmHJmuzaYhcw4Mz','reqId': 1547539369808735055,'seqNo': 11,'state_proof': {'multi_signature': {'participants': ['Node3','Node4','Node2'],'signature': 'QuM9qxApmaw1e1cBcKaVR9Xb2VkpE5c82cLas9rUcSaizT1Zg57Qjj1mRYbgjjDE3SKfdsqu9j8FKaiAuoEvRx4RRaPyG1bKoe7CHRqvfNL2gEnQXHtPhf7i4yhBjnMKUUmzXxKhyVBuEfwmEAV252MLu5T4NJY3noY1SJxjcVyZPd','value': {'ledger_id': 1,'pool_state_root_hash': 'GT89NJKZFSV4i4L2cRjDRCnfeDXFBjsAZn7SBLEdxoJE','state_root_hash': '5ppwxtGE8pCzubrbrJnxUt4aW2tnddV3LWVYYRYoLgKG','timestamp': 1547539369,'txn_root_hash': '3ihKMNpURyAKwrmFTrSWNEkE9G9HgUQQ7efhTTfPbcm5'}},'proof_nodes': '+QI8+LOgIBKJuTrLcDvVQzX9K7cZUfcSJ4VXMtP72ZyGhyaMYQq4kPiOuIx7ImlkZW50aWZpZXIiOiJUaDdNcFRhUlpWUlluUGlhYmRzODFZIiwicm9sZSI6IjEwMSIsInNlcU5vIjoxMSwidHhuVGltZSI6MTU0NzUzOTM2OSwidmVya2V5IjoiQ3FvVzZjdUhMRlY0endtNk1SREFmUFdVM2dzVjhyOEg5UTFWTnhEandKUG0iffhxgICAgICAoHeZm1UQEPhALOwlrEsCr6rdsj9u9CKRsv4WQHZGWd0GgKA/yVgA4zYchy2zVsIiV5EZbNOJYgeH3b0zZsHJXKYKHICAgICAgKDpdNsLM/7s6kSC6G0TvdqUAeeZ7ZLJbHqIBSyPrw65YoD5ARGg09I/bgmxWmztC58rrZwebgwutUGli7VUyVOFwmuLFqOAgKCamro+9EH/vrNION29c750BMkCYdpXzasRUbZmgA75MICgAhvH9MNjbLg4m1mIm3NU2MkgIFCkniHrxxesFWXTAS+gQdBkJcWjNV+bjB/SABAAchEfdAsRS59aqPobjP8iwz2AgICAoCRyJt6FDmJQ60JcPeVA5EXTnNrRiLBPYNq9dgI6SYlCgKB9JVxOO1bVJRb8Jwgua4GPO/Juk6XhGUySCneElMV7aqAb0qE5bnVw9F5IUz5uGMXwnAHQmog75MzPMOjuL+f3taA7Ohl8US/Ipw9m90WNb/7n5LAxzanxSmitjBCIzSGcGoA=','root_hash': '5ppwxtGE8pCzubrbrJnxUt4aW2tnddV3LWVYYRYoLgKG'},'txnTime': 1547539369,'type': '105'}}

3.12 比较Steward管家写入的Trust Anchor 信任锚 verkey和客户提交的GET_NYM响应中检索到的verkey
看看我们是否收到了与我们在第3.4步中编写分类帐相同的信息。

Written by Steward: CqoW6cuHLFV4zwm6MRDAfPWU3gsV8r8H9Q1VNxDjwJPm
Queried from ledger: CqoW6cuHLFV4zwm6MRDAfPWU3gsV8r8H9Q1VNxDjwJPm
Matching: True

做一些清理工作。
3.13 关闭钱包和分类账池
3.14 删除创建的钱包
3.15 删除分类帐池配置

4、result


12. Comparing Trust Anchor verkey as written by Steward and as retrieved in GET_NYM response submitted by Client

Written by Steward: CqoW6cuHLFV4zwm6MRDAfPWU3gsV8r8H9Q1VNxDjwJPm
Queried from ledger: CqoW6cuHLFV4zwm6MRDAfPWU3gsV8r8H9Q1VNxDjwJPm
Matching: True

二、 Rotate a Key

1-8

 同(一)1-8,build_nym_request(submitter_did=steward_did,target_did=trust_anchor_did, ver_key=trust_anchor_verkey, alias=None, role='TRUST_ANCHOR'sign_and_submit_request(pool_handle=pool_handle,wallet_handle=wallet_handle,submitter_did=steward_did,request_json=nym_transaction_request

9、在钱包中生成信任锚的新verkey

did.replace_keys_start(wallet_handle, trust_anchor_did, “{}”)

New Trust Anchor Verkey: FQUnM8MEQ8muxiMXR1YGQvBnKipwoi8xzwPWrBmZTYaa

10、构建NYM请求以将新的verkey更新到分类帐(写入VerKey到ledger

ledger.build_nym_request(trust_anchor_did, trust_anchor_did, new_verkey, None, ‘TRUST_ANCHOR’)

NYM request:
{'identifier': '$(trust anchor id)','operation': {'dest': '$(trust anchor id)','role': '101','type': '1','verkey': '$(New Trust Anchor Verkey)'},'protocolVersion': 2,'reqId': 1547689638792741170}

11、将NYM请求发送到分类帐
ledger.sign_and_submit_request(pool_handle, wallet_handle, trust_anchor_did, nym_request)

NYM response:
{'op': 'REPLY','result': {'auditPath': ['AcctzGMWr4TrdWtcAfdr2h8NsxCepyg99k5yxkScG9F7'],'reqSignature': {'type': 'ED25519','values': [{'from': '$(trust anchor id)','value': '28P7VA9kMDSQFJKtzZExrmDj9kAhedsG16YNigAw4pBEwiWnt7ANEJcreWqmYCRKXKvxGUTd2cqfS88Bar9eX2cw'}]},'rootHash': '9DFYvQDS32hNGkJNRFNP2y5EQWMc1YwJUu1Ub2j7UeWV','txn': {'data': {'dest': ''$(trust anchor id)','role': '101','verkey': '$(New Trust Anchor Verkey)'},'metadata': {'digest': '2485a2efaeeaa8747782663b5a735cf9c9e25fe828e706bd02ea9dd33a9caf26','from': '$(trust anchor id)','reqId': 1547689638792741170},'protocolVersion': 2,'type': '1'},'txnMetadata': {'seqNo': 17,'txnId': 'adc9e72e144a0a25e458d028b3ca15474afa2548c4d8fc9dc7715e1eb5449c93','txnTime': 1547689639},'ver': '1'}}

12、在钱包中应用新的verkey
did.replace_keys_apply(wallet_handle, trust_anchor_did)
13、从钱包中读取新的verkey
did.key_for_local_did(wallet_handle, trust_anchor_did)

Trust Anchor Verkey in wallet: FQUnM8MEQ8muxiMXR1YGQvBnKipwoi8xzwPWrBmZTYaa

14、构建GET_NYM请求以获取Trust Anchor verkey(从ledger读取新的Verkey
edger.build_get_nym_request(trust_anchor_did, trust_anchor_did)

Get NYM request:
{'identifier': '$(trust anchor id)','operation': {'dest': '$(trust anchor id)', 'type': '105'},'protocolVersion': 2,'reqId': 1547689639801713757}

15、将NYM请求发送到分类帐
ledger.submit_request(pool_handle, get_nym_request)

GET NYM response:
{'op': 'REPLY','result': {'data': '{"dest":"$(trust anchor id)",
"identifier":"$(Steward DID)",
"role":"101","seqNo":17,"txnTime":1547689639,"verkey":"$(New Trust Anchor Verkey)"}','dest': '$(trust anchor id)','identifier': '$(trust anchor id)','reqId': 1547689639801713757,'seqNo': 17,'state_proof': {'multi_signature': {'participants': ['Node3','Node4','Node2'],'signature': 'QwW9jGxdCwvw6G3p2yN97Trj4PTcWiTAfcQGzeoSX7aVq4gcGJkqLExmGpL5wUwWucnwBptKdWb8aazJnnFRr3vLRkLvsLumLEzf6hEAiQZvyY3pQ76iZjp3jYob79v9eamL8JkhJ6y6qbGcQa54qauqLmZ8oxFNNyBUuDLaJmfeHV','value': {'ledger_id': 1,'pool_state_root_hash': 'GT89NJKZFSV4i4L2cRjDRCnfeDXFBjsAZn7SBLEdxoJE','state_root_hash': '7US4wAzXmzJamxqNcDpVYd7HiXuPU6fEmcGGbLnm677G','timestamp': 1547689639,'txn_root_hash': '9DFYvQDS32hNGkJNRFNP2y5EQWMc1YwJUu1Ub2j7UeWV'}},'proof_nodes': '+QIJ+LOgPcnnLhRKCiXkWNAos8oVR0r6JUjE2Pydx3FeHrVEnJO4kPiOuIx7ImlkZW50aWZpZXIiOiJUaDdNcFRhUlpWUlluUGlhYmRzODFZIiwicm9sZSI6IjEwMSIsInNlcU5vIjoxNywidHhuVGltZSI6MTU0NzY4OTYzOSwidmVya2V5IjoiRlFVbk04TUVROG11eGlNWFIxWUdRdkJuS2lwd29pOHh6d1BXckJtWlRZYWEiffkBUaBWWc/RnVUAK1oZiemSEzu96UkmpCsAi/9rvEqSL24LkaDmuBdIe7jemQFiCcyenyWbCqXnsXzUdQlmqr+p+gkI7oCg5p9rF8gbMaboz5aKMC5trlrtom1JdasOrqwfMbr0TP+AoAIbx/TDY2y4OJtZiJtzVNjJICBQpJ4h68cXrBVl0wEvoEQAggmzS6f2NWpUQAFsJZORzSvJtNWsWBopTosPpyIZgICAoGNRXBk5pnjMx26RsRJJqFItPiefB387cA2F+x68UefUoCRyJt6FDmJQ60JcPeVA5EXTnNrRiLBPYNq9dgI6SYlCgKB9JVxOO1bVJRb8Jwgua4GPO/Juk6XhGUySCneElMV7aqAb0qE5bnVw9F5IUz5uGMXwnAHQmog75MzPMOjuL+f3taA7Ohl8US/Ipw9m90WNb/7n5LAxzanxSmitjBCIzSGcGoA=','root_hash': '7US4wAzXmzJamxqNcDpVYd7HiXuPU6fEmcGGbLnm677G'},'txnTime': 1547689639,'type': '105'}}

16、比较Trust Anchor verkeys:由Steward(原始)编写,当前钱包和当前来自分类帐

Written by Steward: DHqL5vyCCajqVub26CizsB3JLf3P2tkDk4KkaVjRSKko
Current in wallet: FQUnM8MEQ8muxiMXR1YGQvBnKipwoi8xzwPWrBmZTYaa
Current from ledger: FQUnM8MEQ8muxiMXR1YGQvBnKipwoi8xzwPWrBmZTYaa
Matching: True

17-19 、clean up
同(一)13-15

indy-sdk tutorials数字身份认证(一)相关推荐

  1. indy-sdk tutorials数字身份认证(二)

    三.在ledger保存schema和credential定义 0. 0.1 作为设置,Steward(已在分类帐中)将Trust Anchor添加到分类帐. 0.2 Steward构建SCHEMA请求 ...

  2. 一种基于区块链的数字身份认证方案

    一种基于区块链的数字身份认证方案 0 摘要 1 概要介绍 1.1 企业化 1.2 联盟式 1.3 用户中心化 1.4 本文创新点 2 方案基础知识介绍 2.1 密码学工具与算法 2.1.1 随机数 2 ...

  3. 网易区块链打造可信数字身份认证应用新场景,赋能科技峰会

    这也是网易首支词曲编唱全链路AI音乐作品,上线网易云音乐的同时,也已嵌入网易区块链团队为大会量身定制的NFT门票中,一键点击.随时收听,成为"未来通行证"新的亮点. 目前,&quo ...

  4. 数字身份认证已经成为数字身份的关键命题

    中国处在转型升级的历史节点,在企业互联网化.数字化.智能化.全球化的发展背景下,数字身份认证与管理及用户隐私保护已成为数字身份发展不可回避的核心问题. 我们知道,数字身份并不是用户真实身份,它是依靠加 ...

  5. 区块链系统之《基于区块链的数字身份认证》

    1. 架构图 2. 流程说明 step1.APP创建数字身份 1.1. 把创建身份请求和所必要的信息发给Sever. 1.2 在区块链上创建数字身份. step2.声明属性 2.1. 用户声明属性(如 ...

  6. 对数字身份认证安全,是企业的责任还是个人的责任?

    随着个人身份识别在公共场合的普遍应用,民众已经逐渐习惯了通过刷证(身份证件).刷脸(人脸识别)办理业务,消费者对在线欺诈和身份盗窃的担忧日益加剧,希望企业能够利用新技术在线保护他们.根据Trulioo ...

  7. Hyperledger Indy项目(开源去中心化身份平台)、去中心化身份(DID)、分布式数字身份项目

    文章目录 一.Hyperledger Indy 1. 什么是Hyperledger Indy 2. 名词概念 3. Indy实现独立的数字身份 4. Indy如何验证数字身份 5. 使用案例 Kiva ...

  8. 分布式数字身份:通往未来的钥匙?

    "身份"是每个人出生就伴有的印记,根据时空的不同,人们拥有不同的身份属性,而人们的身份属性存在着唯一的证明关系.身份认同是组织形成的必要条件,在现实世界中,通常通过物理介质以卡片化 ...

  9. 基于 Token 的多平台身份认证架构设计

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 一点一滴的Beer 来源 | https:// ...

  10. App后台开发运维和架构实践学习总结(12)——基于token的多平台身份认证架构设计

    分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程 一.概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情.随着移动互联网时 ...

最新文章

  1. 汇编学习(1)——基础知识
  2. 技术讨论 | 一次尚未完成的薅羊毛行动
  3. Java多线程-生产者与消费者
  4. python如何读取数据并输出为表格_Python实现将数据库一键导出为Excel表格的实例...
  5. MessageBox 弹框
  6. python为源文件指定系统默认_Python 设置系统默认编码
  7. 基于机器视觉技术的瓷砖分色检测系统解析
  8. java 实例化是什么及五种实例化方法
  9. java中滚动字幕做法_四种滚动字幕的方法
  10. 计算机搜索不到网络扫描仪,电脑打印机怎么找不到扫描
  11. 解决 Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8
  12. 小白开始学RTOS 1
  13. php三行情书,《三行情书》经典语录 经典三行情书 最美三行情书
  14. 金融魔方创始人兼CEO刘嘉:金融SaaS为中小企业赋能的机遇与挑战
  15. 什么是内存泄露,如何避免内存泄露 C++
  16. ensembl数据库BioMart使用,查找转录本ID在ensembl与refseq中的对应关系
  17. JAVA微信小程序在线教育视频学习小程序系统毕业设计 开题报告
  18. Python——数据分层抽样
  19. Maven 虐我千百遍,我待 Maven 如初恋 侵删
  20. 阿里云HaaS“老板来了”用的ESP-EYE语音唤醒+人脸识别介绍

热门文章

  1. win10桌面计算机不显示桌面,win10桌面不见了,win10桌面显示不了任何程序
  2. html 显示ai 矢量图,PS图层文件转变为AI矢量图
  3. 【新知实验室 腾讯云TRTC实时音视频体验】
  4. python监控服务器cpu温度实例_用python访问CPU温度
  5. [PaddleDetection] S2ANet检测旋转框自制作数据准备
  6. 分享这些年来第三方支付业务的申请流程及详细方案
  7. 阿里云5大基础产品简介(ECS、RDS、OSS、SLB、CDN)
  8. 写给学生看的系统分析与验证笔记(一)——形式化基础
  9. 《Revisiting Self-Supervised Monocular Depth Estimation》论文笔记
  10. PPT里快速插入上下角标