PRESSone白皮书科普系列短文---PoW



  • PoW的英文全称是Proof of Work,译成中文就是“工作量证明”。 顾名思义就是一份证明,用来证实你做过一定量的工作 。

    工作证明相关理念最早于1993年被Cynthia Dwork和Moni Naor提出。
    1996年Adam Back在开发的hashcash中,使用工作量证明机制来反垃圾邮件。
    1998 年PoW作为数字货币的共识机制于 在 B-money 设计中提出。

    PoW的核心在于强迫攻击者作出一定量的工作才能进行接下来的交互操作,这样无形中就给攻击者提高了攻击的成本。

    PoW被更多人熟知是因为比特币采用了该共识,让矿工通过挖矿障比特币的安全。

    PoW挖矿原理

    挖矿就是系统给定一个目标值A,矿工需要找到一个随机数B,B经过hash计算得到C。如果C小于 A ,即hash(B)<A,就是找到了符合要求的随机数,挖到了区块。

    那么,这个B是怎么找到的呢?

    目前唯一的办法就是暴力计算,简单粗爆的不断尝试(如每秒亿万次的尝试),做哈希碰撞,直至找到一个满足条件的随机数。这样谁的算力大,谁最先找到随机数的概率就大。当掌握超过全网一半算力时,从概率上就能控制网络中链的走向。这也是所谓51% 攻击的由来。

    可以看出参与 PoW 计算的人,将付出不小的经济成本(硬件、电力、维护等)。除了第一个找出随机数的人,这些成本都将被浪费掉。但这也保障了,如果有人恶意破坏,需要付出大量的经济成本。

    找到随机数B,使得hash(B)<A在最新的区块高度上成立,就是挖矿成功了,会得到数字货币的奖励。

    0_1543386919924_ff_be_ffbee34df5475d5e249554c0d103c73a62350f23d8d3978273764dc275e77871_副本.jpg

                               图片作品 by 西乔
    

    本文作者已通过PRS智能合约购买该图的商业使用授权许可 (非排他性),价格10PRS。点击阅读原文,即可查阅。

    PoW的优点

    算法简单,容易实现;

    去中心化,将记账权公平的分派到其他节点

    节点间无需共享额外的信息即可达成共识;

    破坏系统需要投入极大的成本,能保障系统的安全。

    PoW的缺点

    挖矿造成大量能源浪费;

    网络性能太低 ,区块的确认时间难较长 ;

    算力容易集中 ,慢慢的偏离了原来的去中心化 。

    目前,采用工作量证明的数字货币有:比特币、以太坊、莱特币和Zcash等。

    阅读原文



  • 一直以为哈希碰撞是要找到一个值和指定值相等。

    之前的帖子讲数字签名的时候也用到了sha256,还有椭圆曲线的非对称加密方法。私钥加密,公钥解密,信息一致性的比对,想当然的就以为工作量证明利用哈希函数也是一样的原理。

    如果是满足某个区间的随机数集合的话, 找到这个数字的难度应该要底很多。



  • @猪鹿蝶 找到了另外几个队哈希算法的补充,可以参考:

    在字符串后面添加一个叫做nonce的整数值,对变更后(添加nonce)的字符串进行SHA256哈希运算,如果得到的哈希结果(以16进制的形式表示)是以"0000"开头的,则验证通过。为了达到这个工作量证明的目标。我们需要不停的递增nonce值,对得到的新字符串进行SHA256哈希运算。

    Hash这个词没有对应的中文意译词,如果让我来意译的话,我会翻译为“数字摘要算法”,基本上能表达该算法的含义,就是从目标对象中提取出一个特征摘要,好像人的指纹一样。
    SHA算法从1993年发布它的第零代,一直到2015年发布第三代,二十二年间已经升级了四次。比特币用到的是第二代算法,简称为SHA-256算法,这里的“256”表示,由这个算法生成的指纹长度固定为256比特。大家可以很容易在网上找到在线生成SHA-256指纹的网页,这个算法是公开的,谁都能用。

    在实际的使用中,256位的二进制数据太长了,使用起来极不方便,还很容易看花眼。于是,指纹通常用十六进制来显示,反正二进制到十六进制是一一对应的。

    不论原始信息有多长,生成的指纹都是一样长的。而且这个指纹还有两个显著特点:一、原始信息只要改变一点点,哪怕只改动一个数字,整个指纹就会发生巨大的变化,毫无规律可循;二、截至本文写作时,世界上还没有任何公开的方法可以从指纹反向计算出原始信息,普遍认为理论上无法破解。

    哈希函数在POW中被用到,在数字签名中被用到,