共识机制

EcoBall采用POU(Proof of Unity)弹性共识机制,是一种分阶段实施、集成了多个共识算法的创新共识机制,第一阶段采用GPOW+POA混合共识机制,邀请声誉良好的权威人士和机构担任验证人,快速启动,进行市场宣传和生态建设;第二阶段采用GPOW+XPOS的混合共识机制,充分结合工作量证明和权益证明共识机制的优秀特点,兼顾公平和效率,努力平衡各参与方利益,提高参与度和透明度,提高系统效率,满足商用需求。

GPOW是EcoBall根据自身的架构设计,基于ProgPoW共识算法,进行的优化和改进,但是绝大部分的设计思想和算法都没有改变,还是遵循原来的设计。所以下面将重点介绍ProgPoW共识算法。

POA是根据业界成熟的使用经验,基于声誉和威望的共识算法,为区块链提供更快的交易速率和更快的启动时间。下面还将具体介绍POA共识算法。

XPOS是受到提名权益证明(NPOS)的启发,结合EcoBall的战略构想,进行了符合自身要求的裁剪、编排和重组。具体细节将在后面的介绍中逐一说明,同时也将对NPOS共识机制进行详细介绍。

还有一些其它的共识算法,EcoBall在不同的阶段或者不同的应用场景下面将进行具体的应用实现。

下面的文章将详细的介绍涉及的共识算法。部分来自网络公开的文献资料库。

POU弹性共识机制

随着越来越多人的参与,比特币、以太坊的访问拥堵问题越来越严重。当前(GMT+8 21/03/2021),比特币的平均交易费用达到$18.9,TPS只有3.44;以太坊ETH转账手续费达到$6.93,一笔Uniswap的交易手续费高达$43.87,而TPS仅15.3。为了提高TPS数量,大部分公链都选择某种PoS机制来改善区块链网络拥堵问题,如波卡NPoS、柚子DPoS、以太坊2.0Casper等。

这种PoS机制(DPoS、NPoS等)虽然在一定程度在解决了目前TPS过低的问题,但是去中心特性大大降低,容易受到少部分人的操纵和攻击,普通用户很难参与维护系统的安全。同时,这种方式也破坏了区块链的公平属性。

EcoBall设计了一种新型的协议POU(Proof of Unity),可以在保证去中心化和安全性的基础上,同时解决可扩展性问题,实现更高的吞吐量(5000±TPS),整个系统的去中心化、安全性和可扩展性得到保证,支持数百万的用户规模、极低的交易费用和快速的交易确认时间。

在POU协议的第一阶段中,采用了POW工作量证明和POA权威证明相结合的混合共识机制,PoW挖矿节点和PoA权威节点相互合作,共同承担区块链网络启动的创世节点,快速的启动区块链系统,开始运行和测试,验证区块链系统功能,加快市场推广和生态建设。

在POU协议的第二阶段中,采用了PoW工作量证明和PoS权益证明相结合的混合共识机制,PoW挖矿节点和PoS验证节点通过一种创新的方式共同(Unity)维护系统的安全(如出现攻击现象,攻击者只有同时控制大量算力和验证节点的情况下,才可能对系统进行攻击,也即是攻击者要掌握20%的币量或验证节点的情况下,同时要达到96%以上全网算力,才有一定的概率达到攻击目的)。EcoBall根据远景规划和功能需求,对传统的PoW算法和PoS算法分别进行了优化和调整,并命名为GPoW和XPoS。

在Proof of Unity后续的版本开发中,将不局限于PoW算法和PoS算法的单一实现方式,SHA256、Equihash、ProgPoW等哈希算法,以及DPoS、NPoS、PoA、EcoBFT、阈值签名(DKG+TBLS)、TPoS等 Staking方式,都可以根据需要进行组合和重构,选择性的使用到协议中。

(注:EcoBFT,在PBFT等BFT基础上开发出的新BFT共识算法。EcoBFT通过改变投票流程,更加符合区块链的特性,从而在安全性不低于PBFT的情况下提升了效率,且同步机制方面优于PBFT等现有的BFT类共识算法。此外,采用EcoBFT,区块确认速度优于DPoS以及PoW等共识算法;阈值签名(DKG+TBLS),DKG(Distributed key generation,分布式密钥生成),通过去中心的随机函数,可以从候选节点中随机选取参与EcoBFT共识的节点,同时这些随机函数可以验证合法性,大大提升节点作恶的成本,从而保障EcoBall整体系统的安全性;阈值权益证明TPoS(Threshold Proof of Stake,阈值权益证明),用于满足最低抵押量需要)

