三、在ledger保存schema和credential定义
0、
0.1 作为设置,Steward(已在分类帐中)将Trust Anchor添加到分类帐。
0.2 Steward构建SCHEMA请求以将新schema添加到分类帐。
一旦成功,Trust Anchor将使用匿名凭据为Steward添加的schema发布和存储定义。
1-8、 同(一)1-8
我们需要为SDK提供一些处理indy分类帐所需的上下文。 这要求我们将SDK指向一些创世纪交易,告诉SDK如何联系网络上的分类账,以及如何相信它所联系的节点拥有适当的密钥。 我们还需要创建一个钱包,以便SDK可以存储DID以及我们将要使用的密钥材料。 此外,我们需要创建一个信任锚标识,该标识具有创建模式和凭证定义的权限。
9、现在我们需要创建和定义一个模式schema。 indy中的模式是非常简单的JSON文档,它们指定了它们的名称和版本,并列出了将出现在凭证credential中的属性。 今天,它们没有描述数据类型,重复规则,嵌套和其他复杂的结构。
构建SCHEMA请求以将新模式作为Steward添加到分类帐
*Schema data*:
{'attrNames': ['age', 'sex', 'height', 'name'],
'id': '1',
'name': 'gvt',
'ver': '1.0',
'version': '1.0'}
*Schema*:
{'data': {'attrNames': ['age', 'sex', 'height', 'name'],
'id': '1',
'name': 'gvt',
'ver': '1.0',
'version': '1.0'},
'dest': '$(Steward DID)',
'seqNo': 1}
*Schema request*:
{'identifier': '$(Steward DID)',
'operation': {'data': {'attr_names': ['height', 'sex', 'age', 'name'],
'name': 'gvt',
'version': '1.0'},
'type': '101'},
'protocolVersion': 2,
'reqId': 1547705470104372004}
10、将SCHEMA请求发送到分类帐
*Schema response*:
{'op': 'REPLY',
'result': {'auditPath': ['3cQgnDAZFZLbzxrAxQLeBXDnczLBoXQebYXq6QBUY69X',
'3i3FMwaYKSTDRRn4M3cKZPrXQRm8XyQ9G2NcHYLTKBRm',
'AcctzGMWr4TrdWtcAfdr2h8NsxCepyg99k5yxkScG9F7'],
'reqSignature': {'type': 'ED25519',
'values': [{'from': '$(Steward DID)',
'value': 'FEPpzMFxhGLW9mzZRU1mm9DWrao5wpVEiorzVgFQh1scNHwUjfwYMFGM8sy1TpKbtM6Eymgy2ZoPd6nHEcAaAXZ'}]},
'rootHash': 'EKLGW5YWYyW8swwEeWFkV6F9n5qXY8JNnRKkTVEEfBMJ',
'txn': {'data': {'data': {'attr_names': ['height',
'sex',
'age',
'name'],
'name': 'gvt',
'version': '1.0'}},
'metadata': {'digest': '25929fb2becde460a365c91628c6e38e3860c4f8f333155c71d9273dfd02cf6a',
'from': '$(Steward DID)',
'reqId': 1547705470104372004},
'protocolVersion': 2,
'type': '101'},
'txnMetadata': {'seqNo': 20,
'txnId': '$(Steward DID):2:gvt:1.0',
'txnTime': 1547705471},
'ver': '1'}}
11、接下来,我们创建一个credential定义。 这引用了我们刚刚添加的模式,并宣布了谁将要发布具有该模式的凭证(在本例中为我们的信任锚标识),他们计划使用什么类型的签名方法(“CL”=“Camenisch Lysyanskya” ,indy用于零知识证明的默认方法,它们如何计划处理撤销,等等。
使用anoncred作为信任锚来创建和存储CRED DEFINITION,用于给定的Schema。
{'id': '$(Trust anchor DID):3:CL:1:cred_def_tag',
'schemaId': '1',
'tag': 'cred_def_tag',
'type': 'CL',
'value': {'primary': {'n': '793102416506061520575592669264262619281141544837290360506833135747844096520620250668068240903366020181987114586735613748661261681137821616608278769297006096154925094948764536894382613512813898022932153598214002512762114307792912276279944959741766915049964066871030682621680234755408776121927420897213714522416009658813250147