[挖矿综合] 基础知识:工作量证明(pow)跟权益证明(pos)介绍

[复制链接]
48490 |12
发表于 2018-1-29 11:06:49 | 显示全部楼层 |阅读模式

664d1d3439f54a90b46807a54bed2992.png

664d1d3439f54a90b46807a54bed2992.png


在第一节(编者注:中译本见文末)中,我们探讨了拜占庭将军问题的概念,如何实现拜占庭容错,以及二者与区块链之间的关系。
上一篇文章中提到的算法实际上是实现拜占庭容错的一种解决方案。然而,该方案还不够有效,其变化方案又存在局限性,网络中的叛徒人数不能超过将军人数的1/3。

3c055242a39344baa18b1a8fc8a89369.png

3c055242a39344baa18b1a8fc8a89369.png


-通过由 Lamport、Shostak和Pease 提出的算法解决拜占庭问题的运行时间(n=参与者人数,m=叛徒人数)-
这将我们引向了计算机科学的一个经典问题:
我们能做得更好吗?

本文的主题是讨论实现拜占庭容错的替代性算法。
注意:请原谅我对部分内容有所简化。这些算法背后有很多复杂的研究。我会在论述过程中提供链接,以便感兴趣的读者进一步研究。
区块链使用共识算法选择一名领导者,以决定下一个区块内容。
该领导者还负责将该区块在网络中广播出来,以便其他节点能够核实其内容的有效性。

工作量证明(PoW)
对于比特币和以太坊等各有特点的虚拟货币来说,工作量证明是目前最流行的算法,应用于各种加密货币如比特币和以太坊,每个版本有各自的区别。
在继续论述之前,先为非技术类读者介绍一下:
哈希函数是可以用来将任意长度的数据映射为固定长度的数据的函数¹
如果一个哈稀函数是安全的话,其输出值与随机数无异。

示例:
keccak256("hello") = 1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8
keccak256("hello1") = 57c65f1718e8297f4048beff2419e134656b7a856872b27ad77846e395f13ffe
在工作量证明中,为了选出一位参与者成为领导者并选择下一个加入区块链的区块,参与者必须解决一个特定的数学问题。
这个数学问题可能是:
已知数据X,找到一个数字 n,使得n附加到 X的结果的哈希值是一个小于 Y的数字。