ProgPOW共识算法

ProgPoW是一种工作证明算法,是“Programmatic Proof-of-Work”的缩写,旨在缩小与专用asic可用的效率差距。它几乎利用了商用硬件(gpu)的所有部分,并预先针对以太坊网络中使用的最常见硬件进行了调优,并试图削弱ASIC矿机优势而进行了专门设计。简单的说,ProgPoW是一种在以太坊挖矿算法Ethash上经过GPU调优后的扩展,可以防御ASIC矿机。

自从第一个比特币挖掘ASIC发布以来,出现了许多新的工作量证明算法,其目的都是“抗ASIC”。所谓的“抗ASIC”的目的是抵制PoW挖矿算力的中心化,防止采用这类算法的币种被少数玩家操纵。

ProgPow的基本原理与PoW相同,都是工作量证明,算力大小决定收益多少。PoW的机制虽然公平,但矿机厂商、矿工为了竞争,不断寻找更高效的挖矿捷径,因此诞生出了GPU矿机、ASIC矿机。

以太坊目前采用Ethash算法,很长一段时间内并没有被ASIC矿机攻破,这些年GPU挖矿一直是主流。但最近爆出可以挖以太坊的ASIC矿机面世,它的算力明显优于GPU矿机,现有的挖矿平衡将被打破,并且算力很可能集中在少数持有大量ASIC矿机的矿工手上,使以太坊面临中心化问题。

在以太坊社区中,反对ASIC的声音此起彼伏,ProgPow共识算法就是在这种情况下孕育而生的。ProgPoW并不能带来更高的效率,相反限制了ASIC矿机的算力,使其与GPU矿机达到一个对等的水平,换句话说ProgPow就是ASIC矿机的性能抑制器。

Ecoball综合考察了当前市场GPU挖矿的技术方案和算法,选择了ProgPow作为底层的挖矿算法,力图更加去中心化,更多人参与,更加公平。

ProgPOW共识算法概览

ProgPoW的设计目标是让算法的需求与普通GPU上的需求相匹配:如果算法是在定制的ASIC上实现的,那么与普通GPU相比,提高效率的幅度并不大。

该算法的主要特点是:

  • 将keccak_f1600(64位)更改为keccak_f800(32位),以减少对总算力的影响
  • 增加混合状态
  • 在主循环中添加随机数学序列
  • 添加支持随机地址的小规模的、低延迟的缓存读取
  • 将DRAM(Dynamic Random Access Memory,动态随机存取存储器)从128字节增加到256字节

尽管ASIC也可以部署这个代码,但在效率方面几乎没有任何帮助。大多数显卡都需要支持上述特点。 唯一可优化的部分在于:

  • 移除图形管道(显示、几何引擎、表面纹理等)
  • 删除浮点数学
  • 一些ISA调整,比如与merge()函数完全匹配的指令

这将提高大约1.1-1.2倍的效率。这比Ethash的2倍或Cryptonight的50倍要少得多。

标准硬件POW基本原理

随着大型矿池的不断发展,形成了少数矿池控制大量算力的局面,因为只有加入这些矿池,小矿工才能获得更稳定的经济收益。尽管有些人认为大型的集中式的矿池破坏了“抗ASIC”的目的,但有一点很重要,即基于ASIC的币种实际上反而更加中心化。原因如下:

  1. 没有自然分布:除了挖矿之外,这类专业硬件没有其它经济用途,因此大多数人不会持有这类硬件。
  2. 没有后备组织:当价格波动性较大以及容易受到操控的时候,没有后备的硬件或者利益相关方可以入场。
  3. 准入门槛较高:入场较早的矿工是那些足够富有的人,他们可以在未知的新币种中投入资金和生态资源。因此,通过挖矿进行货币初始分配存在局限性,可能造成中心化的“经济偏差”。
  4. 委托中心化VS部署中心化:虽然矿池的中心化是用户委托造成的,但硬件的单一化则不是:只有这种硬件的特定买家才能参与挖矿,因此不可能在短时间内剥夺矿池的控制权。
  5. 即使是去中心化的挖矿,也很难实现去中心化控制:一旦大型定制ASIC制造商参与进来,设计后门硬件就变得毫无意义。在市场中保证透明和公平对ASIC制造商来说没有任何好处。

