Bitcoin-NG

关于Bitcoin-NG的原理,这里结合aeternity测试网的区块和Bitcoin-NG白皮书做一个说明

img

和比特币不同的是POW共识是用来产生一个Leader,如何标志一个Leader产生呢?如上图最新的块314。这些有序号的块被称为Key Block。Key Block的挖掘旷工在接下来的一段时期(epoch)拥有记账权,也就是产生Micro Block。也就是如上图所示,314的Micro Blocks显示为0,但是当我调用智能合约的某个方法的时候,314这个块会产生变化,如下图所示:

image

也就是在这个记账时期还没过去的一段时间内,314的旷工拥有持续一段时间的记账。

每个块都有指向上一个块的hash值,这个值可能是Key Block的hash也可能是Key Block最后一个Micro Block的hash

image

当A拥有记账权后的一段时间内(这个时间大概是由难度值控制的时间,比如十分钟,可能多或者少)A矿机一直在打包所有的交易,也就是产生Micro Block,这个是没有难度值的块,也就是没有工作量。跟Key Block不一样。当新的KeyBlock产生时候,也就是被全网大部分节点承认后,B(产生新的Key Block的矿机)就可以获取到A的所有交易费用的60%。

为什么A做的工作要B闯进来46分成?

这里假设A矿机的算力为α,前一个Key Block的收益比例为r(reader)后一个旷工收益比例为1-r

假设A私自挖矿(保留最后一个Micro Block,在此基础上挖矿,如果挖到了就获得了全部交易费,如果在没挖到之前被),那么A可以获得完全的收益,但是问题是发布出去的新的Key Block要被承认的概率是多少

某种程度上,算力比例就是代表收益比例,如果你的算力α=100%那么你的平均收益就是百分百。而如果A私自挖矿,A获得的收益为α,但是A在计算的同时,全网的算力也没有闲着,它们算出的概率为1-α

为了尽力避免旷工有偷偷保留微块,取得优势获得交易全部费用的想法,必须考虑到让旷工公正的收益大于私下挖矿的收益

image

左边公式代表旷工私下保留微块获得的收益公式,右边代表及时发布微块的收益,所以中间必须是小于号。

当旷工决定保留最后微块获得优势后去挖下一个Key Block,就会有两种情况发生,第一种他挖到了,并且公布新的Key Block被全网接受了。那么挖到的收益就可以获得100%的收益,但是被全网接受的概率取决于他的算力在全网的占比

假如他的算力是100% 那么全网就是他自己,假如他的算力占比30%那么被接受的概率就是30%

所以左边等式第一项可以这么理解

但是他也可能失败,他失败的概率也就是全网其他旷工成功的概率,全网其他旷工成功的收益是(1-α)*(1-r)

而当前旷工失败之后想要瓜分其他全网旷工的收益也只能是(1-α)(1-r)α

如果当前旷工及时公布微块,那么他获得的收益就是r

假设如果当前旷工算力很低,而他想隐藏微块,去计算下一个Key Block,那么有很大概率他算出的Key Block会被丢弃,所以这边一定会有一个分界线当它的算力达到一定值,可以大概率控制全网,比特币是50%以上

其实还有很多疑惑,未完待续。。。