详解FLETA的Proof-of-Formulation共识算法
FLETA是一个为分散式应用程序(DApps)设计的区块链服务平台,它解决了困扰区块链空间的潜在可扩展性问题,其中包括平衡可扩展性,速度和分散化三个方面。
FLETA对区块链领域的重大创新之一是新颖的“配方证明”共识算法,通过提供块和交易的实时确认来防止分叉。配方证明一致性算法目前正通过FLETA和美国专利局(申请号:62717695)进行专利申请。
什么是一致性算法?
共识算法是计算机科学中的一个过程,用于在整个分布式网络中就单个数据值在多个方面达成一致。在区块链网络中,共识通常集中在区块生成和确认上。
比特币和以太坊都使用工作证明(PoW)一致性算法来创建和确认各自区块链网络中的交易。
PoW在更大规模上是不切实际的,因为它需要整个网络达成多数共识,这需要使用过多的计算能力和资源。因此,比特币是一个缓慢的系统,每秒只能管理7个事务。而以太坊并没有更好,每秒只有15到25笔交易。
Proof-of-Formulation
在配方证明(PoF)中,与现有的区块链平台相比,挖掘和块生成的方式不同。Formulator充当FLETA平台中的块生成器。Observers允许实时确认生成的块并防止双重花费。
Formulators
Formulator作为PoF算法的支柱,通常有20个Formulator组成一个在“RankTable”下排名在1到20之间的组。他们的排名基于一个分数,该分数通过以下公式计算:
Score: uint64(Phase) << 32 + uint64(binary.LittenEndian.Uint32(hash[:4]))
“Hash”用作前一个块的哈希值,“Phase”是一个与时间相关的值,表示RankTable已经“转向”或经过所有配方设计器生成块的次数。
系统中的新Formulator参与具有最大阶段+ 1值的RankTable。
这样做的目的是确保每个Formulator在每个阶段都至少有一个挖掘机会,因此将为块生成的每个阶段制定不同的配方器序列(或排名)。这可以防止任何恶意Formulator攻击和勾结的可能性。
Observers
简单来说,Observers的主要作用是防止DDoS攻击并维护整个区块链网络的安全性。
为了维护系统的系统序列和过程,每个Formulator将访问Observers节点以隐藏和掩盖其IP。这可以防止任何形式的针对Formulator的DDoS攻击。
Observers节点的主要特征包括:
- 每个Formulator组有5个Observers节点,其中3个需要在生成的块上签名才能确认
- 收到有关Formulator活动的实时信息
- 向Formulator设备和其他用户显示节点状态和结构信息,以提高网络的整体透明度
块生成过程
PoF下的块生成如下:
- 具有最高等级/分数的Formulator成为块生成器
- 排名第2到第10的Formulator组成了同步组。他们是同意块生成顺序的人
- 排名第11至20位的Formulator组成了备用组
- 块生成器生成块并将其发送到同步组
- 同步节点确认块生成器序列和标头,对块进行签名,然后将其发送到Observer节点。
- 当Observer节点收到至少6个签名时,它会检查所有事务签名以确认块的合法性,然后签署块将其发送给其他Observer节点
- 一旦收集了五个Observer节点中的三个签名,该块就完成了,Observer将完成的签名发送回同步组
- 然后,同步组通过将Observer的签名附加到他们最初接收的块并将其发送到备用组来创建已完成的块
- 然后将块分发到网络
一旦块生成过程完成,块生成器(第一个排名的Formulator)返回到列表的底部(等级20),并且每个Formulator向上移动一个等级,使得每个Formulator都有机会在RankTable的每个转向期间生成块。
PoF之所以比其他共识协议快得多,是因为网络分为不同的各方,每个方都负责处理过程的不同部分。例如,同步和备用组有助于划分传输流量,以确保块在整个网络中尽可能快地传播。
在配方证明下,分叉被阻止,区块链网络能够以比现有区块链网络高得多的速度(10,000到20,000 TPS)处理交易。
PoF下的分叉预防
#1丢弃有缺陷的块
如果块生成器发送了错误的块,则收件人节点将丢弃该块并准备接收新块。在这种情况下,发生器具有1秒的时间以产生正常块,否则排名第二的Formulator将开始创建新块,如果初始Formulator仍未提出新块,则该块将在3秒后传播。
Observer节点将确认初始生成器未能在3秒内创建块,因此从第二级Formulator继续进行块的签名过程。
#2 分叉预防
正如我们已经看到的以太坊和以太坊经典,以及比特币,比特币现金和比特币SV分裂,分叉可能对区块链网络非常不利。 PoF算法通过使分叉不可能发生来重新认识这种异常。
由于5个Observer节点中有3个需要在块上签名以便确认它,因此根本不可能使用分叉,因为具有3个签名中的3个的第一个块将被确认为链中的下一个块。
Conclusion
FLETA的配方证明共识不仅快速,而且由于Observer节点,Formulator和同步组之间增加了一层保护,因此它也非常安全。
与PoW共识不同,PoF不需要过多的计算资源或依赖于某人拥有的“赌注”数量。正因为如此,它减少了对每个人谁开采和创造区块的竞争。 PoF还具有内置机制,以防止任何类型的分叉的可能性。您可以在FLETA中了解有关PoF的更多信息whitepaper, tech paper, and Alpha Testnet报告.
原文链接:https://medium.com/fleta-first-chain/breaking-down-fletas-proof-of-formulation-2860c6cb7178
更多文章欢迎访问: http://www.apexyun.com
公众号:银河系1号
联系邮箱:public@space-explore.com
(未经同意,请勿转载)
转载于:https://juejin.im/post/5c7e730c6fb9a049e12af400
详解FLETA的Proof-of-Formulation共识算法相关推荐
- 极智AI | 量化实现分享五:详解格灵深瞳 EQ 量化算法实现
欢迎关注我的公众号 [极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 大家好,我是极智视界,本文剖析一下格灵深瞳 ...
- java源码系列:HashMap底层存储原理详解——4、技术本质-原理过程-算法-取模具体解决什么问题
目录 简介 取模具体解决什么问题? 通过数组特性,推导ascii码计算出来的下标值,创建数组非常占用空间 取模,可保证下标,在HashMap默认创建下标之内 简介 上一篇文章,我们讲到 哈希算法.哈希 ...
- NLP技术路线详解:这是从数学到算法的艺术
自然语言处理路线图详解,从数学基础.语言基础到模型和算法,这是你该了解的知识领域. 自然语言处理很多时候都是一门综合性的学问,它远远不止机器学习算法.相比图像或语音,文本的变化更加复杂,例如从预处理来 ...
- 机器学习--详解基于梯度下降的Logistic回归算法原理
先给出Logistic回归的sigmod函数数学表达式: 很简单的表达式,再看看它的性质,当时,,因此 当时,,因此 Logistic回归之所以称为Logistic是因为只有两个状态即0和1,这也是数 ...
- 二分算法详解:整数二分及浮点数二分算法(Binary Search)(含算法模板)
一.二分算法简介 当我们要从一个序列中查找一个元素的时候,最简单无脑的方法就是顺序查找法,但由于在大数据情况下爆炸的时间复杂度而舍弃. 最常见的方法是二分查找,也称折半查找(Binary Search ...
- 循环嵌套思路详解 | 一个“在盒子里过家家”的算法 -- 以冒泡排序与打印菱形为例
目录 前言 一.引例 -- 菱形打印 1. 题干要求 2. 如何阅读循环结构? 二."在盒子里过家家"的理解思路 1. 什么叫"在盒子里过家家"? 一个小例子 ...
- c语言选择排序详解及代码,C语言选择排序算法及实例代码
选择排序是排序算法的一种,这里以从小到大排序为例进行讲解. 基本思想及举例说明 选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置:然后,选出第二小的数,放在第二个位置:以此类推,直 ...
- Dijkstra算法详解(完美图解、趣学算法)
Dijkstra算法详解 Dijkstra算法设计 Dijkstra算法简介 Dijkstra算法的基本思想 Dijkstra贪心策略 完美图解 伪代码详解 完整代码 算法解析及优化拓展 使用优先队列 ...
- kmp算法详解php,php中字符串匹配KMP算法实现例子
KMP算法是一个比较高级的算法了,加了改进了,下面我们来在php中实现KMP算法,希望例子对各位同学会带来帮助哦. kmp算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J. ...
最新文章
- SAP 没有QM02权限的情况下如何为一个质量通知单单据上传附件?
- 关于autorelease pool一个较好的理解
- 【Darknet-Yolov3】Ubuntu 服务器上无权限出现 ./darknet: error while loading shared libraries: libcudart.so.8.0
- 辨别 Python 中 load 和 loads 的小技巧
- 元宵快乐:看SQL大师们用SQL绘制的团圆
- mysql5.7的存储过程_MySql5.7命令笔记(三)mysql存储过程命令
- JavaScript常用开发框架总结
- php容器原理,容器与依赖注入的原理
- window自带放大镜解决高分辨率下的字体缩小问题
- Consistent hashing
- centos mysql
- java的scjp考试_Sun认证Java程序员(SCJP)考试
- Unity Webm格式视频报错
- 数据库内外连接区别?
- python持久层框架_python网络爬虫——scrapy框架持久化存储
- Airbnb是如何创造更好的邮件体验的
- 《线性代数》随笔:积沙成塔
- 计算机网络节点分为三类,计算机网络技术1—2——3章
- arm指令集:精简指令集、复杂指令集
- [附源码]计算机毕业设计Python+uniapp基于Android 工厂考勤系统4h291(程序+源码+LW+远程部署)