BTC.com手机客户端

股权证明(POS)的可行性:如何学会热爱弱主观性

随风潜入芭比特 发布在 竞争币 9 4492

股权证明(POS)一直是加密货币领域最具争议性的话题。

尽管这个模式有许多不可否认的好处,包括高效,更大的安全保障和对未来硬件算力集中化的免疫功能,POS算法,往往比POW为基础的方案更复杂,关于POS的可行性也一直有广泛的质疑,特别是关于所谓的根本“无利害关系“(Nothing at stake)”问题。

事实证明,这些问题是可以解决的,可以提供一个严密的论证,POS连同它的一切是可以成功的–但要有一个适当的成本。这篇文章的目的是解释这个成本是什么,以及如何将其影响最小化。

经济组和“无利害关系”(Nothing at stake)

首先,来介绍下。一般来说,共识算法的目的,是为了允许根据一些特殊状态转换规则,进行状态的安全升级,执行状态转换的权利是分布在一些经济设置里的。

而经济组是一组被授予通过算法共同地执行转换权利的人,用于共识的经济组所需的重要特性是:它必须是安全的去中心化的–这意味着没有一个角色(或共谋的角色)可以控制一项决策的大部分,即使这个角色具有一个相当大量的资本和金融刺激。到目前为止,我们已知道三个去中心化的安全经济设置,每个经济设置对应一组共识算法:

  1. 算力的持有者:标准工作证明(POW),或TaPOW。请注意,这是来自专门的硬件,和(希望的)通用硬件的变种。
  2. 股份持有者:所有的POS的变异。
  3. 用户的社会网络:瑞波/恒星类型的共识。

值得注意的是,最近有一些人尝试开发基于传统拜占庭容错理论(traditional Byzantine fault tolerance)的共识算法;然而,所有这些方法都是基于M-of-n的安全模型, “拜占庭容错” 概念本身仍然存在一个问题就是,N应从哪里取样。在大多数情况下,使用的设置是利益相关者,所以我们会把这种新的BFT范式作为“POS”的聪明子类别(clever subcategories)对待。

工作证明(POW)具有很好的特性,使得为它设计有效的算法更加简单:经济组的参与要求对系统外部资源的消耗。这意味着,当把某人的工作贡献给区块链时,矿工必须从所有可能的叉(forks)中做出选择(或决定是否要启动一个新叉),不同的选项是相互排斥的。双重投票,双重投票的第二个票是在第一个投票后许多年,这是无利可图的,因为它需要你将算力分散在不同的选票上;主导战略是让你的算力只放在你认为最可能会胜出的叉上。

1111

然而对POS来说,情况就不同了。虽然纳入经济组的成本可能是昂贵的(虽然我们会看到不总是这样),但是投票是免费的。这意味着这是一个“原生的POS”算法,它只是试图,让每个硬币“模拟挖掘钻机” 使拥有此硬币的账户每秒有一定机率标记一个区块,以此仿制工作证明,这里有一个致命的缺陷:如果有多个叉,最佳的策略是在所有的分叉上进行投票。这是“Nothing at stake”的核心。

222

请注意,有一个论点,说的是为何在POS环境下,一个用户在一个叉上投票可能是没有实际意义的:这是由于“基本利他主义(altruism-prime)”的存在。基本利他主义的主要本质,是实际的利他主义的组合(部分用户或软件开发商),表达对他人和网络的福利的关心和反对邪恶的行为(双重投票),以及防止“假利他”的发生,因为持币人都不想看到他们的币的价值下降。

不幸的是,基本利他主义不是可以完全信赖的,因为由协议的完整性产生的币价值的提升是公共利益,于是会出现短线操作者(例如,如果有1000个利益相关者( stakeholders),他们每人都有1%的机会被选为可以促成一个成功的攻击的“关键”因素,这个攻击会导致币值为零。那么各利益相关者会接受仅相当于他们股份价值1%的贿赂)。在一个分配等于Ethereum创世块的情况下,这取决于你如何估计每个用户成为关键因素的概率,需要贿赂的量将等于总股份的0.3%到8.6%不等(或更少,如果攻击是非致命性的)。尽管如此,基本利他主义altruism-prime仍然是算法设计者应该记住的一个重要概念,在正常情况下,它的优势会表现得很明显。

短叉和长叉

