hyperledger-fabric - 如何知道我在超级账本结构中使用的 stateDB
问题描述
我已经安装了 Hyperledger Fabric 2.0。我正在织物示例目录中运行 fabcar 示例。fabcar 链代码使用测试网络作为结构网络。我想知道 fabcar 示例正在使用哪个 stateDB。
当我运行命令时docker ps -a
,我得到的输出为 couchdb,如下所示。
bdf6370d6f5d hyperledger/fabric-couchdb "tini -- /docker-ent…" 16 minutes ago Up 16 minutes 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp couchdb0
660ba3f7d2a4 hyperledger/fabric-couchdb "tini -- /docker-ent…" 16 minutes ago Up 16 minutes 4369/tcp, 9100/tcp, 0.0.0.0:7984->5984/tcp couchdb1
但是链码在 fab-car 链码中以键值对的形式存储数据。键值对存储用于level-db
await ctx.stub.putState(carNumber, Buffer.from(JSON.stringify(car)));
我真的很困惑我是使用 level-db 还是 state-db 作为 fabcar 示例。
解决方案
'State DB' = 存储状态的 DB。这是术语,不是软件。
“LevelDB”或“CouchDB”都可以作为状态数据库(这些是软件)。这取决于从 HLF 2.0 开始将哪些开关传递到“startFabric.sh”中的“byfn.sh”
'startFacric.sh' 中的以下命令将导致'CouchDB' 被用作'State DB'。从中删除“-s couchdb”,HLF 将使用“LevelDB”。
echo y | ./byfn.sh up -a -n -s couchdb
同样在“fabric-samples\first-network\docker-compose-couch.yaml”中,您将拥有以下类型的条目,这些条目会说明您的对等连接到哪个沙发数据库实例。
peer0.org1.example.com:
environment:
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984
# The CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME and CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD
# provide the credentials for ledger to connect to CouchDB. The username and password must
# match the username and password set for the associated CouchDB.
- CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=
- CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=
depends_on:
- couchdb0
在这种情况下,“peer0.org1.example.com”连接到端口 5984 上的“couchdb0”。假设整个设置在“localhost”上运行,以下 URL 将显示 CouchDB 实例,您可以四处看看'状态'也保存到它。
http://localhost:5984/_utils/
假设您的频道名称是“mychannel”并且链代码名称是“mycc”,那么您将在“CouchDB”中有一个名为“mychannel_mycc”的数据库。这保存了“mycc”链码的世界状态。
推荐阅读
- python - 检查字段是否为空 - Django
- python - pybliometrics returning "Error translating query"
- unity3d - What is the difference between adding a method() as the last statement in a update and using LateUpdate()?
- python - Encoding csv error with Pandas - have to encode one csv file but not the other -both have same encoding
- java - Is it possible to nest transactions with TransactionManager?
- go - Go get behaving erratically during build and with VScode
- python - How do I insert this list into a postgresql array
- macos - Vscode debugger error, code signature not valid
- r - Calculate accuracies for k = 1:10 on cv with 5 folds using 2 given loops
- reactjs - What is the best way to handle Firestore with React?