一种Fabric与Tendermint的多通道集成方案

本文探讨了一种将Fabric与Tendermint集成的方案,以支持PBFT共识,适用于对拜占庭容错有要求的场景。提出两种策略:1) 每通道对应一个Tendermint集群,2) 改造Tendermint支持多链。重点介绍了改造Tendermint的思路,通过在交易中附加通道信息,确保不同通道交易在Tendermint链上的对应,并通过映射表解决同步时的数据丢失和效率问题。
摘要由CSDN通过智能技术生成

       将Fabric与Tendermint进行集成,使其支持PBFT共识算法,以应用于一些对拜占庭容错有要求的生产环境。为了达到这个目的,首先我们要解决的就是Tendermint如何支持多链的问题。

       这里有2种方案:

       1.针对Fabric的每一个通道,我们都启动一个对应的Tendermint共识节点集群。

       2.改造Tendermint,使其支持多链模式。

       方案1的开发成本较低,但因为每一个通道都需要有一个独立的Tendermint集群,将造成维护成本上升和系统资源占用的增加。

       方案2开发成本较高,但不会造成方案一上述问题。我下面主要讲解方案2的设计思路和实现原理。

思路:

     借鉴kafka的topic概念,每一条交易在经过orderer送往kafka时都会附带上topic信息,即该交易本身所属的通道信息。因此我们同样可以将发Tendermint共识节点的交易附加上通道信息,使其在同一条链上记录不同通道的交易数据。

     同时,在Tendermint的abci接口中,每当我们从Tendermint共识节点收到一条交易,我们即将该交易在Tendermint链上的位置附加在该交易数据中,并且在orderer打包出块时将这个区块里最后一条交易在Tendermint链中的位置信息附加到块信息中。这样我们在每个Fabric通道中的区块都与Tendermint中的区块有了对应关系,因此便可以在Fabric与Tendermint之间进行区块同步。

问题:

     设想这样一种场景:如果我们的Fabric系统中创建了3个channel,分别为C1,C2,C3。其中C1的最后一个块的最后一条交易在Tendermint中的位置为blocknum=100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值