bcosorg / bcos

BCOS平台(Be Credible, Open & Secure)
GNU General Public License v3.0
872 stars 286 forks source link

raft问题 #71

Open zbc163001 opened 6 years ago

zbc163001 commented 6 years ago

据我理解raft是不能解决拜占庭问题的,想问下如果刚好一个恶意节点被选取成为leader,怎么办,不是能随意篡改链信息吗?

atenjin commented 6 years ago

你好,raft本来就不是用于存在恶意节点的环境中的。若系统中存在恶意节点应该把这类问题归结为拜占庭问题使用bft类算法,而不是使用非拜占庭问题的 raft算法等

zbc163001 commented 6 years ago

但你们所说的那么高的并发量实在raft共识下跑出来的吗

atenjin commented 6 years ago

不是的,是在pbft下做的测试

zbc163001 commented 6 years ago

好的

zbc163001 commented 6 years ago

你们的pbft也是靠分片提高并发量的吗

atenjin commented 6 years ago

不是,我们提高pbft的并发量靠的是把pbft的算法和区块链的一些性质结合起来,使其能在第一阶段的时候并行执行。举例来说就是比如比特币的pow算法,竞争矿工在竞争一个区块的时候,流程是首先完成自己区块的打包与执行,然后把这个块广播道网络中,别的矿工收到这个块的时候执行一遍。在这样流程上看来,打包者的执行和验证者的执行是个串行的关系。而我们实现的pbft中,对于这部分区块的验证流程更改为打包者首先广播了打包的区块(未执行),验证者收到区块,这个情境下,打包者和验证者对于区块的执行流程是并行的,随后是在收集签名的阶段校验一致性问题的。依据这种思路来提高并发量。 注:BCOS 的pbft实现类似 小蚁 的dbft 中的 对于 pbft 的改进,省略的原pbft算法的第三部分,依据区块链的块必跟随上一个块即可保证顺序的特性,所以严格来说只有2阶段 但是 BCOS 的新版本 FISCO-BCOS 中的Pbft 实现是和原算法相同的三阶段流程, 更加可靠。 若需要后者,请移步新版本的仓库 链接