背景和历史
在区块链行业中,项目的价值很大程度上取决于其区块链采用的共识机制。自比特币开始,引入了一种革命性的工具,用于保护数据和交易,被称为工作量证明(PoW)共识机制。在PoW中,首先发现有效散列的矿工可以向区块链添加一个新的事务块,这个采矿过程是极度劳动密集型的。在基于参与者对区块链原生Token的所有权的股权证明(PoS)共识机制中,押注者拥有的Token越多,他就越有可能向区块链添加新的交易块,这种开采过程能耗较低。在一种授权的股权证明(DPoS)共识机制(PoS的变体)中,Token持有者可以使用他们的余额选择一个节点列表,该列表可能允许向区块链添加新的交易块,Token持有者也可以投票改变网络参数。DPoS让所有的Token 持有者在网络中拥有更大的影响力和所有权。工作证明(PoW)可以比喻为真正的民主,利害关系证明(PoS)可以比喻为寡头政治,利害关系证明(DPoS)可以比喻为民主共和国。还有其他一些有趣的共识机制仍在试验中,如实用拜占庭容错(PBFT)、有向无环图(DAG)和Ethereum的新型混合PoW/PoS系统Casper Friendly Finality Gadget (FFG)。
亦来云混合共识机制
虽然各种各样的区块链项目正在实施和试验各种共识机制,但每种机制都有其优缺点。没有”一种共识适用于所有项目”这回事,因为不同的项目和行业面临着许多不同的问题。亦来云为其区块链采用了AuxPoW+DPoS的混合共识机制,其中每个块由矿工打包,然后由DPoS超级节点签名,从而创建一个阻止区块链分叉的块的最终结果。在亦来云混合共识机制之下,隐藏着一个高度复杂的解决方案,它提供了最大的安全性和最优的网络分散。
打包块的矿工实际上是比特币矿工,他们同时开采BTC和ELA,这意味着亦来云能够借用比特币网络强大的哈希能力来保护自己的网络。 值得注意的是,亦来云上的超级节点与其他区块链项目的超级节点不同。 在大多数采用DPoS共识的区块链平台上,超级节点包封块并对其进行签名。 然而,在亦来云上,超级节点的工作是签署和验证块。 因此,DPoS超级节点可以共同选择拒绝矿工打包的恶意块,并为解决的块提供最终验证标记 – 称为”终结性”。
在亦来云,每年大约有4%的增发增加到总供应。这些中35%分发给PoW矿工,另外35%分发给DPoS超级节点,剩下的30%分配给CRC,用于CRC扶持各种生态系统项目。亦来云网络每2分钟出一次块,并在每一轮后分发奖励。在大约72分钟的时间里,包含36个块。那么,DPoS的奖励将以大约72分钟的间隔分配。
亦来云和区块的终结性
除了计算密集之外,PoW共识的主要问题是当矿工社区被分割时,出现分叉的可能性很高。例如,比特币分为比特币和比特币现金。最近,比特币现金进一步分叉为比特币ABC和比特币SV。每当社区出现分歧并且无法就在区块链上实现或消除哪些特性和升级达成共识时,就会发生这种情况。当双方都有足够的支持时,矿工就会分裂,导致区块链分裂成多个区块链。为了防止这种灾难性事件的发生,亦来云采用了一种混合的共识机制,在这种机制下,矿工社区必须始终遵循由民主投票决定的大多数社区成员的意见。不遵守这些规则的矿工将被视为无效,在这种情况下,DPoS超级节点将不会签署这些特定的块。通过将打包块和签名块的功能分成两个不同的过程,亦来云创建了一个巧妙的方法来确保每个块的最终结果。这样亦来云可以防止任何类型的分叉发生在其区块链中。当然,没有共识机制是完全安全的,但是亦来云使用的混合共识机制增加了额外的安全层,进一步加强了网络安全。
此外,在36个当选节点中,有12个保留节点,为CRC成员所有,并自动成为当选节点,因此,36个当选节点中有24个是由社区投票选出。由于亦来云区块链的DPoS共识需要⅔个当选节点的签名,因此必须由至少25个超级节点对一个块进行签名,这为亦来云采用的混合共识机制创造了另一层安全保障。由于集中超过50%的比特币算力的成本已经高得惊人,而且也非常困难,所以集中超过50%的亦来云算力也同样困难。此外,将DPoS层添加进来,意味着即使PoW节点在某种程度上受到了损害,也将由DPoS超节点最终决定在哪些块上签名和忽略哪些块。因此,DPoS超级节点可以集体忽略发送到区块链P2P网络的恶意块。此外,如果我们假设最坏的情况——所有联合挖矿的矿工和24个超级节点都被破坏了——作恶者能做的事情就是停止块的生成和标识。在这种情况下,恶意实体将受到限制,因为它无法获取必要的25个签名来验证错误的块。12个CRC超级节点由12个CRC成员持有的私钥控制,它们将始终诚实行事,永远不会接受任何恶意块,因为这样做最符合他们的利益。毕竟,每个理事会成员必须质押5,000 ELA,作为参与CRC选举的前提,如果他或她的行为不符合社区的最佳利益,那么他或她可以在任何时候被社区投票否决。
最糟糕的情况是块不会被添加到区块链中,因为块无法获得25个签名并且区块链会停止。 如果发生这样的事件并持续一个小时而没有任何区块被添加到区块链中,那么12名非工作仲裁员将被投票,并被下一批参与DPoS共识的12个选举的超级节点取代,从而解决问题并确保始终有36个当值超级节点。
亦来云区块链的DPoS共识机制与典型的DPoS共识机制不同,社区在共识过程中发挥主要作用。联合挖矿是利用比特币矿工将交易打包成一个块的过程。然后,超级节点对每个块进行签名。社区可以向CRC提交不同的建议,并可能包括对现有的新侧链共识机制进行修改,或建议创建一个专门用于特定应用的新侧链。建议还可能包括要在主链代码上实现的架构更改。如果该提议被CRC委员会接受,超级节点将升级以适应上述变化。之后,如果任何PoW矿工未能相应地升级其客户端,那么由矿工打包的块将不会被超级节点接受。通过这种方式,大部分权力被给予了CRC社区,而不是矿工自己,这从一开始就阻止了分叉的发生。
如何将每个块添加到区块链上
比特币矿工使用矿机来开采比特币,他们还通过合并采矿技术来开采ELA。每个块由PoW协议保护,然后将每个块广播到P2P网络。
仲裁员接收每个PoW开采的块。如果仲裁员值班(36名仲裁员中只有一名值班),它将向其余35个仲裁员发送每个块的建议书,其中每个仲裁员使用其私有密钥在块上签名。仲裁员网络是另一个连接所有36个仲裁员的P2P网络。每个仲裁程序检查事务,然后在每个块上签名,每个仲裁员签名的每个块也将广播给仲裁员网络中的所有仲裁员,以便对其进行验证和确认。
每个仲裁员还将每个签名块广播到PoW矿工P2P网络中的所有节点。当PoW矿工节点发现该块具有来自仲裁员的⅔签名时,它将已签名的块放入区块链中,并开始将下一组事务打包到一个新块中。每个仲裁员将其签名块广播到PoW P2P网络的原因是,因为它更有效并且防止了如果只有值班仲裁员广播该块可能发生的一些问题。
一些问题以及亦来云如何解决这些问题
我们知道,每个仲裁员将其签名块广播到PoW P2P网络。我们来看一个例子,它不仅高效,而且更有弹性。让我们假设仲裁员在相同高度和相同的视图号上签署两个不同的块,并且这两个块都广播到区块链P2P网络。这种情况会产生一个分支,因为仲裁者不应该在相同的高度和相同的视图号下签署两个不同的块。这样做可能带有恶意,希望产生区块链及其所有侧链的分叉。如果这样做,网络中的每个节点都可以检测到证据,作恶的仲裁员将受到5000 ELA的惩罚,因为这是一个非常严重的问题。此外,创建的临时分支将由新的仲裁程序进行纠正。
首先,这个作恶的仲裁员将立即失去对其作为超级节点之一所质押的5,000 ELA的访问权。最初为超级节点质押的5,000 ELA将被转移到一个特殊地址。此特殊地址的私钥由仲裁员的所有者持有,但是需要遵循一些规则才能从该特殊地址检索此5,000 ELA。即使仲裁员拥有与特殊地址对应的私钥,如果被认为作恶,也无法检索到5000 ELA,这可以比喻为烧毁5000ELA,因为没有人能够检索这些资金,所以它们不能再使用。如果仲裁员没有作恶,并试图退出超节点选举,将返回5,000 ELA。每个普通的PoW矿工都能够通过查看区块链上的每个块来验证哪个仲裁员是恶意的。反过来,这种机制为超级节点诚实行事提供了更多激励。
也可能有一种情况,当值仲裁员试图有选择地支持特定矿工生产的区块用于恶意目的时,它甚至可能尝试打包自己的块。如何才能防止这种行为呢?假设有两个仲裁员A1、A2和2个区块, B1、B2。假设值班仲裁员接收B1的时间是t1,接收B2的时间是t2。我们也假设B1稍微长一点,所以t1 > t2。最后,假设这两次之间的间隔大于5秒。如果值班仲裁员(A1)首先尝试发送B1的提案(即使它确实应该首先发送B2,因为它首先进入),其他仲裁员将知道这是非法的,因此他们将拒绝B1提案,A1和网络将试图从A1更改为A2。现在,A2被转换为值班仲裁员,因此它按顺序发送B2和B1的块建议书。如下所示,视图再次发生变化,并选择新的值班仲裁员(A3),共识再次恢复正常。
我们简要提到过,任何时候都有12个CRC超级节点,它们总是诚实地工作。我们假设其他24个中的任何一个或全部都可能是恶意的。例如,当ELA从主链转移到侧链时,它在主链地址上锁定,而在侧链地址上解锁。由于侧链不一定与主链具有相同的共识,因此防止用户通过侧链撤回ELA非常重要。正是由于这个原因,我们绝对需要侧链的共识尽可能安全。如果我们知道12 CRC仲裁员总是诚实地行事,即使所有24个选定的超级节点都是恶意的并且试图互相串通,它也不满足需求启动事务的要求(回想一下,超过⅔签名是必需的)。由于这12个超节点中的每一个的私钥由12个不同的理事会成员控制,因此很难与所有24个超节点以及CRC超级节点串通。
最后还可能会出现一个问题。每轮持续72分钟,因为这是选出一个仲裁员作为当选超级节点的时间。72分钟后将重新进行投票并且如果新的超级节点获得足够的投票以替换当选超级节点,则新的超级节点就可以加入活动池。假设一个仲裁员不活跃,因此连续2天(大约40轮、1440个区块或48小时)不提交块建议。在这种情况下,该仲裁员将在7天内无法参与超级节点共识,这也意味着它将不会获得任何奖励——与它获得多少选票无关。因此,不活跃的仲裁员将被禁止在7天内从事任何工作。可以识别此仲裁程序,因为每个块都有一个映射到它的块建议,其中包含关于应该由谁创建该特定建议的信息。在特定仲裁员未发送块建议的情况下,此任务将被传递给下一个在线仲裁员,然后该仲裁员发送该块的建议,依此类推。
发送提案的超时惩罚阈值为5秒。每个提案都包含一个块散列和签名。如果原仲裁员连续40轮未提交建议书,第一个惩罚是7天被禁用,并可能从其所质押的5,000 ELA中扣除10%的罚金。如果在7天之后,同一个仲裁员再次连续40轮未提交建议书,则适用相同的处罚,即再被惩罚7天禁用,并按其剩余4500ELA的10%处罚。请注意,具体数字可能会在未来发生变化。如果仲裁员继续缺席,且其剩余总ELA低于4000,则该仲裁员必须再缴纳1000 ELA,才能参与超级节点共识,再次达到5000 ELA的阈值。请注意,被禁止的不活跃的仲裁员需要等待至少720个区块(大约24小时)才能解除禁令,然后它应该向区块链发送一个特殊事务,通知网络它已处于活动状态并已准备就绪再次参加共识。当超级节点决定再次活跃时,该超级节点在禁令期间积累的票数仍然存在。
目前尚未决定如何处理因仲裁员作恶而无法访问的ELA。 当前有两种方法可以选择,但尚未决定,未来可能会有变化:
1. 焚烧因惩罚而无法进入的ELA;
2. 将因惩罚而无法访问的ELA发送到CRC。
亦来云侧链
如果您想更详细地了解侧链,请参阅我们的《聚焦系列2:亦来云侧链和可扩展性解决方案》。
DID侧链、Token侧链和NEO侧链都采用PoW共识机制,因为它们都基于亦来云主链代码和共识。另一方面,以太坊侧链使用了DPoS共识——这可以被认为是权威的证明(PoA)。每个仲裁员都与以太坊侧链上的两个地址有关系,并且任何其他侧链也是如此。例如,如果有一个ELA主链地址,但是相同的主链地址也有相应的以太坊侧链地址,那么这两个地址通过主链上的一个事务相互关联,因此SPV模块可以识别这种关系并识别仲裁器。这就是网络如何知道谁有权生成以太坊侧链的块。用户可以将ELA从主链转移到以太坊侧链,并使用以太坊侧链上的ELA来运行智能合约。在以太坊侧链上运行智能合约的下限是10,000SELA,如果将来有需要,这个数字可能会发生变化。此外,以太坊侧链的块大小与以太坊公链相同。因此,侧链有一个gas限制,而不是使用固定的区块大小。因为以太坊侧链也采用DPoS共识机制,它可以支持比以太坊公链更高的TPS(每秒事务数)。
正如聚焦系列2:亦来云侧链和可扩展性解决方案中提到的,可以有多个相同类型的侧链。这不仅适用于以太坊侧链,也适用于Token侧链和NEO侧链。例如,一个用户可以拥有一个使用Token侧链1的DApp和另一个使用Token侧链 2的DApp,这在理论上是有可能的。需要注意的是,亦来云的侧链——Token侧链、以太坊侧链和NEO侧链——都能够向在亦来云生态系统中运行的DApps发出可替换和不可替换的Token。唯一的区别是Token侧链不支持智能合约,而以太坊和NEO 侧链支持。
同样值得注意的是,很可能不会出现在亦来云上运行2个DID侧链的情况,因为这对DID侧链的设计没有任何好处。DID侧链仅记录用户的交易和KYC信息。事务不会频繁更改,并且侧链将主要用作只读侧链以进行验证。所以,这种侧链的共识也不一定非常快。正因为如此, DID侧链采用PoW共识,并与主链联合挖矿。然而,这也可能发生变化。如果有需要,在未来可以很容易地将共识从PoW转换为DPoS共识。
仲裁员是如何工作的
1. 每个仲裁器必须运行多个节点:一个用于ELA主链,一个用于DID 侧链,一个用于Token侧链,一个用于NEO侧链,一个用于以太坊侧链,依此类推。在此过程中,仲裁器将自身配置为连接到各个节点,从而使其自身能够为每个侧链生成块。这并不意味着所有的侧链节点都必须在一台机器上运行。每个侧链节点甚至主链节点都可以在不同的机器上运行,而仲裁进程通过适当的配置连接到这些运行在不同机器上的不同节点。甚至实际的数据也可以存储在不同的机器上。通过这种机制,可以很好地利用AWS、Azure和Google Cloud等云服务在单独的机器上运行每个侧链节点,同时还使用云存储解决方案进行实际的区块链数据存储,从而减少在一台机器上运行所有进程的负担。
2. 只有值班仲裁员打包并签署每个侧链的块,这适用于所有侧链(PoW和DPoS侧链)。在PoW侧链的情况下,值班仲裁员打包并签署块将它们发送到主链以进行联合挖矿,一旦确认,块就被添加到它们各自的侧链中。在DPoS侧链的情况下,值班仲裁员打包每个块并发送块建议以由所有其他仲裁者签名, 一旦块获得⅔票(25个签名),DPoS侧链块就会被确认并添加到区块链中。每个其他仲裁员都可以验证由值班仲裁员打包和签署的块是否有效。如果签署了无效或恶意的块,那么该超级节点将受到惩罚,并将惩罚其质押的一定比例的ELA,并且可能根据情况的严重程度从超级节点中去除。
3. 如果有3名仲裁员,则必须相互连接。在任何给定时刻,每个仲裁员总是有两个连接。因此,如果有36名仲裁员,那么每个仲裁员始终有35个连接。在仲裁网络上,每个人都相互连接,因为只有36个节点——这意味着开销并不大。然而,在PoW网络中,并不是每个节点都连接到其他节点,因为在网络中有数千到数十万个节点这样做是不可行的。
4. 普通节点如何知道哪个仲裁员在值班?每72分钟就有一组当值仲裁员,这由每个仲裁员的公钥决定。每一个提议都是由不同的当值仲裁员提出的,因为仲裁员在每个块之后轮换。每轮由36个区块组成,每个区块大约持续72分钟。因此,值班的仲裁员是事先确定的,每72分钟进行一次选举并决定当值仲裁员的顺序。在每个PoW节点中都有一个仲裁员列表及其各自的投票,任何人都可以访问,从这里,很容易检查哪个仲裁员将在什么时候值班。
5. 任何仲裁员都可以随时投票或撤回其投票。在第n轮开始时,将为n+1、n+2轮收集选票,以便节点事先知道值班仲裁员的顺序。
结论
本系列文章可能在技术上进行了深入探讨,但是如果要从所有这些内容中得出一个容易理解的结论,那就是亦来云使用的混合共识机制本身非常独特,因为它增加了多层安全性。通过混合共识机制,亦来云在不牺牲可扩展性潜力的情况下建立了一个弹性网络。最重要的是,它仍然完全分散和自治。区块链行业的三大方面很难平衡:安全性,可扩展性和分散性。亦来云通过一种独特的方法有效地平衡了这三者,而这种方法在其他区块链项目中是看不到的,虽然此工程困难重重,但亦来云正在朝着这个方向努力,建立一个自主创建的最强大和最安全的共识机制支持的系统。
亦来云的混合共识机制