环链容错

LFT的Python项目详细描述


LFT2型

UnittestIntegrationTest

LFT2是受PBFT启发的一种新的一致性算法。与PBFT相比,当节点达成一致意见时,它通过减少一对投票来改进TPS。为了保证安全,引入了“候选人”的概念。在

这是作为一个库实现的。因此,不仅区块链,任何需要拜占庭容错共识算法的应用程序都可以集成区块链。在

这包含了一个易于理解的示例应用程序。不需要集成就可以运行它。此外,它在这个单一的应用程序中组成了多个节点。您可以模拟拜占庭节点的行为,并观察它是如何容忍这些行为的。在

白皮书[English][Korean]。在

示例应用程序

您可以使用此命令运行示例应用程序。在

$ 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连接到0x67650x6765上一轮已经决定了。在

重播

$ 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不负责节点通信、存储块和执行事务。所以应用程序必须实现它们。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何删除列表中的重复项并将列表复制到另一个列表中   Java如何在非UI应用程序中检测tab键按下?   java无法在未调用Looper的线程内创建处理程序。警报对话框线程上的prepare()   java Jaxb将XML转换为ElementNSImpl类型,而不是正确的类型   基于java标记的过滤实现Firestore   我们可以使用Java和Eclipse使用YouTube分析Api吗?   JavaSpring注释在多个选项卡中同时打开多个视图   java Hibernate不使用JBOSS检索数据   矩阵如何从Apache Commons数学Java库中找到伪逆   对象Java打印“null”作为字符串引用!=使无效   java中的图形慢映射   java用户界面:操作栏和上下文操作栏,新趋势   java Infinispan,版本化操作返回不正确的结果   java调整保存在父JFrame中的JInternalFrame的大小,并且该父JFrame使用ComponentMover API注册   java如何防止会话属性在服务器上持久化?   java如何为SpringBoot 2创建自定义嵌入式servlet容器   使用Robolectric进行单元测试时,在片段类内调用getString()时发生java IllegalStateException