示例——hash即一个假定的哈希函数,其输出值如下
Y = 10, X = \'test\'
hash(X) = hash(\'test\') = 0x0f = 15 > 10
hash(X 1) = hash(\'test1\') = 0xff = 255 > 10
hash(X 2) = hash(\'test2\') = 0x09 = 9
由于上述示例使用的哈希函数具备加密安全性[1,2],要想解决该问题只能依靠蛮力(即尝试所有组合)。换言之,从概率上来说,在大多数时候第一个解决上述问题的参与者是拥有最多算力的人。这些参与者也被称为矿工
哈希函数之所以取得了广泛的成功主要是因为其具备以下特性:
[ol]
  • 对于给定问题很难找到解决方法
  • 一旦找到问题的答案,很容易就能证实它是对的
    [/ol]
    每挖出一个新的区块,矿工就会得到一些代币奖励(区块奖励、交易费),以此激励他们继续挖矿。在工作量证明中,其它节点通过检验该区块数据的哈希值是否小于预设值来验证该区块的有效性。
    由于算力的供给有限,抑制了矿工的作弊行为。攻击网络的成本很高,因为除了要投入高昂的硬件和电力成本,还会造成潜在挖矿利润的流失。
    该图片很好地显示了比特币等代币是如何使用工作量证明来抵挡恶意攻击的。

    e0d3d7a2a65748b1b6b8423f105dd58c.png

    e0d3d7a2a65748b1b6b8423f105dd58c.png


    如果有读者对链分裂(即分叉或链重组)是如何在有争议的情况下发生感兴趣的话,建议阅读这篇文章。
    工作量证明提供了所需安全性,并且迄今为止已被证明很有效。但是这非常耗电:

    7ac8cdcec5f44c86858b641eec3e85fb.png

    7ac8cdcec5f44c86858b641eec3e85fb.png


    几乎所有非洲国家(各自)的耗电量都比不上比特币矿业。
    权益证明(PoS)
    在继续阐述之前,先让我将领导者选举(即选择下一个区块的参与者)类比成彩票:
    就彩票而言,从概率上来说,如果Bob买的彩票比Alice多,他赢的可能性就会更高。

    同理可得:
    就工作量证明而言,如果Bob拥有的算力和电力都比Alice多——因此能够计算出更多的输出值——他赢(挖出下一个区块)的可能性就会更高。

    同理又可得:
    就权益证明而言,如果Bob的权益比Alice多,他赢(“挖出”下一个区块)的可能性就会更高。

    权益证明用权益替代了工作量证明在电力和算力方面的要求。权益指的是参与者在一段时间内愿意锁定的代币量。作为回报,他们成为下一个领导者并选择下一个区块的可能性是与他们所下的赌注成正比的。目前有几种代币使用纯权益证明,如Nxt和Blackcoin等。

    967f46a23f2b40bfabd407231be6f6aa.png

    967f46a23f2b40bfabd407231be6f6aa.png


    权益证明的主要问题是所谓的“无利害关系(nothing at stake)”问题。从本质上来说,该问题主要是,在出现分叉的情况下,权益持有者有动机在由分叉形成的两条链上都下赌注,更有可能出现双重支付问题。
    为了避免上述问题,混合共识算法出现了,例如Decred就使用了工作量证明和权益证明的结合算法。以太坊基金会通过 Casper The Friendly Ghost 和 Casper The Friendly Finality Gadget 对安全的分布式权益证明协议进行了积极的研究。

    结语
    在本文中,我们讨论了工作量证明和权益证明的概念。目前,它们都是实现拜占庭容错的共识算法,实际运用于如今的区块链系统之中。
    其他共识算法还包括实用拜占庭容错(即PBFT,Practical Byzantine Fault Tolerance,用于Tendermint)和分布式拜占庭容错(即Distributed Byzantine Fault Tolerance,用于NEO)等。
    谢谢James Martin Duffy。

    原文链接: https://medium.com/loom-network/understanding-blockchain-fundamentals-part-2-proof-of-work-proof-of-stake-b6ae907c7edb
    作者: Georgios Konstantopoulos
    翻译&校对: 闵敏 & Elisa
  • 回复

    使用道具 举报

    发表于 2018-1-31 19:14:56 | 显示全部楼层
    不明觉厉
    回复 支持 反对

    使用道具 举报

    发表于 2018-2-3 17:14:21 | 显示全部楼层
    虽然讲的很详细,可是我还是一脸懵逼
    回复 支持 反对

    使用道具 举报

    楼主 发表于 2018-2-3 18:20:13 | 显示全部楼层
    一个是多劳多得,一个是吃存款利息。
    回复 支持 反对

    使用道具 举报

    发表于 2018-2-6 21:09:30 | 显示全部楼层
    这是 干点什么都的学习啊
    回复 支持 反对

    使用道具 举报

    发表于 2018-2-9 01:16:58 | 显示全部楼层
    哈哈赠点分 好逛窑子
    回复 支持 反对

    使用道具 举报

    发表于 2018-2-9 13:00:47 | 显示全部楼层
    说的很详细!
    回复 支持 反对

    使用道具 举报

    发表于 2018-2-10 08:14:24 | 显示全部楼层
    是怎样的
    回复 支持 反对

    使用道具 举报

    发表于 2018-2-10 13:34:09 | 显示全部楼层
    说的很详细!
    回复 支持 反对

    使用道具 举报

    发表于 2018-2-13 01:29:50 | 显示全部楼层
    都是专家
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表