bitcoin-NG的分析

bitcoin-NG


bitcoin-NG的设计目标

扩容、提高比特币的吞吐量。比特币系统每10min产生一个区块, 由于区块大小的限制,比特币每秒只能记录3~4个交易,其吞吐量远远不能满足当前大部分系统的需求。

现有的扩容方案
现有的扩容手段包括增大区块的大小和减少区块间间隔,而这两种方案对区块的传播时延和区块的分叉问题的性能都有相应影响。

bitcoin的结构-关键区块和微区块

关键区块用来选取leader,NG为了提高区块链的容量和吞吐量,同时减小交易被确认的时间,关键区块不打包任何交易的信息,而是将交易信息全部放在微区块中。
微区块记录交易信息,当一个节点挖到key block后就成为leader,它就可以生成多个微块来记录交易内容,由于微块的生成不需要消耗任何算力,微块生成的速度可以很快,微块间隔可以为10s或者更少,从而通过大量的的微块来提升区块链的容量,同时,由于微块之间的间隔较短,还可以减少部分交易的被确认时间。


关键区块的挖掘

key block没有区块体,但其区块头包含了上一个区块的引用,GTM时间、支付奖励的交易数据库、目标值以及nonce。同时关键区块要公布自己的公钥用于后续微块的认证。
key block的previous block可以是key block也可以是微块,即节点在挖关键块时,可以任意选取当前的关键块或该关键块的任意一个微块来挖掘下一个关键块,
关键区块分叉时,全网选择由最多算力挖掘出的关键块作为新关键块。

微区块的生成

微区块由生成key block 的节点生成,其生成速度要比关键块快,但有最大值限制,以避免恶意leader通过大量生成微区块对区块链本身的冲击。
微区块包含区块体和区块头,区块体中打包微区块所记录的交易,区块头包含上一个区块的引用,GTM时间,交易记录的密码学哈希结果,密码学签名。其密码学签名使用的私钥是与其对应的key block中公布的公钥相配对。

微区块分叉

微区块与关键区块分叉:当某一节点根据某一微区块挖掘关键块成功后,他会将自己挖到的关键块公布在全网,当其他节点接收到这一关键块时,会将该微块后的所有微块作废(修剪区块),并接收由新leader产生的微块。
微区块分叉预防:恶意的leader可能会将不同的状态发送给不同的其他节点,从而达成双花攻击(这里不明确到底是如何产生双花攻击,如果NG沿用bitcoin的UTXO机制,应该也可以预防双花攻击),NG使用了专门的交易记录来作废视图进行双花攻击的leader的收益,称之为污染交易,这条交易记录中包含被修剪的微块的第一个区块的块头作为攻击证据,这条交易记录将把视图攻击的leader的收益作废。


bitcoin-NG的报酬和激励

报酬

bitcoin-NG会给首领的挖矿工作一部分报酬,首先类似比特币机制,挖到关键块的leader会得到一定数量的报酬。另外,每一笔交易都含有交易费,这个交易费将用来支付leader的奖励,其中当前leader将获得全部交易费的4成,next leader将获得全部交易费的6成。

激励机制

延伸最重链 NG原文中并没有提及区块重量的定义,这里认为一条链的重量指的是这条链上的关键块的数目。就如同比特币链一样,节点会自动选择长度最长的链来延长,这里称之为重量大概是为了和后面算上微块的区块链长度区分开来。
微块不能拥有重量,否则恶意节点会私自保留微块,并对微块挖下一个key block导致自己挖出的主链最重。
交易包含机制 leader将交易放置在自己的微块中可以获得4成的交易费作为报酬,leader可以秘密的扣留微块并对微块进行挖矿,如果成功的从微块中挖到关键块,则leader可以得到全部的交易费报酬。但机制应该满足,这样的收益小于他将微块发布之后所获得的收益。即:
bitcoin-NG的分析

此处的α指恶意节点的算力占全网的总和。rleader为0.4.
延伸最长链 这里的最长链的长度就将微块数量也计算入内。假设矿工节点不管新的微块的发布而是从较靠前的微块来挖下一个节点并将所有交易都放入自己即将生成的微块中以获取收益,则该机制应使得这种挖矿方式的收益小于正常挖微区块的收益。即:
bitcoin-NG的分析
同样取α为1/4.rleader=0.4,满足上式。
但是当α大于1/3时,上式就无法满足,也就说明了NG无法抵御超过1/4的算力攻击。


其他安全问题

钱包安全 原文指出,污染交易的存在使得leader的私钥有被逆向获取的可能,但没有解释和证明。
审查阻力 原文指出,恶意leader可能会在其微块中故意不打包交易来发动DOS攻击,而诚实leader会在其epoch内摧毁该攻击产生的影响,并不发任何微块(原文并未解释为何这样,意义不明。)
算力改变与难度调整 随着币种的汇率等经济因素的改变,某一区块链的算力也会产生灵活的变化,算力下降对NG带来的影响也十分巨大。NG的难度调整只对key-block产生影响,而微块的产生速度与难度没有直接关系,当当前leader是恶意leader时,他将以恒定速度产生不真实的微块,这个恶意leader的epoch将与当前的算力成正比。
分叉 NG的微块分叉也就是修剪微块极为普遍,但是当新的leader出现并广播到其他节点,分叉问题就得到解决,所以其性能要优于bitcoin。


指标设计

共识延迟 给定时间t和一个比例k<1,那么共识延迟就是时间t到全节点的k部分达到相同的状态所需要的最短时间。

公平性能 (1)非最大算力矿工的产生的区块链状态转换(区块链状态转换的具体含义不明,是否为增加新的关键块?)占总算力产生的转换的比例。
(2)非最大算力矿工所占有的算力占总算力的比例
公平性能就是指这两个比例的比值。

挖矿算力利用率 即区块链中用于维护主链而挖矿所使用到的算力占有的比例

修剪所需要的客观时间 即一个节点由主链状态发生变化,到他发现变化并修剪的时间。
bitcoin-NG的分析

修剪所需要的时间 当某一节点收到主链以外的分支时开始到他确认该分支可以被抛弃所需要的时间。

获胜时间 当一节点A认定一条主链到另一节点B认为该主链应是被修剪的分支的时间。


仿真实现

1000节点仿真,仿真中没有实现费用分配和微区块的签名认证。

仿真中采用调度程序来模拟POW机制,首先证明矿工挖矿的时间接近指数分布,在调度中不同的矿工使用指数分布的时间间隔来触发区块产生。客户端接受任何难度的确认,区块的声称完全由调度程序决定。

全网算力建模,检查比特币挖矿的算力分布,每周都计算每一个实体的挖矿算力,并对其进行排名,根据调查结果使用指数为-0.27的指数分布来预计并建立数学模型。
bitcoin-NG的分析

无交易传输 为了减少由交易生成和传输机制所引起的影响,将交易的处理量减少,来测试共识机制的性能。

仿真评估NG在改变区块产生频率和区块大小时的性能影响并与比特币区块链进行对比。在通过调整参数来优化共识延迟和带宽时,NG在对安全指标的影响上表现出了优于比特币的性能。

仿真首先对改善共识延迟进行测试,在比特币中,降低工作量证明难度以提高区块生成频率,对于NG,保持key-block的频率而调整为快的生成频率和微块大小,使之接近比特币的10分钟1mb的速度。

提高出块的频率会降低比特币的共识延迟,修建时间也有了显著改善,但与NG相比,提高出块频率带来的频繁分叉导致了更高的共识延迟和修建时间。对NG来说,尽管关键块分叉很少出现,但如果关键块间隔很长的话就会导致修剪时间很长。
随着频率的增加,比特币的挖矿算力利用率有显著的下降,趋近1/4.在极端情况下,区块的传播速度甚至比不上区块的生成速度,导致公平性下降,同时增加了获胜时间。
NG中,增加微区块的生成频率可以减少共识延迟和修剪时间,同时不影响关键块的性能和指标。

调整区块大小 在比特币中增大区块的容量能够提升交易得频率,但同时,大的区块需要更多的时间来在全网传播从而导致分叉的增多,共识延迟、获省时间和修建时间也随之增加。但过多的分叉会导致挖矿算力利用率的下降从而导致安全性的下降。