使用 compareProposalResponseResults SDK class 验证背书交易

Using compareProposalResponseResults SDK class to verify endorsed transactions

我试图理解为什么背书交易的验证位于应用程序层而不是 Hyperledger Fabric 1.0 分类帐网络。

让我们假设三种可能的情况:

a) 使用 Oracles 请求执行功能所需的信息,并且 Oracle 的地址嵌入到事务属性中。

b) 根据交易的来源执行不同的操作(即通过未编组的对等方或发送方身份)

c) 通过向 dev-* 容器中注入恶意二进制代码来篡改原始智能合约代码

比方说,如果一个真正的网络参与者怀有恶意想要向账本中注入一些垃圾并有权访问应用程序源代码,she/he 可以调整此 SDK 功能以强制建议的具有不同结果的交易将直接发送给订购者。如果我没理解错的话,网络是不会检测到这种不当行为的。

如果我错了,请纠正我,如果这个问题可以在网络层以某种方式缓解。

应用层是实现背书策略的层,因为应用程序调用链代码,因此为了使其有效,应用程序必须去并针对给定交易涉及或相关的所有各方逐字调用链代码。

话虽如此,很明显一旦应用程序在任何情况下调用和收集背书,在提交给排序服务之前让应用层验证背书结果并确保它们是正确的是很有意义的.

但是,如果客户端不进行该检查或将尝试调和背书结果,首先它将无法对篡改数据提供所需的签名。此外,还有一个 VSCC(验证系统链码)负责验证交易以确保背书策略得到满足,否则 rejects/invalidates 交易。

我想说在应用程序端进行验证更像是一种最佳实践和优化路径,目的是在应用程序收到所有背书结果后,为已知不一致的交易节省验证周期。