参见上图,A是我们的应用程序,其步骤如下:
A首先连接到peer。
A调用chaincode发起proposal;与此同时,P1收到后先模拟执行,再产生结果返回给A。
A收到各peer返回的结果。
A向O1发起交易;与此同时,O1产生区块后会通知peer,而peer会更新其账本。
最后通过订阅事件A收到了结果。
最后再细看下这三个阶段。
可以看到,A1发出的<T1, P>,收到了<T1, R1, E1>和<T1, R2, E2>两个结果。
O1在一个channel上会收到许多T交易,它会将T排序,中年服饰在达到block的最大大小(一般应配1M以下,否则性能下降严重,kafka擅长处理小点的消息)或者达到超时时间后,打成区块P2。
O1将含有多条交易T打成区块的B2发往各peer节点,而P1和P2将B2加入各自的L账本中。
本文偏重于概念的解释,由于篇幅所限,未涉及fabric的系统搭建(请参考笔者的这篇文章《区块链开源实现fabric快速部署及CLI体验》),也未描述共识算法在异常情况下如何维持一致性,这留待下一篇文章解决。fabric的许多思想是值得我们进一步研究的,其优秀的实现可以帮助我们通过fabric获得区块链在信任创新上的思路。