虽然“抗ASIC”的这一目标是非常有价值的,但整个“抗ASIC”的概念有点荒谬。cpu(中央处理器)和gpu(显卡)本身就是asic。理论上来说,任何可以在商用ASIC (CPU或GPU)上运行的算法都可以为其创建一个功能稍少一些的定制ASIC。有些算法甚至被刻意设计成“ASIC友好”——部署ASIC后的挖矿效率远远高于运行普通硬件的同类算法。这一现象对于专业的ASIC矿机制造商来说极具吸引力。

因此,抗ASIC指的是:专业的硬件和普及度及应用度更高的硬件之间的效率差距。定制和通用硬件之间的效率差越小就意味着抗性越强,算法也就越好。这种效率差是衡量PoW算法质量的合理标准。效率意味着绝对的性能、效能功耗比或者性价比——这几点之间都是高度相关的。如果一家公司生产且控制的ASIC效率极高,那么他们就能够控制51%的网络算力,就很可能发动攻击。

现有主要POW算法一览

SHA256

  • 部署ASIC后潜在效率增长约1000倍

SHA算法是一系列的简单的数学运算——加法、逻辑操作和旋转运算。在CPU或GPU上处理单点运算需要获取并解码一条指令,从寄存器文件中读取数据,执行指令,然后将结果写回寄存器文件。这个过程需要大量的时间和资源。

在ASIC中实现单点运算需要少量的晶体管和导线。这意味着每个单独的操作只需要消耗极少的功率、空间或时间。通过列出所需操作的序列就可以构建哈希核心(hashing core)。这个哈希核心可以在短时间内执行操作序列,与CPU和GPU相比,所需消耗的功率和空间也更少。比特币ASIC由许多相同的散列核心和一些最小的芯片外通信组成。

Scrypt and NeoScrypt

  • 部署ASIC后潜在效率增长约1000倍

从算法和位操作上来看,Scrypt和NeoScrypt与SHA类似。不幸的是,采用这类算法的币种,例如莱特币,他们的PoW挖矿算法只使用一种容量介于32kb和128kb之间的暂存器。这个暂存器的容量非常小,非常适合ASIC,因此这个算法的ASIC部署与SHA类似,都会造成效率的大幅提升。

X11 and X16R

  • 部署ASIC后潜在效率增长约1000倍

X11(以及类似的X系列)要求11个独一无二的以固定的顺序排列的散列核心。每个散列核心的效率都和单个SHA核心类似,因此从总体设计上来看,两者的效率增长依然类似。

X16R要求多个散列核心通过简单定序状态机进行互动。每个单独的核心都会有类似的效率增长,测序逻辑将花费最少的功率、空间以及时间。

Baikal BK-X就是一种包含多个散列核心以及一个可编程定序器的ASIC,其已经进行了升级以支持哈希排列顺序不同的新算法。

Equihash

  • 部署ASIC后潜在效率增长约100倍

150mb的状态(state)很大,但是通过ASIC是有可能实现的。通过ASIC可以快速完成位串的读出(binning)、排序和对比。

Cuckoo Cycle

  • 部署ASIC后潜在效率增长约100倍

一旦发生时间/内存权衡攻击(Time/Memory Tradeoff attacks),芯片所需状态量就不明确了。一个专业的图遍历(graph traversal)核心和SHA计算核心的效率增长类似。

CryptoNight

  • 部署ASIC后潜在效率增长约50倍

与Scrypt相比,CryptoNight做的计算要少得多,而且需要整整2mb的暂存器(没有已知的时间/内存Tradeoff攻击)。这个大容量的暂存器将主导ASIC部署,限制哈希核心的数量以及ASIC的绝对性能。ASIC将几乎完全由片上SRAM(Static Random Access Memory,静态随机存储器)组成。

Ethash

  • 部署ASIC后潜在效率增长约2倍

由于大容量DAG(数据库可用性组)的存在,Ethash需要外部存储。然而,它只需要这一点——需要对内存加载结果进行计算的情况很少。因此,ASIC可以从一定程度上消除GPU的复杂性和能耗,只需要形成一个连接到小型计算引擎的内存接口。

POS共识机制

POS是一种权益证明共识机制,全称为“Proof of Stake”,要求用户提供证明拥有一定数量的数字货币(即拥有对该数字货币的权益)。

POS最早在2012年8月,由点点币(PPCoin,简称PPC)首次实现。PPC还引入了币龄这个概念(每币每天1币龄),用户持有币的总币龄就是币的数量与拥有该币天数的乘积。币龄与挖矿难度成反比,币龄越大,挖矿难度越低,一旦挖出一个区块,币龄就被清空,重新累计,必须等待30天后可以参与竞争下一区块。

