Hyperledger fabric 分类账的定义

Hyperledger fabric 分类账的定义,hyperledger-fabric,blockchain,Hyperledger Fabric,Blockchain,我正在阅读hyperledger fabric的文档。在这一页我找到了这一行 The chaincode (containing a set of key value pairs representing the initial state of the radish market) is installed on the peers and instantiated on the channel. 这句话把我弄糊涂了。我认为这是分类账的定义,但在这里它是以链码的形式写的 我的看法正确吗 谁

我正在阅读hyperledger fabric的文档。在这一页我找到了这一行

The chaincode (containing a set of key value pairs representing 
the initial state of the radish market) is installed on the peers and
instantiated on the channel.
这句话把我弄糊涂了。我认为这是分类账的定义,但在这里它是以链码的形式写的

我的看法正确吗

谁能给我解释一下吗

链码(或更常见的术语智能合约)定义了一组业务模型、事务定义和逻辑,应用程序(SDK)可以利用这些模型、事务定义和逻辑创建事务。 对于上面显示的句子,这并不是指链码的定义。我相信它只是传达了这样一种想法,即链码中已经定义了一个萝卜列表(在键和值对中),因此一旦它被实例化(或者调用了initRadissh函数,如果它存在于链码中),萝卜列表将成为分类账中世界状态的一部分

分类账和链码在结构中的关系如何

分类账由两部分组成,即世界状态和区块链。世界状态存储密钥的最新值,而区块链存储导致世界状态的所有事务日志

如上所述,chaincode根据函数定义事务逻辑,以便应用程序可以调用创建事务,从而触发状态转换或状态检索

例如,您在chaincode中定义了一个名为
BuyRadissh(radishID,newOwner)
的函数。假设有一个萝卜,上面有钥匙
R1001
和值
{“所有者”:FarmerA,“状态”:OnSale}
。这是任何事务发生之前的键值对。使用参数
RadiHid=R1001,newOwner=Ken
调用链码中的函数后,将创建一个事务,并且带有键
R1001
的radish的状态将变为
{“owner”:Ken,“status”:sell}
。请注意,萝卜的这种最新状态将在world state上看到

通过以上示例,您可以这样思考: 分类账存储最新的键值对(确切地说是键值的最新值)。链码可能有一些键值对用于初始化;然而,关键是我们正在传递一组新的键值对(
radihid=R1001,newOwner=Ken
)作为chaincode中函数的参数,以便在分类账的世界状态中更新相同键值(
radihid=R1001


希望能有帮助

链码是部署在网络上的编程代码,在协商一致过程中由链验证器一起执行和验证。开发人员可以使用链码来开发业务合同、资产定义和集体管理的分散应用程序。


Chaincode是一个程序(智能合约),用于读取和更新分类账状态。

这会有所帮助:我已经阅读过了。在此文档中,有一行“默认情况下,分类账状态表示为键值对”,表示分类账。这意味着分类账状态只是键值对。但在交易流文档中,相同的内容被称为链码。这就是我感到困惑的原因。你能从关键和价值的角度解释分类账和链码之间的区别吗?@ShajalAhamed将你的问题重新表述了一下,请看上面编辑的答案。
How ledger and chaincode relate in Fabric?