SPoS共识机制简介:SunnyKing从去中心化到多中心思维改变
Vsystems的白皮书有两份,一份是vsystems的系统白皮,另一份是SPoS共识机制白皮书,可见在SunnyKing的团队里,SPoS共识机制的定位是相当重的。
第1章 什么是共识机制
区块链系统是一个分布式计算系统,即由许多节点(电脑)共同维护一个账本。区块链维护账本包括谁来更新新账本页,和在所有节点中同步账本。
共识机制就是在区块链系统内,让所有节点达到一个——由哪个节点来更新新账本页,并且其他节点会将自己的账本同步到该最新的账本页——的共同的决策方法论。
更专业的术语是,共识机制是决定哪个节点能出块的算法。
第2章 去中心化共识机制
比特币的共识机制是工作量证明PoW,点点币的共识机制是权益证明PoS。PoW和PoS都是去中心化的共识机制。
PoW和PoS都没有规定一共有多少节点可以出块,理论上出块节点可以是无限个。
PoW机制是系统发一个“目标值”,这是一个数字,比如前面19个零的数字,只要你的节点能够提供一个通过特定算法计算出来的前面有20个零的数字,你就可以获得出块的权力。
PoW机制下是要消耗能源来完成计算,我认为这是合理的。不过整个加密数字货币社区有很大的声音认为PoW不对,浪费能源。PoS的诞生就是基于反对PoW消耗能源。
PoS是所有节点出一个叫“币龄”的值,“币龄=币数x持币不动的时间”,比大小,谁的币龄大,谁就获得出块的权力。
PoW和PoS这种模式是可以实现去中心化,任何人,都可以买矿机或买币,加入出块的博弈。
PoW的出块原理决定了竞争出块是需要消耗真实的能源的,在同一高度上,哪怕你是没有竞争到出块权,你也是真实消耗了计算能力。在每一个高度上诞生出新块后,之前所有的计算全都报废,大家又同时站在同一起跑线重新计算。
PoS出块是要真实消耗币龄的,一个PoS节点一旦获得了出块权,那它的币龄就归零了,要重新积累参与博弈。但只要你不出块,你的币龄就不会因为别人出块了而消耗。这和PoW是不一样的,PoW是别人出块了,你的计算就得清零。
目前纯PoS共识机制好像流行,点点币已经被边缘化了。ADA币看起来是最成熟的PoS。ADA币的PoS模块被Fork的最多。
PoW和PoS的出块还有一个大特点,就是出块在时间分布上是随机的,只能在统计意义上获得一个平均的出块时间。比如比特币的出块时间平均是10分钟,但具体的两个块时间间隔可能是几秒钟,也可能是1个小时以上。
第3章 多中心共识机制——SPoS
中本聪通过比特币发明了PoW机制。SunnyKing通过发明点点币发明了PoS机制。PoW工作的非常好,但PoS并没有大量流行。SunnyKing曾经发表过一篇文章描述他的认知升级,他认为真实的世界是多中心的。整个人类就是一个多中心的世界,一个国家就是一个中心。多中心形成庞大的系统。
SunnyKing思考去中心化在性能上遇到了瓶颈,大量的真实世界并不是去中心化的,自然的演化形成多中心的系统。而比特币挖矿矿池的诞生,大矿场的诞生,也证明了多中心是一个复杂系统演化的方向。
所以,SunnyKing在他的新区块链系统中采用了多中心的架构——SPoS。
在SPoS机制下,出块节点的数量是有限的,目前vsys一共15个出块节点,叫超级节点。超级节点分成两类,一类是“候任节点”,一类是“在任节点”。在任节点是可以出块的节点。要成为出块节点,需要先完成“挑战”。
“挑战”的过程就是将“在任节点”选下去,自己成为“在任节点”。“挑战”是使用“加权平均币龄”这个参数来完成。
vsys币同样是有币龄的属性,这和比特币、点点币是完全一样的。“币龄=余额x持币天数”,以“币天”为单位。只要持币不动就可以累计币龄,币只要转移其币龄就会被销毁。
但是币龄在比特币这种UTXO模型下是非常方便计算的,因为UTXO和钱包里的余额是不同的概念,钱包余额是UTXO的总和。币龄只需要计算UTXO剩余持币天数,钱包里的余额的总币龄就是所有UTXO币龄的累加。但在账户制下,比如以太坊,计算币龄就非常复杂了,因为一个账户有多笔金额转入时,余额会变成一个数值,无法像UTXO那样非常方便地区分输入。
在vsys币里,为了实现币龄更方便地计算,使用了“已确认余额”的属性来计算币龄,具体的计算公式很复杂,我们不用管,你可以简化成是将区块确认数和账户余额相乘。在SPoS的白皮书里,还描述了更多的计算细节,以在工程上实现“节点”的“挑战”与“被挑战”。包括一些攻击解决办法。数学上的证明,我们就不用管了,我们只需要理会里面的精神就好了。
中国观察