Chaincode 应该只安装在背书对等节点上吗?

Chaincode should only be installed on endorsing peer nodes?

根据 hyperledger fabric 文档,链码只能部署在背书节点中,它表示非背书节点仍然可以验证和更新账本。现在我有点困惑,如果非背书节点没有链代码,他们如何生成 R/W 集合。如果非背书节点不知道其背后的逻辑(链代码),他们将如何为资产创建新状态?

如果您查看 https://hyperledger-fabric.readthedocs.io/en/release-1.1/txflow.html#,您会发现一个部分说明:

交易块被“交付”给通道上的所有节点。区块内的交易经过验证,以确保背书政策得到履行,并确保自交易执行生成读取集以来,读取集变量的分类帐状态没有发生变化。区块中的交易被标记为有效或无效。

一个区块是一组有序的交易,交易包括 read/write 组形式的状态转换。背书的输出实际上是 read/write 集合,这些是订购并传递给通道中所有对等点的内容。

为了验证交易,节点需要检查以下内容:

  • 交易格式是否正确
  • 是否符合背书政策( 背书策略分发给通道中的所有节点 即使对等方没有 链码字节)
  • MVCC 检查

为了执行上述操作,节点不需要自己执行链代码。