gpt4 book ai didi

couchdb - 使用 CouchDB 作为 Ledger State 数据库时,Hyperledger Fabric 中的数据如何存储?

转载 作者:行者123 更新时间:2023-12-02 13:09:42 24 4
gpt4 key购买 nike

我正在运行 Chaincode for Developers Tutorial 中的代码,运行基本示例链代码以在账本上创建 Assets (键值对)。

我可以使用 cli 调用链代码

peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc

并且还运行查询

peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc

现在我想看看键值对如何存储在 CouchDB 中。因此,我更改了以下 fabric-samples/chaincode-docker-devmode/docker-compose-simple.yaml

中的环境变量
CORE_LEDGER_STATE_STATEDATABASE=CouchDB
CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984

当我运行 set 时,我在 CouchDB UI 中看到如下创建的文档 ( http://localhost:5984/myc/_all_docs )。

{
"total_rows": 3,
"offset": 0,
"rows": [{
"id": "lscc\u0000mycc",
"key": "lscc\u0000mycc",
"value": {
"rev": "1-dc6dc8ff92efd35358cf5b89e7949c25"
}
},
{
"id": "mycc\u0000a",
"key": "mycc\u0000a",
"value": {
"rev": "3-7ad1349ec711a99a2a2f1dd1c8b08a20"
}
},
{
"id": "statedb_savepoint",
"key": "statedb_savepoint",
"value": {
"rev": "6-2c3d131fc75772cc9e70311998bdde9d"
}
}
]
}

如何/在哪里存储和检索 key 的值?在检查数据库中的文档时,如下所示,但在运行链代码获取查询时可以正确检索。

"value": {
"rev": "3-7ad1349ec711a99a2a2f1dd1c8b08a20"
}

最佳答案

虽然 key 保留在数据库中,但它以链码名称为前缀,在您的示例中它是 mycc 并使用 []byte{0x00} 值作为分隔符。因此,您在示例中看到以下输出:

{
"id": "mycc\u0000a",
"key": "mycc\u0000a",
"value": {
"rev": "3-7ad1349ec711a99a2a2f1dd1c8b08a20"
}
},

代表链码mycc的键a。要获取此键的值,您只需运行 curl 命令,如下添加查询参数 attachements=true,例如:

curl -X GET "http://localhost:5984/mychannel/mycc%00a?attachments=true"

会产生类似的结果:

--bdb0a91d2e233fdc193f2359e6a50472
Content-Type: application/json

{"_id":"mycc\u0000a","_rev":"2-2af72e502c2b43c73064728852103fbf","chaincodeid":"mycc","version":"4:0","_attachments":{"valueBytes":{"content_type":"application/octet-stream","revpos":2,"digest":"md5-qpvq4/JGMCgu7WtvFu5zbg==","length":2,"follows":true,"encoding":"gzip","encoded_length":22}}}
--bdb0a91d2e233fdc193f2359e6a50472
Content-Disposition: attachment; filename="valueBytes"
Content-Type: application/octet-stream
Content-Length: 22
Content-Encoding: gzip

4鯄i
--bdb0a91d2e233fdc193f2359e6a50472--%

有关如何从 CouchDB 读取数据的更多信息,您可能会找到以下内容 tutorial有用。

关于couchdb - 使用 CouchDB 作为 Ledger State 数据库时,Hyperledger Fabric 中的数据如何存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46149968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com