标签: PoW

  • 混合PoW/PoS共识机制详解

    区块链的共识机制用于确保参与者之间就区块链的当前状态达成一致。共识机制决定了哪些节点能够添加新的交易区块,其主要目标之一是确保区块链不被重写。

    工作量证明共识(POW)

    具有工作量证明共识的区块链(如比特币)只能由矿工创建,他们通过部署硬件,以及计算如何有效地解决某个特定的数学问题。每次矿工完成有效猜测时,区块链网络就可以接受他们所构建的区块。虽然矿工可以选择任一条链进行计算,但网络只接受具有最多工作量证明(即哈希或计算最多)的链作为合法链。这意味着矿工被激励在最长的链上进行挖矿,当他们发现有效的新区块时,他们将尝试找到如何在新区块上构建的解决方案。

    重写区块链的难度在于它作为记录金融交易的账本。当区块中出现将资金发送到钱包的交易时,并且在该区块之上已经构建出了其他区块(已确认),区块(交易)将不可能被重写。

    如果某个实体控制了足够多的哈希算力来攻击“真实链”,它可以通过重新构建“旧”区块从而取代最新的区块,实现对区块链的重写(或重构)。以下是此类攻击的简要说明,也称为51%攻击:

    攻击者首先向交易所进行充值,该交易记录在区块X中,然后攻击者开始独自构建另一条并行链(不向网络广播该区块)。而当达到充值交易所需的确认数量后,攻击者会将该代币兑换成其他货币,并从交易所中提取。当提现交易完成后,攻击者会发布独自构建的并行链,并且如果该区块链具有比原始链更多的PoW(区块),则网络将接受它作为合法链,而原始区块链(包含攻击者充值交易的)将成为历史版本而消失。之后,攻击者就可以再次自由地使用这些代币。

    由于矿工是唯一可以在PoW类加密货币中直接向区块链中添加区块的实体,这使他们在治理中发挥了重要作用。如区块链网络中需要针对共识规则进行修改,就必须得到大多数哈希算例的支持。“软分叉”需要足够的矿工去重新识别新的共识规则,以便用户可以进行交易并期望他们的交易得到正确处理,并将交易数据打包在区块中。“硬分叉”则将原有区块链网络分成两部分,并且大多数矿工接受的“工作量PoW的链是正确的链”,矿工们将有权决定哪一条链被视为合法的。

    权益证明共识(POS)

    权益证明共识是另一种决定哪些矿工可以添加新的区块并验证区块链当前状态的方法。通过权益证明,而不是矿工竞争解决问题,根据钱包中的代币数量(或“权益”)的多少,通过某种机制确定下一个区块生产者。该共识过程所以来的原则是,相信那些拥有最多利益的人将为整个网络做出负责合理的决策。

    权益共识的证明消除了对能源密集型挖矿活动的需求,但缺乏显著的能源支出却又造成了另一个问题,有时被称为“无关紧要。”以分叉举例来说,伪造的POS(“锻造”通常是被用来代替“挖矿”)会分别在两条链上开采,因为额外创建另一条链的成本很少,所以他们可以同时在两条链上获得收益。这对于区块链网络来说是个问题,因为共识机制的目的是只承认有一条合法的链,且仅认可合法链的状态。

    权益证明在代币分配方面还存在其他一些问题。PoW矿工的成本很高(硬件,电力),并且通常需要出售他们挖到的大部分代币以满足这些成本。因此,许多开采的硬币可以在市场上购买,而不会被矿工所囤积。而权益证明的伪造成本却非常低,他们不需要为了维持网络运营而售出他们获得的代币。参与权益证明的大额股权持有人倾向于增加他们流通中的代币份额,因为他们从网络用户那里收取大量奖励和交易费用。这被比作封建主义,即网络由大额代币持有者所拥有和操纵,并且用户使用过程中还需要向他们支付手续费。在POS中,通常会设置一些限制条件,使普通用户不能直接参与到权益证明共识中。

    混合PoW/PoS

    混合工作量证明、权益证明系统的目标是结合二者优势,并平衡彼此的弱点。Decred是为数不多的混合使用PoW和PoS共识机制的加密货币,并将它们整合产生了多因素和混合的共识机制。

    在某些意义上,“Masternode coin”也是混合机制,因为它们具有可识别的工作量证明组件,执行着与比特币类似的角色,属于特殊节点的附加角色。这些特殊节点通常也持有一定数量的代币作为抵押,以证明他们可以信任且符合网络的最佳利益,这类似于权益证明机制。Dash是原始的主节点代币,并将此模型称为服务证明。本文重点介绍具有混合权益证明的组件,所以不会讨论虑主节点代币或服务证明的代币范围。

    Decred的PoW组件与其他基于PoW的项目类似,并使用Blake-256哈希函数。Decred的PoS组件以及它如何构建区块链的方式非常独特,值得进一步解释。

    要参与到Decred的权益证明中,持有人必须锁定他们的DCR并购买“票证”。个人票证的价格由类似市场的机制设定,系统的目标是获得一定数量的票证(40,960) – 如果超过了目标数量,则价格会上涨,如果未到达数量价格则下降。当用户购买票证时,他们使用的DCR将被锁定(即,他们不能花费),锁定期会持续到他们的票证被伪随机函数调用完成投票,或在大约142天后到期。这为PoS机制带来了机会成本,通过这种方式能够确保PoS选民在游戏中得到公平且能够遵循网络的最佳利益。

    PoS参与者(也称为选民或利益相关者)可以扮演三个不同的角色:拒绝投票、对共识规则的变更进行投票,以及使用Politeia定级系统对项目级别管理进行表决。第一种角色“拒绝投票”,是PoS选民最直接参与维持共识的方式。

    在区块中投票

    当PoW矿工找到有效的区块时,他们会在网络上进行广播,为了使该区块被认为是有效的,该区块中必须具有随机选择的5个投票中的至少3票。PoS选民需保持钱包开放,并需要在他们的选票被调用时,进行回复(或者让投票服务提供商代表他们)。当某个POS票证被调用进行投票和响应时,其所有者将收到奖励。

    当票证被调用时,他们对前一个区块的常规交易进行表决,选择接受或拒绝。在获得至少3票之前,网络上的节点将不会认为新区块是有效的。如果大多数票证都拒绝投票给前一个区块中的交易,那么它们将返回给mempool。这些常规交易包括PoW矿工的奖励,但不包括PoS选民的奖励。

    因此,PoS选民有权在不影响自己收益的前提下剥夺矿工的奖励。这限制了PoW矿工的权力,防止他们对网络共识规则的篡改,这些规则须由利益相关方投票决定。实际上,当检测到恶意或低效行为时,PoS选民可以通过采用投票“否决”这些恶意的矿工行为,通过这种方式,防止恶意PoW矿工篡改交易和获得非法奖励。

    这种PoS验证层可显著提升网络的安全性,并防御多数的攻击。大多数双重支付攻击的常用方法是通过私自隐匿的挖矿来取代现有链,从而重写区块链,然后在一段时间后发布它并致使“旧”链中的交易无效(即,他们可进行双重支付)。由于Decred区块要求随机选择票证的输入,该方式被认为是有效的,并且在收到该输入之前不能由PoW矿工建立区块,PoW矿工不可能秘密的进行挖矿,除非他们也同时控制了大部分票证(相见如下文章)。

    混合PoW/PoS机制的设计能够显著增加网络攻击的成本,因为攻击者必须同时规避两个独立的系统。尤其是在PoS组件被配置为仅能缓慢的获取票证。每个区块仅可购买有限数量的票证,购买大量的票证会导致价格的急剧上涨。此外,一旦需要购买票证,用于购买它们的资金将是被锁定,这种方式会锁定攻击者的用于攻击的资金,使其面临贬值的风险。

    使随机选择的利益相关者对每个区块进行投票,意味着区块链必须与所有参与者挖矿的节点共享,从而增强网络的安全性。 Decred的混合机制旨在为利益相关方提供超越PoW矿工的权力。

    共识修改投票

    Decred在一开始就决定让PoS利益相关者成为区块链治理中的主导决策力量。修改或写入共识规则需要批准升级程序,通过该程序,只有通过投票后才能对网络共识规则进行修改。而且只有在至少75%的投票同意后才能进行更改。如果有一定比例的矿工(95%)和选民(75%)正在运行升级软件并对规则进行潜在的更改,该过程就会开始执行。如果修改提案在4周的投票期后获得了超过75%的支持,则被接受,否则会被拒绝,如果投票数量不足,则重新开始投票。如果提案被接受,那么共识机制的修改将在一个月后激活。

    项目管理:Politeia

    Decred的区块奖励分为PoW矿工奖励(60%),PoS选民奖励(30%)和Treasury(10%),用于资助开发该项目的开源软件贡献者。票证持有人有权投票决定该部分资金应该如何使用、应该添加哪些功能,并通过Politeia平台决策。

    总结思想

    由于PoS选民可以获得30%的区块奖励,他们无法仅通过持有现有权益而维持他们在DCR流通中的相对份额。大多数新的DCR都是PoW矿工挖矿获得的,从而减轻他们在PoS系统中“无关紧要”的问题,也发挥了他们在保护网络方面的作用。矿工通必须出售他们收到的大部分奖励以维持他们的运营成本,因此该方式能够确保市场上的DCR供应需求合理。

    Decred区块链呈现了独特的架构模式,也是混合PoW/PoS系统最知名的例子之一。与PoS共识机制在分组中发生的重大变化一样,未来通过混合PoW/PoS机制部署的项目也是独特的,并且不一定遵循现有的Decred框架。

  • 工作量证明(PoW)

    简介

    简言之,工作量证明(PoW)是可预防数字支付系统双花问题的机制。比特币和其他众多加密货币均使用工作量证明机制来保护自身区块链网络和数据的安全。这种机制是指多方在无需信任彼此的情况下达成共识,通常称作“共识算法”或“共识机制”。

    工作量证明是最早问世的共识算法,时至今日仍与权益证明(PoS)并列处于主流之列。中本聪于2008年在比特币白皮书中提出工作量证明的概念,但该技术本身在此之前就已经构想成型。

    在加密货币尚未问世之前,亚当·贝克(Adam Back)的HashCash就是工作量证明算法的早期示例。HashCash要求发件方在电子邮件发送前执行少量计算,以此缓解困扰收件方的垃圾邮件问题。这样的计算对正规发件方而言,几乎不费吹灰之力,但如果是发送大量电子邮件的人,负担会迅速加大。

    什么是双花问题?

    用同一笔资金多次消费就会发生双花问题。该术语基本上专属于数字货币领域,毕竟在现实生活中,同一笔现金无法支付两次。 

    例如,咖啡钱支付给收银员后,就锁进了收银机。客户不可能再用同一笔钱到街对面的咖啡厅再买一杯咖啡。但是,如果用数字现金系统,就可能会出现这种情况。 

    我们肯定都用复制粘贴指令复制过计算机文件,也曾轻松地将同一份文件发送给几十个人。数字货币本质上就是数据,因此我们必须提防他人制造双花问题,即复制同一笔货币到其他地方消费。如果无法防止双花问题,数字支付系统很快就会崩溃。

    如需进一步了解双花问题,敬请阅读《双花问题详解》。

    为什么有必要采用工作量证明?

    如果读过我们的区块链技术相关文章,就能了解到加密货币用户会不断将交易发布到网络中,但这些交易并不会立即生效。只有在获得确认并添加到区块链后,交易才会有效。

    例如,比特币区块链就是所有用户均可查看的公共交易数据库(账本)。试想一下,某人和其他三位好友共用一本记事本记录自己的比特币交易。任何时候,其中一人要进行价值转移时就记下:

    Alice向Bob支付5 BTC;Bob向Carol支付2 BTC等。

    但是,每笔交易都必须注明资金来源。所以,如果Bob向Carol支付2 BTC,记录条目应如下所示: 

    Bob向Carol支付2 BTC,这笔资金来自Bob此前与Alice的交易

    这样我们就有办法追踪以上BTC金额。假如Bob试图用之前支付给Carol的2 BTC进行另一笔交易,大家马上就会知道了。因为2 BTC此前已经花出去了,共享组员不会允许该笔交易计入记事本。

    对于小团体而言,上述方式可能非常奏效。大家彼此认识,能达成一致,决定由哪位好友往记事本里记录交易。如果是个1万名参与者的团体,情况会是怎样呢?此时,记事本无法有效扩展,毕竟没人会信任陌生人掌管账本。

    这正是工作量证明的用武之地。工作量证明确保用户不得支付无权动用的资金。工作量证明算法结合博弈论和密码学,根据系统规则,让所有人都能更新区块链。

    工作量证明如何运作?

    假设以上示例中的记事本就是区块链。我们现在不逐一添加交易,而是打包计入区块。我们在网络中发布交易,创建区块的用户随后会把交易计入候选区块。只有候选区块成为确认区块,交易才生效。也就是说,交易已添加至区块链数据库中。

    验证交易和添加新区块的过程称为“挖矿”。挖矿费用昂贵且难度很高,但奖励也很可观。区块奖励由用户的交易手续费和协议创建的全新比特币组成。 

    工作量证明要求矿工(创建区块的用户)投入电力和算力等资源,对候选区块的数据进行哈希运算,直至找到破解难题的方案。

    哈希运算区块数据是指将数据带入哈希函数,生成区块哈希值。区块哈希值的作用就像“指纹”,是输入数据的标识且对于每个区块来说都独一无二。

    换言之,矿工必须验证和收集待处理的交易,并将这些交易整理成一个候选区块,并将该区块的数据带入哈希函数生成有效的哈希值。矿工成功找到候选区块的有效哈希值后就会发布到网络中,将该区块添加到区块链中,然后获得挖矿奖励。

    矿工将候选区块和哈希值发布到网络中后,其他网络参与者会重复该哈希运算流程,验证输出是否确实有效。 

    有效哈希值必须经过无数次哈希运算才能算出,但人人都能轻松确认生成的哈希值是否正确。只要将同一输入(区块数据)带入哈希函数提交,便可核实输出是否一致。

    提供到工作量证明中的数据,哈希值须符合特定条件。但是用户不知道如何做到。他们唯一能做的就是把数据带入哈希函数,以此验证是否符合条件。如果不符合,就对数据稍作修改,再得到不同的哈希值。即使只更改数据中一个字符都会产生截然不同的结果,因此根本无法预测输出结果。

    所以,区块创建就是猜谜游戏。一般来说,用户需要汇总所有要添加的交易信息和其他一些重要数据,然后同时进行哈希运算。由于数据集不变,因此需添加一个变量信息。否则,输出的哈希值会始终保持一致。这个变量数据称为“随机数”。每次只要试着改变随机数,就会得出不同的哈希值。

    总而言之,挖矿就是收集区块链数据并借助随机数进行哈希运算,直至找到特定哈希值的过程。如果得出的哈希值符合协议设定条件,即可在网络中发布新区块。与此同时,其他网络参与者可更新自己的区块链,纳入新区块。

    对于当今的主流加密货币,要满足条件颇具挑战。网络的哈希率越高,就越难找到有效的哈希值。这样是为了减缓出块速度。

    通过个人计算机猜算海量哈希值的高昂成本可想而知。这会耗费大量计算时间和电量。但只要找到有效哈希值,即可获得协议奖励的加密货币。

    让我们回顾一下目前已了解的内容:

    挖矿难度很高且费用昂贵,但能保障网络安全。

    矿工成功生成有效区块后,就能获得奖励,而该奖励由新发行的加密货币和交易手续费组成。

    生成有效哈希值很耗时,但其他用户可以重复哈希运算流程轻松验证哈希值的有效性

    至此,一切还算正常。但是,如果有人试图作弊,会发生什么呢?如何才能制止在区块中输入大量欺诈性交易以生成有效哈希值的行径?

    公钥密码学因此应运而生。本文在此不做赘述,敬请阅读《什么是公钥密码学?》进行全面了解。简言之,公钥密码学即为利用某些合规加密学技巧来验证某人是否有权动用某笔资金。

    用户在创建交易时,会对该笔交易进行签名。网络中的其他用户会将该签名与签名用户的公钥进行对比,核实二者是否匹配。同时,其他用户还可核查该人是否有权动用资金,以及输入总额是否高于输出总额,即支出不得超过持有金额。

    网络会自动拒绝含有无效交易的区块。试图作弊的代价非常高昂。不仅浪费资源,还得不到任何奖励。

    工作量证明的奥妙之处就此显现,即作假成本高昂,诚实操作则获利颇丰。明智的矿工会追求投资回报率,因此他们会谨慎行事,保证收益。

    工作量证明(PoW)与权益证明(PoS)对比

    除了工作量证明之外,还有许多共识算法,权益证明(PoS)则是其中最热门的一种。该概念的诞生可追溯到2011年,并已在以太坊和其他众多协议中实施。

    在权益证明系统中,矿工被“验证者”取而代之,并且不涉及挖矿和猜测哈希值的竞争。相反,随机选中的用户须提议或“铸造”区块。如区块有效,用户会收到由区块交易费用构成的奖励。

    当然,选人流程设有门槛,协议将综合考虑各种因素选取用户。要获得资格,参与者须锁定质押,即预定数量的区块链原生货币。质押的作用类似于保释金。例如,为防止被告逃避审讯,他们须上缴大额保释金,而验证者需锁定“质押”来预防作弊。如出现欺骗行为,全部或部分质押会遭到没收。

    相较于工作量证明,权益证明确实存在一定优势。最明显的是碳足迹的减少,这是因为权益证明无需高功率的矿场,电力消耗仅为工作量证明的一小部分。 

    即便如此,权益证明的普及程度仍远不及工作量证明。人们认为挖矿很浪费资源,但仍是过去十多年来唯一公认可靠的共识算法。比特币工作量证明一经问世,就为价值数万亿美元的交易保驾护航。要明确权益证明的安全性能否与工作量证明相媲美,质押还需经过长期的实际验证。

    结语

    工作量证明是双花问题的初始解决方案,且可靠性和安全性也得到了验证。比特币证明了我们并不需要依赖中心化实体来预防重复花费同一笔资金。去中心化环境中的参与者通过巧妙运用密码学、哈希函数以及博弈论就能步调一致地追踪金融数据库的状态。

  • 委托权益证明

    相较于之前的权益证明(PoS)机制,委托权益证明(DPoS) 共识算法被许多人认为是更有效和民主的版本。

    由于工作量证明(PoW)在设计上需要许多外部资源,于是权益证明和委托权益证明都被用作工作量证明共识算法的替代方案。工作量证明算法利用大量的计算来确保一个不可更更改,透明和去中心化的分布式账本。而权益证明和委托权益证明却不需要如此多的资源,并且在设计上更具可持续性和环保性。要想了解委托权益证明的工作原理,首先必须掌握一些工作量证明和权益证明的基本知识。

    工作量证明 (PoW)

    大多数数字货币系统运行在名为区块链的分布式账本之上,而工作量证明是第一个被使用的共识算法。它是构成比特币协议的核心,负责生成新区块并保障网络的安全(通过挖矿)。比特币可替代中心化且低效的全球传统货币体系。工作量证明引入了一种可行的共识协议,使得汇款不再需要通过一个中心化的机构来进行。它提供了一个基于点对点网络的去中心化支付系统,并免去了中间商的参与,大大降低了交易成本。

    工作量证明系统由采矿节点和其他种类的节点共同维护,它利用特殊的硬件(ASIC矿机)来尝试解决复杂的加密问题,平均每十分钟开采出一个新区块。矿工只有在找到了该区块的解之后才能在区块链中添加新区块。换句话说,矿工只有在完成了一个工作量证明之后才能这么做,而工作量证明又用新开采的数字货币和此区块的所有交易费奖励矿工。然而,这需要极高的成本,因为它要用到大量的能源,并要进行多次失败的尝试。此外,ASIC硬件也十分昂贵。

    除了维护的系统的消耗之外,还有一些问题一直困扰着工作量证明系统 – 特别是在可扩展性方面(每秒交易量非常有限)。尽管如此,工作量证明的区块链仍被认为是最安全可靠的,且是容错的标准解决方案。

    权益证明 (PoS)

    权益证明共识算法是工作量证明最常见的替代方案。权益证明旨在解决低效率和一些工作量证明区块链出现的新问题。它着眼于工作量证明挖矿的成本(功耗和硬件)。基本上来说,权益证明用确定性的方式保证了区块链的安全。在这些系统中没有了挖矿,新区块的验证取决于作为股份的币的数量。一个人持有的币越多,那么被选为区块验证者(也叫做铸币者或锻造者)的概率就越高。

    工作量证明依赖于外部投资(功耗和硬件),而权益证明用内部投资(数字货币本身)巩固了区块链的安全性。

    此外,权益证明系统使攻击区块链的成本更高,因为成功的攻击需要拥有至少现有总货币的51%的数量。而失败的攻击将导致巨大的经济损失。尽管权益证明有着令人信服的优势和很大的上升空间,但这个系统仍处于早期阶段,尚未在更大的规模上进行测试。

    委托权益证明(DPoS)

    委托权益证明(DPoS)共识算法由Daniel Larimer(BM) 在2014年提出。例如:Bitshares,Steem,Ark和Lisk都是使用委托权益证明共识算法的数字货币项目。

    委托权益证明区块链具有投票系统,利益相关者将他们的工作交付给第三方。换句话说,他们可以投票选出几个代表代替他们保护网络。代表们也被称为见证人,他们需要在产生和验证新区块的过程中达成共识。投票权与每个用户持有的币数量成正比。投票系统因项目而异,但总的来说,每位代表在投票时都会提出个人意见。通常,代表们会收集奖励并按比例分配给各自的投票者们。

    因此,委托权益证明算法创造了一个直接取决于代表们的声誉的投票系统。如果选举的节点行为不当或不能有效工作,它将很快被驱逐并被另一个节点取代。

    在性能方面,与工作量证明和权益证明相比,委托权益证明的区块链更具有可扩展性,每秒能够处理更多的事务(TPS)。

    委托权益证明 VS 权益证明

    虽然权益证明和委托权益证明在股份制的意义上是类似的,但委托权益证明提出了一种新颖的民主投票系统来选出区块生产者。由于委托权益证明的系统由选民维护,所以代表们的行为必须诚实且高效,否则便会被投票出局。此外委托权益证明区块链在每秒事务处理方面往往比权益证明区块链更快。

    委托权益证明 VS 工作量证明

    不同于试图解决工作量证明问题的权益证明,委托权益证明旨在简化区块生成过程。因此,委托权益证明系统能够快速处理大量的链上交易。委托权益证明的使用方式与工作量证明和权益证明不同。由于工作量证明仍然是公认最安全的共识算法,所以大多数金融流动都发生于此。由于权益证明比工作量证明的工作效率更高,所以它具有更多的运用案例。委托权益证明限制了选举区块生产者的过程中股权的使用。与有着竞争体系的工作量证明系统不同,委托权益证明的实际区块生成是预定的。每个见证人都会轮流生产区块。有人认为委托权益证明应被视为一种权威证明系统。

    结论

    委托权益证明与工作量证明甚至权益证明有很大不同。它并入利益相关者的投票机制,从而激励并选出诚实且高效的代表(或证人)。但是,实际的区块生产过程与权益证明系统完全不同,并且在大多数情况下,在每秒事务处理方面表现出更高的性能。