Blockchain Hypelerdger Indy节点-种子值

Blockchain Hypelerdger Indy节点-种子值,blockchain,hyperledger,hyperledger-indy,Blockchain,Hyperledger,Hyperledger Indy,我正在玩indy sdk,在步骤3()的演练演示中,Steward的种子值设置为“000000000000000000000000 Steward1” 如果我更改了它(或将其留空),我将得到一个错误。此外,在/tmp/indy/poo1.txn中,没有关于此特定值的信息 我的问题是,我们如何知道这是正确的值,以及如何获得它?为什么它不起作用 000000000000000000000000 Steward1是种子,它(给定默认密钥派生方法)生成DIDth7mptarzvrynpiads81y。您

我正在玩indy sdk,在步骤3()的演练演示中,Steward的种子值设置为“000000000000000000000000 Steward1”

如果我更改了它(或将其留空),我将得到一个错误。此外,在/tmp/indy/poo1.txn中,没有关于此特定值的信息

我的问题是,我们如何知道这是正确的值,以及如何获得它?

为什么它不起作用
000000000000000000000000 Steward1
是种子,它(给定默认密钥派生方法)生成DID
th7mptarzvrynpiads81y
。您可以使用
indy cli
()

在您使用的网络中,DID
VsKV7grR1BUE29mG2Fm2kX
的所有者(即了解其相关私钥或种子的人)具有
steward
角色,该角色授予对分类账执行各种操作的权限。因此,如果修改种子,它将生成不同的DID,而DID将不具有执行教程中进一步使用的操作所需的权限(如在分类账上写入数据)

哪里是
0000000000000000000000001
来自哪里 根据您所说的,我假定您正在使用indy sdk repo运行池中的
indy node
实例中的预构建docker映像,下面是其中的一些实例 因此,简单的答案是
000000000000000000000000 Steward1
的配置是预烘焙的。请看用于构建印地泳池形象的图片。注意这些线

RUN awk '{if (index($1, "NETWORK_NAME") != 0) {print("NETWORK_NAME = \"sandbox\"")} else print($0)}' /etc/indy/indy_config.py> /tmp/indy_config.py
RUN mv /tmp/indy_config.py /etc/indy/indy_config.py
让我们看看这些文件里有什么

docker exec indylocalhost cat '/etc/indy/indy_config.py'
# Current network

# Disable stdout logging
enableStdOutLogging = False

# Directory to store ledger.
LEDGER_DIR = '/var/lib/indy'

# Directory to store logs.
LOG_DIR = '/var/log/indy'

# Directory to store keys.
KEYS_DIR = '/var/lib/indy'

# Directory to store genesis transactions files.
GENESIS_DIR = '/var/lib/indy'

# Directory to store backups.
BACKUP_DIR = '/var/lib/indy/backup'

# Directory to store plugins.
PLUGINS_DIR = '/var/lib/indy/plugins'

# Directory to store node info.
NODE_INFO_DIR = '/var/lib/indy'
NETWORK_NAME = 'sandbox'%                                      
这个

看起来像我们要找的。让我们看看有什么

docker exec indylocalhost ls '/var/lib/indy/sandbox'
data
domain_transactions_genesis
keys
node1_additional_info.json
node1_info.json
node1_version_info.json
node2_additional_info.json
node2_info.json
node2_version_info.json
node3_additional_info.json
node3_info.json
node3_version_info.json
node4_additional_info.json
node4_info.json
node4_version_info.json
pool_transactions_genesis
在区块链中,genesis文件通常是最初用于启动网络的文件,并可能使用一些数据填充网络。对于hyperledger indy,有4个“子分类账”包含不同类型的交易:
配置
审计
子分类账是包含诸如
DID
s、凭证模式或凭证定义之类的内容的子分类账。我们正在寻找一个DID,让我们看看文件域genesis文件

docker exec indylocalhost cat '/var/lib/indy/sandbox/domain_transactions_genesis'
{"reqSignature":{},"txn":{"data":{"dest":"V4SGRU86Z58d6TV7PBUe6f","role":"0","verkey":"~CoRER63DVYnWZtK8uAzNbx"},"metadata":{},"type":"1"},"txnMetadata":{"seqNo":1},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"Th7MpTaRZVRYnPiabds81Y","role":"2","verkey":"~7TYfekw4GUagBnBVCqPjiC"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":2},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"EbP4aYNeTHL6q385GuVpRV","role":"2","verkey":"~RHGNtfvkgPEUQzQNtNxLNu"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":3},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"4cU41vWW82ArfxJxHkzXPG","role":"2","verkey":"~EMoPA6HrpiExVihsVfxD3H"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":4},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"TWwCRQRZ2ZHMJFn9TzLp7W","role":"2","verkey":"~UhP7K35SAXbix1kCQV4Upx"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":5},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"7JhapNNMLnwkbiC2ZmPZSE","verkey":"~LgpYPrzkB6awcHMTPZ9TVn"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":6},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"MEPecrczs4Wh6FA12u519D","verkey":"~A4rMgHYboWYS1DXibCgo9W"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":7},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"EAPtwgevBpzP8hkj9sxuzy","verkey":"~gmzSzu3feXC6g2djF7ar4"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":8},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"LuL1HK1sDruwkfm68jrVfD","verkey":"~Nyv9BKUJuvjgMbfbwk8CFD"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":9},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"462p8mtcX6jpa9ky565YEL","verkey":"~LCgq4hnSvMvB8nKd9vgsTD"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":10},"ver":"1"}

