环链容错
LFT的Python项目详细描述
LFT2型
LFT2是受PBFT启发的一种新的一致性算法。与PBFT相比,当节点达成一致意见时,它通过减少一对投票来改进TPS。为了保证安全,引入了“候选人”的概念。在
这是作为一个库实现的。因此,不仅区块链,任何需要拜占庭容错共识算法的应用程序都可以集成区块链。在
这包含了一个易于理解的示例应用程序。不需要集成就可以运行它。此外,它在这个单一的应用程序中组成了多个节点。您可以模拟拜占庭节点的行为,并观察它是如何容忍这些行为的。在
示例应用程序
您可以使用此命令运行示例应用程序。在
$ lft
此命令运行4个节点。他们把数据作为共识的结果。如果你想用10个节点运行它,那么运行下面的命令。在
^{pr2}$你可以看到很多事件日志。在
16:18:34,085 0xd32b RoundEndEvent(is_success=True,epoch_num=1,round_num=1,candidate_id=0xd4ad,commit_id=0x6765)
事件日志由时间、节点id和事件组成。这个日志意味着第一轮的成功结束是决定一个新的候选人。每一轮都会达成共识,以确定一名候选人。一个候选者在与该候选者连接的下一个新候选者被决定之后被提交。在本例中,0xd4ad
连接到0x6765
。0x6765
上一轮已经决定了。在
重播
$ lft record
它记录事件日志以便重播。日志路径是./data
。它包含所有节点的事件。在
$ lft replay -t 1abde1d6c2eb942df4686116d64f889d
参数1abde1d6c2eb942df4686116d64f889d
是运行recording命令后位于日志路径中的节点id之一。在
集成
提供了一些用于集成的组件。想要使用LFT的应用程序必须定制抽象类。在
Data(Block), DataFactory(BlockFactory), Vote, VoteFactory, Epoch
应用程序必须发布事件。在
RoundStart
应用程序必须监听事件。在
RoundEnd, BroadcastData, BroadcastVote, ReceiveData, ReceiveVote
注意,LFT2不负责节点通信、存储块和执行事务。所以应用程序必须实现它们。在
- 项目
标签: