账本的定义

Definition of ledger

我正在阅读 hyperledger fabric 的文档。在 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.

这一行让我很困惑。我认为是 ledger 的定义。但是这里它被写成链码。

我的看法正确吗?

谁能给我解释一下?

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

How ledger and chaincode relate in Fabric?

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

正如我上面所说,链码根据功能定义交易逻辑,以便应用程序可以调用以创建交易,从而触发状态转换或状态检索。

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

结合上面的例子,你可以这样想: 分类帐存储最新的键值对(或者准确地说是键的最新值)。链码可能有一些用于初始化目的的键值对;然而,关键是我们将一组新的键值对 (radishID = R1001, newOwner = Ken) 作为参数传递给链代码中的函数,以便更新相同键 (radishID = R1001) 的值账本的世界状态。

希望对您有所帮助。

链码是部署在网络上的程序代码,在共识过程中由链验证器一起执行和验证。开发人员可以使用链代码来开发业务合约、资产定义和集中管理的去中心化应用程序。 more about chaincode click here

How ledger and chaincode relate in Fabric?

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