简单的理解,就是POW以算力竞争记账权利,POS以权益竞争记账权利;POW机制是干的越多得到越多,POS是持有越多,得到越多。也可将POS类比利息制度,持币生息,坐享其成。

POS共识机制存在比较明显的缺陷,包括如下几点:

  • 容易造成寡头:一些持币量排名靠前的富人节点,可能会利用其影响力操纵整个生态的发展,造成“马太效应”,使得富人更富,慢慢的逐渐变成中心化寡头。
  • 富人节点作恶:由于富人控制了大部分币,如果作恶,或者联合起来作恶,系统没有相应的机制去制衡。区块链要么被分叉,要么就变成了少数几个有钱人玩的游戏。
  • 系统效率不高:POS机制还是需要运行大量节点,交易确认和出块效率不高,本质上没有解决商业应用的痛点问题。
  • “无厉害攻击”:即“Nothing-at-Stake”攻击,由于POS共识机制对节点的资源没有太严格的要求,如果区块链发生分叉,用户在分叉链上拥有同样数量的通证,由于利益驱动,会默许分叉存在,并且可能积极参与分叉链的挖矿。
  • “长程攻击”:即“long-range”攻击,当节点不再充当验证者,收回了抵押金后,虽然不再具有验证以后区块的权利,但是仍然可以对之前的区块进行回滚操作,攻击者可能贿赂这些曾经的验证者,收集足够多的私钥,重新构建一条足够长的攻击链。

DPOS共识机制

DPOS被称为“股份授权证明”,全称为“Delegated Proof of Stake”,它的出现正是希望解决POS机制存在的一些问题。

DPOS与POS原理相同,主要区别在于DPOS机制下,节点选举若干代理人,由代理人验证和记账。其合规监管、性能、资源消耗和容错性与PoS相似。类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。

DPoS机制最早是由BitShares(比特股)首先提出的。比特股期望通过引入一个技术民主层来减少中心化的负面影响。比特股引入“见证人”的概念,见证人可以生成区块。每个持股人都可以投票选举见证人,得到总票数排名前N(通常为101)的候选者可以当选见证人。见证人的候选者名单每天更新一次。见证人随机排列,每个见证人按顺序有2秒时间生成区块,若见证人在给定时间内无法生成区块,区块生成权限交给下一个时间片对应的见证人,下一个见证人产出的区块将包含前一位见证人没有成功出块而遗漏的所有交易,因此区块大小增加,确认时间也将相应延长。没能成功出块的见证人将被公之于众,如果经常不能成功出块,社区持股人可以投票剥夺该见证人的记账权利,罚没相应的收入。

从某种角度来看,DPoS 与议会制度或人民代表大会制度有相似之处。如果代表不能履行他们的职责,例如未能按时出块,就会被网络选出的新见证节点所取代。

相比于POS,DPOS机制大幅缩小参与验证和记账节点的数量,可以达到秒级的共识确认。从性能和能耗的角度来说完全可以满足商用,但也不可避免地带来了过于中心化的问题。如果几个见证人或者超级节点串通起来,将进一步形成巨头垄断,对区块链未来的长远发展产生不可估量的影响。

NPOS共识机制

NPOS是一种称为 “提名权益证明”的共识机制,英文全称是Nominated Proof of Stake,它是由波卡2019年4月提出的,是POS类共识机制的一个重要发展方向。众所周知,Staking是PoS共识里特有的属性,持币者通过Staking主动参与公链的治理,行使持币权益,获取回报。简单来说,我们可以将Staking类比成购买定期理财产品,通过锁定流动性来获得稳定的收益(利息),同时锁定部分也可享受升值预期回报。

XPOS共识机制

上面介绍了POS、DPOS、NPOS共识机制,它们依次进行了继承和优化改造。接下来我们一起看看XPOS共识机制的详细细节。XPOS在NPOS基础上进行了相应的修改,以便符合EcoBall的设计思想。在实际的应用案例中,POS类共识机制存在一些固有的问题,后来也出现了很多类似的变种,试图解决这些问题。这也是XPOS共识机制出现的原因。XPOS共识机制里面主要有两种角色,提名人和验证人。下面先分别简单介绍一下这两种角色。

验证人

验证人负责验证交易及打包新区块,获取区块生成的奖励。验证人必须抵押足够多的资金作为押金,并且运行高可用、高带宽、高性能的区块链节点程序,随时接收来自链上的交易,然后进行验证和出块。如果验证人不能很好的履行职责,比如不能成功出块,或者双向签名(double-signing),或者产生非法区块等可证明的恶意行为,会导致他们丧失部分或者全部押金。具体的数量根据验证人所犯错误的严重程度和次数来确定。

