我试图了解为什么对应用程序层而不是Hyperledger Fabric 1.0分类帐网络定位了已批准的事务的验证。
让我们假设三种可能的情况:
a)使用Oracles请求执行功能所需的信息,并将Oracle的地址嵌入到事务属性中。
b)根据交易的来源(即通过解组的同行或发件人身份)执行不同的行动
c)通过将恶意二进制代码注入dev- *容器来篡改原始智能合约代码
如果,假设一个有恶意意图的真正网络参与者希望向分类帐注入一些垃圾并且可以访问应用程序源代码,那么她/他可以调整此SDK函数以强制建议的事务处理不同结果将直接发送给Orderers。如果我理解正确,网络将不会发现这种不当行为。
如果我错了,请纠正我,如果这个问题可以在网络层以某种方式减轻。
答案 0 :(得分:1)
应用程序层是实现认可策略的应用程序层,因为应用程序调用链代码,因此要使应用程序必须执行,并且直接针对涉及或与给定事务相关的所有各方调用链代码。
话虽如此,很明显,在任何情况下,一旦申请调用和收集认可,让应用层验证认可结果并确保它们在提交给订购服务之前是正确的,这是很有意义的。< / p>
但是,如果客户不进行该检查或将尝试调整认可结果,首先它将无法提供篡改数据所需的签名。此外还有一个VSCC(验证系统Chaincode),它负责验证交易以确保满足认可政策,过度拒绝/使交易无效。
我认为在应用程序方面进行验证更像是一种最佳实践,并且一旦应用程序收到所有认可结果,旨在为事务验证周期保持不一致的优化路径。