分类帐的定义

时间:2018-08-27 04:33:55

标签: hyperledger-fabric blockchain

我正在阅读超级账本面料的文档。在transaction flow页面上,我找到了这一行

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.

这句话使我感到困惑。我认为这是分类帐的定义,但是这里以链码的形式编写。

我的看法正确吗?

有人能解释我吗?

2 个答案:

答案 0 :(得分:2)

Chaincode(或更常用的术语“智能合约”)定义了一组业务模型,交易定义和逻辑,应用程序(SDK)可以利用这些逻辑来创建交易。 对于上面显示的句子,这并不涉及链码的定义。我相信它只是传达了这样的想法,即已经在链代码中定义了一个萝卜列表(在键和值对中),因此一旦实例化(或调用initRadish函数,如果链代码中存在它),那萝卜列表将成为分类帐中世界国家的一部分。

  

分类帐链码在Fabric中如何关联?

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

如上所述,chaincode在功能方面定义了事务逻辑,以便应用程序可以调用以创建事务,从而触发状态转换或状态检索。

例如,您在链码中定义了一个名为buyRadish(radishID, newOwner)的函数。假设有一个萝卜,其键为R1001,值为{"owner": FarmerA, "status": OnSale}。这是任何交易发生之前的键值对。一旦用参数radishID = R1001, newOwner = Ken调用了链码中的函数,就创建了一个事务,并且键为R1001的萝卜状态将变为{"owner": Ken, "status": Sold}。请注意,萝卜的最新状态将在世界状态中显示。

在上面的示例中,您可以这样思考: 分类帐存储最新的键值对(或者确切地说是键的最新值)。链码可能具有一些键值对以进行初始化;但是,关键是我们要在链码中传递一组新的键值对(radishID = R1001, newOwner = Ken)作为该函数的参数,以便在其中更新同一键(radishID = R1001)的值。分类帐的世界状态。

希望有帮助。

答案 1 :(得分:0)

链码是部署在网络上的程序代码,在共识过程中,链验证程序将链码一起执行和验证。开发人员可以使用链码来开发业务合同,资产定义以及集中管理的分散式应用程序。 more about chaincode click here

How ledger and chaincode relate in Fabric?

Chaincode是编写用于读取和更新分类帐状态的程序(智能合约)。