我是否可以在Hyperledger Fabric中将数据直接存储到数据库中而无需链代码。我可以在Hyperledger composer中通过直接调用声明的资产的API(composer REST SERVER)来进行处理。
我读过某个地方,链式代码拥有数据库,因此这意味着它不能直接存储,而Hyperledger作曲者实际上可以克服这一问题。我对吗?有人可以澄清一下我所缺少的吗?
答案 0 :(得分:1)
Composer在Fabric上运行。它在后台使用了一些通用链代码,这些链代码正在使用模型/事务文件来放置数据库中的数据并从中获取数据。
仅使用Fabric存储数据,就必须编写一个简单的chaincode。幸运的是,在Hyperledger Fabric提供的示例文件中,您可以找到确切的操作方法。 查看弹珠:https://github.com/hyperledger/fabric-samples/tree/release-1.2/chaincode
答案 1 :(得分:0)
Chaincode是Fabric的强制组件的一部分。当您从应用程序调用REST服务器以查询或向分类帐添加新信息时,Fabric需要使用链码来执行该命令。
没有chaincode,您的Fabric网络将没有任何“业务逻辑”(例如, seller1 向 buyer2 提供资产,且最少为 XItems 和最多 YItems )。此外,将更改包含到区块链中的工作流程需要作为第一步的背书,每个对等方都使用链码签署交易建议,这意味着==>没有链码=没有对交易建议的认可=对区块链没有任何更改(请检查“第1阶段:建议”-> https://hyperledger-fabric.readthedocs.io/en/release-1.4/peers/peers.html#phase-1-proposal)
Fabric网络中的任何人都可以在不执行链码的情况下更改分类帐,这意味着任何人都可以包括不适应您的业务模型/逻辑的数据。
Composer及其组件只是Fabric之上的可选层。 composer中包含的所有组件仅与Fabric(强制性/基础层)交互,而无需链码,Fabric将无法查询或更改分类帐状态,因此使用此功能的Composer组件将失败。
答案 2 :(得分:0)
如果您使用作曲家,那么您将自动使用以bna形式部署到网络的链码。那bna是chaincode。 composer-rest-server 为您自动创建的API利用了该链码,并创建了端点供您访问所述链码并与网络一起使用。
您可以扩展bna,可以添加访问规则或创建事务,这是您真正需要的。现在,您还提到了一个数据库。
超级账本的工作方式如下:
分类帐本身是磁盘上的文件,而不是数据库。该文件包含所有发生的事情,并存储每个信息块及其包含的事务。也有一个世界数据库,但是该数据库仅公开了每种资产的当前状态,而不是每个状态变化。无论如何,直接更改该数据库没有意义,因为它可以并且将在需要时轻松地重新创建。
我要说的最后一件事是作曲家,IBM宣布将不再开发/维护它,因此您需要考虑其他方式: