Fabric关键问题20问

1、是否所有的背书节点都有相同的功能?一笔交易是不是任意的背书节点都可以验证,还是只能由支持此交易的背书节点验证?

答:只有安装了相同的chaincode的peer节点才具有背书的功能。所以一个peer节点想要成为背书节点,必须安装对应的chaincode。
一笔交易肯定是由于调用了链码而产生的,所以这笔交易必须由其他的安装了相同链码的背书节点进行验证。

2、背书节点在验证的时候是否知道了交易的全部内容,如何保证数据的隐私的?

答:背书节点在验证的时候可能并不知道交易的全部内容,Fabric有一个名为“transient”的存储,这个存储只在当前peer节点;如果有交易的话“transient”存储的数据会通过Gossip协议隐秘的传输给另一个peer节点。然后这两个peer节点都可以查询到“transient”存储的数据。而channel上的其他成员是无法看到这些数据的,因此并不是所有的背书节点都可以直到交易的全部内容。

2.1 这个问题会引出另一个新的问题,背书节点在缺少数据的情况下如何进行背书呢?这不就导致背书失败了吗?

答:是的,拿不到“transient”存储的数据的背书节点会背书失败。但是由于我们可以设置chaincode和key的基于状态的背书策略,因此就算有部分背书节点背书失败了,只要能看到数据的背书节点做了背书并符合背书策略即可达成共识。

这个问题可以查看在Fabric中交易受保护的资产

3、区块数据的数据结构如果是数组的话,如何做到防篡改?

答:暂时无法回答此问题,待完成。

4、主节点是干什么的?主节点可以交易吗?主节点和普通的peer节点有什么不一样?

答:所谓的主节点应该是Order,目前了解到的只是负责交易的排序以及信息的转发。更多内容待学习。

5、链码是不是就是智能合约?

答:链码就是智能合约,只有调用智能合约才可以更改channel上的账本。