您可以看到DID
Th7MpTaRZVRYnPiabds81Y
是使用verkey
~7TYFEKW4GUAGBVCQPJIC在该分类账上硬编码的,该分类账与我们从seed
000000000000000000000000000000 Steward1
生成的内容相匹配。您还可以看到它的给定角色
“2”
。如果你深入挖掘,你可以在《印地全会》中找到一致的alg。indy使用的项目,角色ID
2
steward

种子是一个秘密值,当我们生成indy network的genesis事务时,我们使用来自该秘密种子值的公共信息/密钥

要知道写入种子值,要使用actors生成的密钥创建自定义网络,并生成pool_transactions_genesis和domain_transactions_genesis文件,必须使用indy plenum

您可以在以下教程中找到详细信息:

您可以在以下链接中找到该教程的代码库:


非常感谢您的回答。您好,帕特里克,我们创建了4个节点和5个客户端。这5位客户是谁?关于“{”reqSignature:{},“txn:{”data:{”dest:“V4SGRU86Z58d6TV7PBUe6f”,“role:“0”,“verkey:“~CoRER63DVYnWZtK8uAzNbx”},“metadata:{},“type:“1”},“txnMetadata:{”seqNo:“1},“ver:“1”}”?@Polem定义了在分类账上创建的第一个DID。您可以注意到,所有后续事务都有“from:V4SGRU86Z58d6TV7PBUe6f”,因此V4SGRU86Z58d6TV7PBUe6f是这些后续事务的作者。您还可以注意到,在您指出的事务中,
V4SGRU86Z58d6TV7PBUe6f
DID被分配了作为受托人的角色
0
。如果我没记错的话,生成种子的DID
V4SGRU86Z58d6TV7PBUe6f
000000000000000000000000000000000000信任1
谢谢你的回答!是的,你是对的,但那是谁的身份?例如,根据我的研究,我假设DID
th7mptarzvrynpiads81y
是Node1的管理员,这引出了另一个问题。每个节点都有一个管理员/观察者角色吗?这些是docker中indy pool的genesis事务。它应该只用于发展。所以,这是一种“管理员”与高特权的角色。Afaik如果要运行参与共识的节点,则需要拥有DID和Steward角色。这里有更多信息。我不确定,但我认为观察员节点/角色也是如此。
docker exec indylocalhost ls '/var/lib/indy/sandbox'
data
domain_transactions_genesis
keys
node1_additional_info.json
node1_info.json
node1_version_info.json
node2_additional_info.json
node2_info.json
node2_version_info.json
node3_additional_info.json
node3_info.json
node3_version_info.json
node4_additional_info.json
node4_info.json
node4_version_info.json
pool_transactions_genesis
docker exec indylocalhost cat '/var/lib/indy/sandbox/domain_transactions_genesis'
{"reqSignature":{},"txn":{"data":{"dest":"V4SGRU86Z58d6TV7PBUe6f","role":"0","verkey":"~CoRER63DVYnWZtK8uAzNbx"},"metadata":{},"type":"1"},"txnMetadata":{"seqNo":1},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"Th7MpTaRZVRYnPiabds81Y","role":"2","verkey":"~7TYfekw4GUagBnBVCqPjiC"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":2},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"EbP4aYNeTHL6q385GuVpRV","role":"2","verkey":"~RHGNtfvkgPEUQzQNtNxLNu"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":3},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"4cU41vWW82ArfxJxHkzXPG","role":"2","verkey":"~EMoPA6HrpiExVihsVfxD3H"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":4},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"TWwCRQRZ2ZHMJFn9TzLp7W","role":"2","verkey":"~UhP7K35SAXbix1kCQV4Upx"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":5},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"7JhapNNMLnwkbiC2ZmPZSE","verkey":"~LgpYPrzkB6awcHMTPZ9TVn"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":6},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"MEPecrczs4Wh6FA12u519D","verkey":"~A4rMgHYboWYS1DXibCgo9W"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":7},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"EAPtwgevBpzP8hkj9sxuzy","verkey":"~gmzSzu3feXC6g2djF7ar4"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":8},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"LuL1HK1sDruwkfm68jrVfD","verkey":"~Nyv9BKUJuvjgMbfbwk8CFD"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":9},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"dest":"462p8mtcX6jpa9ky565YEL","verkey":"~LCgq4hnSvMvB8nKd9vgsTD"},"metadata":{"from":"V4SGRU86Z58d6TV7PBUe6f"},"type":"1"},"txnMetadata":{"seqNo":10},"ver":"1"}