如果我们把我们的注意力放在短叉–少于一定数量块的叉,也许是3000,那么实际上存在一个解决“Nothing at stake”问题的办法:保证金。为了有资格获得块投票的奖励,用户必须付保证金,如果用户被发现在多个叉投票,那个交易证明将被放在原来的链上,把他的奖励拿走。因此,只在单独一个叉上再次投票就成为主导策略。

4444

另一套策略,被称为“Slasher2.0″(相对于Slasher1.0,最初的原始保证金为基础的POS算法),惩罚在错误的叉投票的选民,不是进行双重投票的选民。这使得分析变得相当简单,因为它不需要预先选择选民在许多块投票,以预防发生双重投票的可能性,虽然也是有成本的,因为一旦在同一高度的块上有2种选择,用户可能会选择什么都不标记。如果我们想让用户标记,在这种情况下,“对数评分规则”的一个变种可以拿来使用(这里有更详细的研究http://en.wikipedia.org/wiki/Scoring_rule#Logarithmic_scoring_rule)。为方便讨论,Slasher1.0和2.0具有相同的性质。

4444

为什么短叉可以做到,原因很简单:用户最终有权收回押金,一旦存款取回,不再有任何理由不用这些币在远叉上投票。处理这个问题的一种途径是使存款变得永久化,但是这些方法都有各自的问题:除非一个币的价值不断增长,不断接纳具有共识的新成员,否则最终会僵化成为一种永恒的贵族。鉴于让加密货币普及的其中一个因素就是,民众对贵族拥有永恒权力的不满,所以这种复制是不可能被大多数用户接受的。贵族模型可能就意味着它很快的死亡(人们会想象成这是一个区块链为基础的游戏)。

解决此类问题的一个方法是将关于短叉的“slasher机制“与一个备份结合起来,为长叉进行POS交易。TaPos靠统计交易费作为每一块的得分来运行(要求每一次交易都包括最近的一个块的哈希,以使交易不变得过于琐细),理论上,一个成功的攻击必须花费大量成本才能实现。然而,这种混合的方法有个根本的缺陷:如果我们假设攻击成功的概率近乎为零,然后每个标记者会面临一个激励,重新签署他们的所有交易到一个新的区块链,以获取一小笔费用,因此,零成功几率的游戏理论是不稳定的。每一个用户建立自己的节点是为了收受贿赂?听起来不现实?嗯,如果是这样的话,还有一个更为简单的做法:在黑市上出售老的、不再使用私钥。即使没有黑市,POS系统的币也将永远处于这种威胁之下:那些在预售阶段买了币的部分大户最终会见面并互相串通,合伙搞个叉来谋取私利。因为所有的上述观点,我们可以得出结论: 很不幸,这种发起任意长叉的威胁是基本存在的。

POS的致命问题的解决办法,可以在POW的安全模式下寻求。然而,要想根本解决这个问题,还是有一些阻碍的,但基本上说,是在安全模式下的演变。

弱主观性(Weak Subjectivity)

虽然有许多方法来分类共识算法,接下来的部分我们将重点讨论如下内容。首先,我们将提供今天最常见的两种范式:

 

  • 客观的:新节点进入网络没有任何了解,除了(1)协议定义和(2)所有的块和其他已经公布的“重要”的消息,可以独立达成与当前状态的网络的剩下部分完全相同的结论。
  • 主观的:系统在不同的节点得出不同的结论方面具有稳定的状态,被要求提供大量的社会信息(例如声望值)来参与。

 

系统使用社会网络作为它们的共识集(如瑞波)都必然是主观的;一个只知道协议和数据的新节点,能够被攻击者说服,从而认为攻击者的100000个节点是可信的,没有信誉就没有办法应对攻击。而另一方面,POW则是客观的:当前状态也将总是包含最高工作量预期的状态。

现在要给股权证明(POS)添加第三个范式:

  • 弱主观性:新节点进入网络不知道任何信息,除了(1)协议定义,(2)所有的模块集和其他已经公布的“重要”消息和(3)来自小于n块前被认为有效的状态可以独立达成与当前状态下的其余网络完全相同的结论,除非有一个攻击者永久拥有超过百分之X控制共识集的能力。

在这种模式下,我们可以清楚地看到POS工作得非常好:我们只是禁止节点恢复超过N块,设置N作为安全储存长度。也就是说,如果S状态有效,且已成为至少N个有效状态的祖先,那么从这一点起,不是S后代的S’状态不可能是有效的。长叉攻击不再是一个问题,为了微不足道的原因,我们只是说,长叉作为协议限定的一部分,是无效的。这条规则显然是弱主观的,与增加的奖金x = 100%(即没有攻击会造成永久性的中断,除非它持续超过N块)。

另一个弱主观评分方法是指数的主观评分,定义如下:

1. 每个S状态保持一个“得分”和一个“重力”

2. score(genesis) = 0, gravity(genesis) = 1

3. score(block) = score(block.parent) + weight(block) * gravity(block.parent), 这里weight(block) 通常是1, 虽然更先进的权重函数也可以被使用 (例如.对比特币来说, weight(block) = block.difficulty 也可以很好地工作)

4. 如果一个节点发现一个新的块B’ ,B作为它的父亲,如果那时n的长度是从B的后裔那里得到的最长链时, gravity(B’) = gravity(B) * 0.99 ^ n (请注意, 0.99也可以用别的值).

 5555

基本上,我们明确地惩罚后来的叉。ESS具有这样的特性,不像更幼稚的方法,它主要是避免永久性网络分裂;如果第一节点和最后一个节点收到B块的时间间隔是k块,那么叉是不可持续的,除非两叉彼此间的长度永远保持在约K %(如果是这样的话,那么叉的不同比重,将确保网络的一半将永远看到一个高得分叉和另一半将支持另一个叉)。因此,ESS是弱主观,X大致对应于接近攻击者可以创建的50 / 50网络拆分(如果攻击者可以创建一个70 / 30拆分,那么x = 0.29)。

6666

一般来说,“最大回退N块”规则是优越的和不太复杂的,但是ESS可能会证明用户在高主观性状态下更好(即N很小)换回一个非常快速上升高程度的安全系数(即N块后,免疫99%攻击)。

 

推论

那么,由弱主观性共识驱动的世界看起来将是什么样子的?首先,总是在线的节点将很好;在这些情况下的弱主体性的定义等价于客观性。偶尔在线一次的节点,或至少每隔N块在线,也会很好,因为他们能够不断地得到网络的更新状态。然而,新的节点加入网络,很长一段时间才出现一次的节点,不会有共识算法可靠地保护他们。幸运的是,对于他们来说,解决方法很简单:他们第一次注册,每当很长的时间保持脱机状态时,他们只需要从朋友处或一个区块浏览器,或者仅仅是他们的软件供应商得到最近的块的哈希,并粘贴到自己钱包的区块链作为一个“检查点”。他们将能够安全地从那里更新他们的当前状态。

这个安全假设,“从一个朋友”得到区块哈希的想法,似乎对许多人来说不太严谨;比特币开发者往往要指出的是,如果长叉攻击的解决方案是一些决定机制(X)的替代方案,然后区块链的安全最终取决于X,所以在现实中这个算法没有比直接利用X更安全——意味着大多数X,包括我们的社会共识驱动的方法,是不安全的。

然而,这种逻辑忽略了共识算法在一开始就是存在的。共识是一个社会过程,而人类相当擅长专注自己的共识,不需要来自算法的帮助;也许最好的例子是:“赖石头”,在雅浦岛的一个部落里,基本保留了用石头(作为类似比特币,内在价值为零的资产使用)来记录所有权转移的习惯,以此作为集体记忆的收集记录方式。

为什么共识算法是必要的,很简单,因为人类没有无限的计算能力,而宁愿依靠软件来为我们保存共识。软件是很聪明的,在这个意义上,对非常大规模的共识,他们可以保持完美的精度,但它们也很无知,它们有很少的社会信息,另外,共识算法所面临的挑战是一个算法的创建需要的是尽可能少的社会信息的输入。

弱主观性是正确的解决方案。它解决了POS的长期问题,依靠人力驱动的社会信息,把共识的速度从数周提升到仅十二秒,且允许在高度复杂的规则和大规模状态下被使用。人力驱动共识的作用是很长一段时间内在区块哈希上保持一致性(共识)。假设一个暴虐的政府强大到足以让一年前的区块产生混淆,那么它也会强大到足以干掉任何POW算法,或导致区块链协议规则的混乱。

请注意,我们不需要固定n;理论上,我们可以想出一个算法,允许用户将他们的存款锁定的比n块长,用户可以利用这些存款取得更高的安全级别。例如,如果用户在T块前未登录,23%的存款期限的长度大于T, 然后用户可以拿出自己的主观评分功能,忽略新存款的签名,从而成功防御来自股份总额11.5%的攻击。一种逐渐上升的利率额度可以被用来激励长期的存款,或为简单起见,我们可以仅仅用基本利他主义表示。

边际成本:其他异议

对于长期存款的一个反对意见是,它鼓励用户把自己的资金锁定,这是低效的,和POW同样的问题。然而,有三个对应点。

第一,边际成本不是总成本,POS边际成本占总成本的比例比POW要小得多。用户可能把他们的资本的50%锁上几个月也感觉不到什么, 70%会有点小痛,如果没有大的奖励,锁定85%以上将是无法忍受的。此外,不同的用户在锁定资产方面会有各自不同的偏好。由于这两个因素叠加在一起,不管最终是什么样的均衡利率,绝大部分资金都将被锁定在远低于边际成本线以下。

777

第二,锁定的资本是私人成本,但也是一种有益公共利益的行为。锁定资本意味着只有更少的币可供交易,所以货币的价值将增加,重新分配资本给其它人,创造社会效益。

第三,安全存款是一个非常安全的价值储藏,所以(1)他们把货币的使用替代为一个个人危机保险工具,及(2)通过安全存款,许多用户将能够以同样的货币抵押以获得贷款。

幸运的是,有一种方法来测试这些假设:发布一个 POS币,设置成每年1%,2%,3%的股息奖励,看看在每一种情况下币存入的百分比有多大。用户不会和自己的利益过不去,所以我们可以简单地使用花费于共识的资金数量,作为,这种共识算法引出的低效程度的一种代理;如果证明股权在比工作证明更低的回报水平的情况下,具有合理的安全级别,那么我们就知道POS是一种更高效的共识机制,我们可以用不同的报酬水平,以得到一个总成本和边际成之间的比率的准确概念。最终,它可能需要几年时间,才能得出确切的资金锁定成本的值有多大。

总之,我们现在确定了2点:

(1)POS算法可以安全的设置,为避开“nothing-at-stake”来实现目标,弱主观性作为一个在安全模式里的根本改变,是足够和必要的.

(2)有大量的经济理由,相信POS比POW更具经济效率。POS不是不可知的;过去六个月的正规化及研究已经确定了其优劣势所在,至少在很大程度上与POW不相上下,POW的挖矿集中的不确定性可能永远都存在。现在,这是一个标准化算法的简单问题,并给了区块链开发者一个选择。

(本译文供参考)

----

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。

评论:9

您需要登录后才可以回复 登录|注册
    Author Image
    心碎无痕 702 天前

    真心没看懂。。。。技术宅男啊。www.jua.com

    +1
    +1
    我要点评
    Author Image
    sabreiib 708 天前

    nubits,对于短期分叉问题,sigmike和jordan的策略就是用软件强制舍弃那些同时挖好几个链的区块。

    至于长期分叉,就是那种试图将分叉点放在很久以前某个区块的行为,也被检查点给抑制了,jordan说btc也有类似检查点,btc/nubits这方面不同于ppc。

    其实pos最适合搞股份。货币的发行也不应该靠那种鸵鸟政策,而是根据市场需求来调整。

    +1
    +1
    我要点评
    Author Image
    八卦爆料人 708 天前

    Nothing at stake导致可能分叉的问题据说已经在PPC 的0.4版本得到解决,而即将面世的0.5客户端,将包括大幅提高PoS铸币安全性的冷铸币功能,什么是冷铸币Cold storage minting – BTC股票

    +1
    +1
    我要点评
    Author Image
    中本聪之父 708 天前

    看不懂啊,一大堆新名词,小白表示不明觉厉。

    +1
    +1
    我要点评
    Author Image
    bitcoinfans 708 天前

    pos最大的问题就是,推广难度比POW大,因为别人会觉得,他是在借你的盘,而pow就比较好接受,因此pos很难战胜POW

    +1
    +1
    我要点评
    Author Image
    狗狗币之神 708 天前

    不明觉厉的感觉,还是我狗狗币好啊

    +1
    +1
    我要点评
    Author Image
    王大锤子 708 天前

    小天才的文章,总是那么长……

    +1
    +1
    我要点评