indy-sdk tutorials数字身份认证(一)

一、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'],
           'req
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lazarus是一个免费开源的Delphi开发环境,其中包含了一套非常强大和易用的工具集,可以帮助开发者快速构建应用程序。Lazarus以其无需额外支付的特点,吸引了一大批Delphi开发者。 在Lazarus中,Indy是一个非常重要的组件。Indy是一个开源的网络通信库,它为开发者提供了各种网络通信相关的功能和组件,例如TCP/IP、UDP、HTTP等。通过Indy,我们可以方便地实现网络通讯、文件传输、邮件发送等功能。 有了Indy,我们可以轻松地编写各种网络应用程序。比如,我们可以使用Indy的TCP/IP组件来实现网上聊天程序,让用户可以实时地进行文字交流;我们也可以使用Indy的HTTP组件来构建一个简单的Web服务器,可以提供网页和文件的访问。Indy的功能非常强大、灵活,能够满足各种不同类型的网络应用开发需求。 在Lazarus中使用Indy也非常简单。我们只需在项目中引入Indy的相关单元,然后在代码中实例化相应的组件,并设置好各种属性和事件处理程序,就可以开始编写网络应用程序了。Indy提供了大量的例子和文档,开发者可以快速上手,并根据自己的需求进行定制和扩展。 总的来说,Lazarus和Indy提供了一个非常强大和灵活的开发环境,使得开发者能够更加便捷地构建各种网络应用程序。无论是初学者还是有丰富开发经验的人,都可以通过这两个工具来实现自己的创意和项目需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值