• 对话:无利害关系


    转向权益证明

    我的人都知道,我花了很多时间去研究和讨论(大谈特谈)权益证明(Proof of Stake)。我发现,以协议内资产为前提达成共识的前景,仰赖于优雅的算法设计。我常常会反复地谈到权益证明及其相关问题,因此我决定把它敲下来和你一起分享。

    虽然这不是一场实际对话的转录稿,但它是我受到无数真实对话的启发而写出来的。

    D” 代表我, Danny,而 “F” 代表和我对话的那个朋友。F 有点技术背景,精通工作量证明(Proof of Work)和区块链相关行话。这一对话发生在一个阳光明媚的温暖日子里,我们俩骑着自行车穿过新奥尔良(New Orleans),路上来回冲对方叫喊。

    新奥尔良阳光明媚的一天

    -在槲树(Live Oaks)茂密的树荫下,我们俩正骑着自行车沿滨海大道(Esplanade Ave)前行......-

    F: 那权益证明到底是什么呢?它真的有用吗?r/bitcoin 的人说它是一个中心化骗局,而工作量证明是唯一一个真正安全的共识。

    D: 喂,兄弟,骑慢一点!权益证明是什么?权益证明试图用像比特币或以太币这样的 协议内资产,而非算力 来保证区块链安全性

    F: 哈?用比特币或以太币“来保证区块链安全性”是什么意思?

    D: 好吧,我先从上一步开始解释。工作量证明实际上是做什么的呢?为什么矿工们要卖力地运行计算程序呢?

    F: 他们只是想赶在其他人前面挖到下一个区块,这样他们就能得到奖励。

    D: 为了个人利益而挖矿会带来一个副产品,即会建立一个分布式的分类账。

    F: 我开始明白了......

    D: 关键在于他们挖下一个区块的可能性与他们在网络中所拥有的算力的量成正比。如果一个矿工有 5% 的算力,他们就能找到约 5% 的区块,并得到约 5% 的奖励。因此,他们对共识的影响力与其算力成正比。

    F: 是的......

    D: 把一个矿工在网络中的影响力和他的算力绑在一起可以阻止一种叫做“女巫攻击(Sybil Attack)”的攻击。

    F: 我想我以前听过这个攻击。它是不是像拒绝服务攻击(DOS attack)一样?

    D: 有点像。这是一种一个人就能完成的攻击,因为它的复制成本低廉。举个例子,假如你在区块链共识中获得的影响力和你从不同钱包(一个钱包一票)中得到的投票数量有关,那会怎么样呢?

    F: 难道你不能想要多少钱包就有多少吗?

    D: 可以的。

    F: 那你想要多少票就有多少票了。

    D: 没错!通过把一个人获得的“投票”数量和他的算力数量绑在一起,该协议就能限制个人影响力了。因为你可以通过寻找哈希值来向该协议证明你的有效算力,而这个协议就像一个很好的 比率限制器,可以限制你对共识的影响力大小。

    F: 酷极了......我以前从未这样想过。那这怎么又和权益证明有关呢?

    D: 工作量证明的核心是你要向该协议证明你有某些稀缺资源。把工作量证明想成是“稀缺资源证明 (Proof of Scarce Resource) ”, 那其中的稀缺资源就是算力。很早就有人问,“我们可以用其他稀缺资源来保证区块链安全性吗?我们一定要浪费所有的电力吗?” 我相信你能猜出这问题的答案......

    F: 比特币和以太币就是稀缺资源!那我们就把加密货币用作稀缺资源证明里的稀缺资源吧。真棒!

    D: 没错!

    F: 以太坊不应该立刻转移到权益证明去吗?他们还在等什么?你挖下一个区块的可能性和你拥有的代币数量可能成正比。这很简单啊。

    D: 差不多吧,但是不幸地是,实际情况并没这么简单。实施一个简单的权益证明可能会面临着很多众所周知的问题:“无利害关系(Nothing at Stake)”问题和“长程攻击(Long-range attacks)”问题。

    F: 啥玩意?

    D: 呃...... 我们停一下吧。我要喘口气。

    D  F 把他们的自行车放下,然后懒洋洋地躺在圣约翰河口 (Bayou St. John),静静地思考着区块链共识。

    这是权益证明 (Proof of Stake) 系列对话之二。如果你还没看对话一 转向权益证明 的话,建议你先看一下。

    这次对话跟上次的一样,“D” 代表我(Danny), 而 “F” 代表和我对话的那个朋友。F 有点技术背景,而且精通工作量证明 (Proof of Work) 和区块链相关术语。

    上次对话中,我们骑着自行车穿过新奥尔良的街道,大声谈论着权益证明的激励措施。这次对话是发生在我们骑完自行车后,懒洋洋地躺在圣约翰河口边之时。

    迎着河口的微风......

    -我们懒洋洋地躺在圣约翰河口。F 正静静地思考着权益证明背后的激励措施。-

    F: 让我理理我的思路是不是对的......我们可以把工作量证明 (Proof of Work) 概括成某种稀缺资源的证明,这种思路推动我们转向寻找其它可以向区块链协议证明的稀缺资源。公链中有一种稀缺资源,即在公链基础上构造的加密经济代币。权益证明试图用协议内代币 (in-protocol token) 作为比率限制器 (rate limiter) 来限制个人在共识算法中的影响力。

    D: 我可说不了这么好。

    F: 我一直在反复思考这一点,而且我喜欢这样思考!既然你有一个区块链经济指标,那为什么还要将 CPU 成本和 GPU 时间作为经济指标呢?

    D: 因为问题远比表面看起来的要难得多。

    F: 对,你刚说有好几个问题。那除了“无利害关系”之外,还有什么问题呢?

    D: “长程攻击”。

    F: 哦,是的。无利害关系(Nothing at stake)......听起来好像不对......这似乎和整个概念的意思相反。权益证明强调的不应该是我持有权益(I have a stake)吗?

    D: 这可归结为语义学问题。持有某物的权益(have a stake in something)和用某物下注(put something at stake)分别是什么意思呢?前者是指分一杯羹,例如“我是这家企业的权益持有人” 指的是我是这家企业的所有人之一。后者是指将某物作为赌注押在某个结果上。 例如,“我把我的财产押在黑色上了” 是指我已经把所有的钱都押在轮盘赌转轮会降落在黑色那里了。这是被动所有权 vs. 损失风险。

    F: 对,说得有道理。

    D: 这在工作量证明中再自然不过了。你很明确自己在进行工作量证明之时将算力押在什么上了。你可以把你的资源用在这个或那个分叉上——这个或那个区块链上,但是你不能把你的资源同时用在两个分叉上。你必须决定把赌注下在哪。你在一个特定的区块后面挖矿,等于是在说“我把我的算力押在哈希值为 0xFFFF 的那个区块上”。

    F: 但是在权益证明中,你不一定要做出这个决定,因为如果出现了分叉,你可以在两条分叉上都下注。

    D: 没错。因为经济资源是在协议中的,如果像分叉一样出现了两个协议实例,那你就能得到该资源的“复制品”。

    F: 所以你最好两个分叉都押!

    D: 是的,如果有分叉的话,理性的经济决策是对两个分叉都进行验证,以增加押到获胜分叉的可能性。如果在经济激励的影响下,验证者都去验证所有的分叉,并且创建分叉,你就会知道要达成共识有多难了。

    F: 当然了。你看我这么理解对不对——在简单的权益证明中,做出一致决定其实并没有什么风险,所以从个人角度来说,最佳做法就是尽可能多地参与分叉,但从整条链的角度来说,这并非最佳做法。

    D: 没错!一般而言,这是设计加密经济协议的关键所在。我们必需 在个体参与者实现个体收益最优化的同时,确保系统整体结果的最优化 。简化工作量证明能够做到这一点,但简单的权益证明不能,正如“无利害关系”问题所示的那样。

    F: 那么我们要如何调整激励措施来解决“无利害关系”问题呢?

    D: 问得好!这完全不是通过某种方式就能解决的问题。这是一个新兴的研究领域。最靠谱的解决办法通常都需要将权益作为 安全押金 锁起来。如果有人证明你是恶意行动者,你就会被处罚。举个例子,如果有人证明你在两条分叉链上下注,你可能会失去部分或所有赌注。有了额外的处罚机制,你必需就参与哪条分叉做个经济决策了。就像在工作量证明中一样,你不能将算力同时用在两条链上,而增加处罚机制就能防止你将代币同时押在两条链上,否则你就会失去这些代币!

    A: 等等。如果你做了错误的决定,你就会赔钱吗?

    D: 如果做了个“错误的决定”,你可能只会少挣点,但是做了个被证明是恶意的决定,你就理所应当要被处罚了。

    A: 嗯。听起来似乎很有风险。

    D: 那就对了!那正是这些“罚没条件”存在的意义。我们已经在这个过程中增加了风险,这样验证者必须理性决定该验证什么了。

    A: “罚没条件”?

    D: 是的,那些就是协议专设条件,如果验证者违背了这些条件,他们的资金就会被“大幅度削减”,或被永久销毁。一般而言,罚没条件指的是:在没有被违反的情况下,这些条件会确保其中一条链继续延长或“最终确定下来”;在被违反的情况下,至少会确保有一些验证者会赔一大笔钱。

    A: 真有趣......等等,“最终确定下来”是什么意思?

    D: 呃......你饿吗?我们去吃个穷小子三明治吧。我们总不能空着肚子讨论最终确定性和”长程攻击”呀。

    我们扶起自行车骑往当地一家穷小子三明治店,打算就着油炸海鲜继续展开讨论。

     


    链接: https://hackernoon.com/motivating-proof-of-stake-a-dialogue-3a6d76bd08d

    链接: https://hackernoon.com/nothing-at-stake-a-dialogue-2ded91318cb9

  • 相关阅读:
    Web测试与App测试的区别
    unittest参数化
    算法-python
    冒泡排序算法-python
    mysql基础知识
    Web自动化-浏览器驱动chromedriver安装方法
    Selenium-三种等待方式
    C++中进制转换问题
    C++11新特性,对象移动,右值引用,移动构造函数
    C++ 拷贝控制和资源管理,智能指针的简单实现
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312885.html
Copyright © 2020-2023  润新知