提名人

提名人是一群拥有区块链系统原生权益通证ECO的群体,他们提名自己信任的验证人,并且向该验证人质押一定数量的ECO作为提名押金,委托验证人代表他们维护区块链网络,并且根据他们质押ECO占该验证人总质押的比例,享受验证人获取的奖励和可能受到的罚款。系统鼓励ECO持有人积极作为提名人参与提名,参与区块链生态建设。目前提名人最多可以提名16个他们信任的验证候选人。

验证人承担了大部分繁重的工作:它们负责生成新的候选块,验证交易并达成共识。提名人一旦提名并质押ECO,就不需要做任何事情。提名人的体验类似于“设置它,然后忘记它”,而验证人将通过执行关键操作来为网络提供积极的服务。由于这个原因,验证人对于权益机制的支出有一定的特权,并且可以在权益被分配给提名者之前优先声明自己的分配权。

POA共识机制

POA权威证明共识机制,全称为Proof-of-Authority,基于声誉和威望的共识算法,为区块链提供更快的交易速率。POA是由以太坊联合创始人、以太坊前CTO和技术专家Gavin Wood于2017年提出的。矿工凭借的是个人的声誉和威望来成为区块的验证者,而不是凭借抵押的加密货币。POA区块链的验证者是由可以信任的验证节点组成的,数量具有一定的限度。因此,区块链系统具有较好的可扩展性。验证者运行节点软件将交易打包,生成区块,这个过程是完全自动化的,只需要验证节点一直处于良好的运行状态。验证者是整个共识机制的关键。验证者不需要昂贵的显卡,也不需要足够的资产,但他必须具有已知的,并且已获得验证的身份。验证者通过这个身份来获得担保网络的权利,从而换取区块奖励。若是验证者在整个过程中有恶意行为,或与其他验证者勾结,那通过链上管理可以移除和替换恶意行为者。

混合共识机制

EcoBall区块链系统采用了工作量证明(GPOW)+权益证明(XPOS)或者权威证明(POA)相结合的混合共识机制,灵活的将两种共识机制结合起来,充分发挥他们各自的优势,在保证更加公平、更加开放、更加去中心的基础上,实现更加高效、更加快速的区块链底层系统,既可以满足广大矿工群体的挖矿需求,也可以满足商业用户的应用落地需求。

EcoBall区块链系统中,GPOW矿工负责持续不断的生产区块头,并广播到所有的验证人节点;同时验证人节点也在持续不断的收集网络上的交易,并进行验证,然后将通过验证的交易打包成区块体,与收到的区块头组合在一起,形成一个完整的区块。

每产生一个区块,系统奖励一定数量的ECO,其中30%分配被GPOW矿工,70%分配给XPOS或者POA矿工。区块奖励每4年减半,直到挖出最后一个块。实际上,我们知道,最后一个块永远无法挖出,只能无限接近。而到那时候,系统已经稳定运行了很多年,链上产生了很多有价值的资产和商业应用场景,活跃在区块链上进行各种各样的交易。矿工和验证人在后期将更多的依赖这些交易手续费维持节点的有效运转和网络安全。

产生区块头

GPOW矿工通过激烈的算力竞争,大约每10秒产生一个区块头。区块头包含如下字段:父区块hash值,叔区块hash值,Coinbase账户地址,状态根,交易hash,接收者hash,日志,难度值,区块编号,最高支付gas,花费的gas,时间戳,额外数据,混合hash,nonce值(8个byte)。

此处区块编号、时间戳、交易hash、花费的gas等未知内容的字段暂时为空,留待后面的验证人节点填充。

交易验证

验证人节点持续不断的接收区块链网络上的交易,进行交易的有效性、合法性验证,验证通过则向其它验证人广播交易,其它验证人也将对交易进行同样的验证。通过三分之二以上验证人验证的交易被发送给出块验证人,等待打包和出块。

验证人选举

出块验证人由验证人池中的所有验证人随机选出。验证人出块成功后,将重新开始一轮选举;如果验证人不能成功出块,则该验证人的权重下调,并且会受到罚款。

奖励和处罚

验证人一旦成功出块,将获得一笔ECO奖励。验证人扣除相关费用后,将这笔奖励分发给XPOW矿工和他的所有提名人,所有提名人将按照在该验证人处质押ECO的所占比例来分配这些奖励。如果验证人没有成功出块,或者做出有损系统的行为,将收到罚款,其提名人也将按比例分担这些罚款。

results matching ""

    No results matching ""