❶ 什么是工作量证明
在区块链里很重要一个概念就是工作量证明,英文全称为Proof of Work,缩写为POW。相信很多人刚接触到这个概念的时候都很费解,“ 咦,工作量证明?意思是要证明我做了多少工作吗? ”;我更相信很多投资比特币或者被一些所谓的“ 可以一夜暴富 ”的“ 新型数字货币 ”所忽悠的投资人,对这个概念更加“ 耳熟能详 ”,因为他们听到太多那些“货币”宣称自己有更安全的算法、更可靠的工作量证明机制。 因为听得多,似乎很懂,但就是不真正理解它,这种认知上的不对称,往往是传销币等妖物有机可趁的主要原因。
之前给大家介绍“拜占庭将军问题”的时候,提到过拜占庭将军解决的主要是多个节点之间如何取得共识的问题(如果你忘了当时的故事背景是怎样,那再去好好翻翻之前的课程吧),但是并没有深入介绍如何进行共识。如何进行共识,是区块链里最关键的一个问题,也是被讨论得最多的一个,在区块链诞生之前,分布式系统领域里对共识算法就有很多研究,但是这里并不打算展开了。
1、工作量证明真的是用来证明你做了多少工作
其实,正如本文第一段提到的,很多人刚开始理解的那个概念,“工作量证明主要用来证明一个人做了多少工作”,基本是正确的,计算机领域并不是只有一些生涩的概念的,这个概念通俗易懂,反倒让我们困惑了。
还是要回到拜占庭将军问题的故事场景,在那个故事里,我们应该信任谁,谁能担此大任成为那个英雄卓绝的将军呢?
可能因为城邦之间信息在不断传输,传输量太大,每个城邦的将军都王婆卖瓜,自卖自夸,到底该信任谁,基本上很难区分。细心的朋友可以好好发挥一下想象力。其实,有种最简单粗暴的方法: 看谁最聪明!谁最聪明,我们就相信谁。
谁最聪明这个问题其实太主观了,没办法,只能拿实力说话。就像我们经历过无数的考试一样——来,将军们,大家做道题吧,解答准确且最快的人胜出。
于是,智多星旁白:请听题儿, 请问在一个值比如123456789,后面追加一个5位随机数,请找到一个随机数,使得所计算的哈希值前5位都是0。
将军们千万不要懵逼,你不知道并不代表别人不知道,于是那个最聪明的将军快速的算了出来,并 写上自己的名字 ,交了试卷。老师一验证,完全正确,于是选出他作为那个拜占庭将军,号令群雄。
如果你不知道哈希算法,请回去复习之前的课程。另外,这里提醒一点,将军必须写上自己的名字表明是自己算对的这道题,这在区块链里也很重要,它表示签名表明自己胜出,最后还能获得奖励哟。
以上介绍的这个有的意思的过程,就是所谓的工作量证明。
2、怎么理解挖矿,矿机,矿池?
工作量证明最常见是在比特币里,当大家还不太理解这个玩意儿的时候,已经很多地方见到“挖矿”“矿机”这些宣传字眼了,那个时候我们根本不能理解的是,在电脑里面怎么挖矿?脑洞完全打不开啊。我也困惑了很久,当在淘宝上看到有人卖矿机的时候,我一脸鄙夷,说这一定是忽悠。
很多时候鄙视其实更多是自己不理解造成的,直到它长成庞然大物,直到罗胖提到的“旁边有个物种坐了起来”,才发现我们理解地似乎有点晚了。即便如此,我们不能因此放弃对一个新鲜事物的认识呀。
所谓挖矿,其实就是计算机对上面提到的工作量证明进行的一个运算过程。大家或许会奇怪,将军算题这么高大上的一个比喻到了这里怎么变成挖矿这么苦逼的一个概念呢?其实,拜占庭将军只是以一种有趣的方式描述了故事背景,及工作量证明的一些细节,而挖矿更贴近区块链里工作量证明的一个过程——因为,确实很苦逼!
其实,上面提到的“智多星”或者“老师”,就是那个神秘人物中本聪,比特币的发明人(或组织)。中本聪出的这道难题说白了就是一个傻瓜式地,只能吭哧吭哧,老老实实地,从1,2,3...n不断尝试计算的一个计算题,也即密码学里提到的 暴力破解 的概念。这种计算过程,枯燥乏味,耗费精力时间,这么苦逼,用“挖矿”形容最好不过了。而这个“矿”就是比特币,一种如黄金般稀缺的玩意儿。
但是我们不要忘了,这种机械化的计算是计算机最擅长的事儿了,于是所有的都交给计算机吧,这才有了“矿机”的概念。随着技术的发展,大家发现,计算机功能太强大,完全没有必要全部用来进行这种计算,于是不断精简,将挖矿算法集成到一些芯片里,不仅节省能源,而且算得更快。这就有了CPU挖矿,GPU挖矿,FPGA挖矿,ASIC挖矿等这类说法。
而矿池的出现,是随着比特币数量的总数限制,以及四年减半的硬性要求,挖矿到后期竞争越来越激烈,挖到比特币的难度越来越大,于是只能抱团并肩作战,这个团体就叫做“矿池”。有矿机的人可以选择加入某个矿池,矿池集合所有矿机的力量,进行类似上面算术难题的计算;在计算时,将随机数号码段进行分配,不同号码段交给不同的矿机计算,于是计算的效率大大提升,这样便可以集合作战,共享收益。
其实上面介绍的一些概念都非常初级,目的还是希望很多没有相关基础的人都能搞懂,只有把这些最基本的概念都理解了,走到后面才更容易,不是吗?
❷ 比特币的工作量证明要怎么理解
客户端不需要知道真正的随机数,客户端(也是系统)其实就是要“随机数”所求的哈希值小于某个值。
如:041665464(随机数)的SHA256的值是:(16进制)0FFFFFFFFFF...(假如)
它不符合小于00FFFFFFFF的规定,所以不是区块。
041665465(随机数)的SHA256的值是:(16进制)000FFFFFFFF...(假如)
它符合小于00FFFFFFFF的规定,所以它是区块。
实际上找小于一个哈希值的随机数很难的,这正是工作量证明的原理。
要小于的这个值(00FFFF...)是可变的(难度),这个随时间和计算力的大小而变化。
❸ 什么是工作量证明
工作证明(Proof Of Work,简称POW),顾名思义,即工作量的证明。通常来说只能从结果证明,因为监测工作过程通常是繁琐与低效的。
比特币在Block的生成过程中使用了POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block
Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block
Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block
Hash。
工作证明机制看似很神秘,其实在社会中的应用非常广泛。例如,毕业证、学位证等证书,就是工作证明.
❹ FileCoin: 有用的工作量证明
有用的工作量证明(Proof of Useful Work)是由著名的去中心化存储项目 FileCoin 在它的白皮书里提出来的一个概念。工作量证明,Proof of Work,POW 是实现区块链的一个重要共识方式,FileCoin 要实现一个基于区块链的存储平台。所以它也要做共识,它选择的就是工作量证明共识。
首先我们来解释一下常规的工作量证明。它是区块链实现共识的一种方式。是比特币采用的方式,所以,工作量证明就是俗称的“挖矿”。比特币做为一个去中心化的点对点交易系统,要在不同的节点上维护一个共同的完全相同的帐本,来记录所有的交易,而且确保交易不会重复,不会一笔钱多花,就需要一个维护这个账本一致性的规则。大家一起遵守这个规则,就是共识。区块链常用的方法是,把这个账本分成很多页,每个页就是一个区块。每个区块由一个节点来记账,然后分发给其他节点复制,这样所有节点上的账本都是一样的。但是每个区块都由哪个节点来记录,就需要一个大家都能遵守的规则。比特币采用的方法,是让所有的节点做一道简单的数学题,题目很简单,但是计算量很大,一般要10分钟左右才能做出答案来。得到答案虽然很费时间,但是验证答案是否正确很容易。然后所有的节点同时做题,第一个做出来的节点,就得到下一个区块的记账权。因为每个区块都只有唯一一个最早做出题的节点,所以,每个区块的记账权是唯一的,而且也是很容易被其他节点验证的。节点一旦验证到其他节点得到了区块记账权,就必须复制区块,加到本地区块链中,同时开始下一个区块记账权的竞争。通过这种方式,比特币就能确保所有节点的区块链是一致的。
节点通过大量计算竞争区块记账权的的过程,就是工作量证明。所以,工作量证明系统(或者说协议、函数),是一种应对拒绝服务攻击和其他服务滥用的经济对策。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。这个概念由 Cynthia Dwork 和 Moni Naor 1993 年在学术论文中首次提出。而工作量证明(POW)这个名词,则是在 1999 年 Markus Jakobsson 和 Ari Juels 的文章中才被真正提出。
实现区块链共识的方式还有很多,如POS,DPOS,POA,PBFT等等,但是工作量证明是唯一被时间验证过(11年)的在公链上运行的区块链共识机制。
工作量证明存在一个什么样的问题呢?还是用比特币为例。比特币节点为了获取出块权做得那个数学题,叫哈希运算。计算量非常大,每一台参与比特币挖矿的矿机都要时刻进行这个计算,耗费大量的电力。这个计算不像其他的如大数据处理的计算,可以产生一些价值,它的唯一目的,就是竞争出一个节点,成为下一区块的出块者。目前比特币每年消耗电量约25.5亿瓦,这相当于全球电量的0.5%,是爱尔兰一年的耗电量。反对POW的人纷纷指责挖矿将电力资源浪费在虚无缥缈的数字货币上,还称之为自由主义的“泔水”。
但是,认为POW是浪费的电的人不知道,正是能源和算力打造了比特币安全不可攻破的体系。
一张100元的现金不只是你我认为他值100,而是整个社会群体都认为他值100,价值就是来自于共识。比特币是社区行为,来自不同国家的人聚集到社区,用互联网来建立秩序,它的意义也是来自于群体共识,只要大家都相信比特币有价值,只共识存在,那么他就有价值,和法币一模一样。所以产生价值认同并不一定需要国家来驱动,比特币改革了一种传递信任的载体和媒介,千百年来,人类社会通过多少流血战争建立的政权和共识,现在兵不血刃,只是耗费些电力就实现,岂不是更先进。
总结而言,要想设计一个去中心化而且安全的数字货币,能源和算力是必要的代价。工作量证明是以去中心化形式构建安全产权认证系统的唯一方案。所以认为POW是浪费的电的人不知道,正是能源和算力打造了比特币安全不可攻破的体系。现在比特币全网算力已经达到一个非常恐怖的地步,任何人想要发动51%算力攻击已经是不可能的事情了,POW算法使比特币系统牢不可破。
为缔造价值而产生的消耗不叫浪费。
但是,如此多的算力,是否可以用来创造更多的价值呢?用 FileCoin 的话说,工作量证明,还有没有其他用途呢?
FileCoin 是分布式存储行业的明星项目。他的开发团队 Protocol Lab 就是开发 IPFS 协议的团队,以至于很多人都分不清FileCoin 和 IPFS 的区别。可以说是2017年 FileCoin 的1CO,把这个行业推向巅峰,也引出了一系列的同类型项目。本文无意于赞誉或者贬低这个项目,只想结合自己从事这个行业的经验,表达一些自己的观点,尽量做到客观公正。希望对从事这个行业的人有一些启发。
FileCoin 在白皮书中提出要实现一个有用的工作量证明,实际上就是认可了,要打造一个安全不可攻破的区块链,就必须消耗工作量。但是,他们不希望为这个工作量做出的计算完全被浪费,所以想把这个工作量利用起来。所以,他们想到的方法是,在工作量证明里加入存储空间的使用率。这样,所有的节点为了形成共识,就必须提供存储空间来存文件。这个存储空间就可以存用户数据,就是有用的。
那我们来看一下FileCoin是怎样实现这种有用的工作量证明共识的。
Filecoin采用的共识机制并不是简单的工作量证明,而是一种叫做预期共识(Expected Consensus,简称 EC)的机制。和其他主流共识机制目标一样,让矿工争夺某一个高度唯一的出块权而获得奖励。这个获得出块权的矿工叫做 Leader。在每一轮的出块争夺中,为了保证账本的可靠性,都有一个唯一的 leader 来进行记账。
也就是说,共识的核心就是选择谁来当 Leader。选 Leader 的方式一般有两种,交互式或者非交互式。交互式是要矿工之间互相投票的。比如 PBFT 就是交互式的,几个参与选举的人通过互发信息,得到多数票( 超过 2/3 )的人就是 Leader。预期共识采用了非交互式的方式来选举 Leader。参与的各方根本不给彼此发消息,而是每个节点各自独立私下进行运算。最后某个节点说,我赢得了选举,然后提供一个证明,其他人可以很容易就验证,他确实赢得了选举。这个验证方法就是零知识证明。
预期共识机制会为区块链网络预设一个出块的期望值。比如每1个纪元(epoch)生成1个区块(block),但也有一个纪元可能出现空块或多个区块的情况。所以在 Filecoin 中,每个高度不是一个区块,而是一个区块集,叫做 TipSet,这个 TipSet 中可能包含了多个区块。所以实际上 Filecoin 是 TipSet 链。预期共识无法保证每一轮只选举出一个 Leader,所以会出现一轮中有多个 Leader 的可能,这样链式结构就变成了DAG的网状结构。所以 FileCoin 还会对 block 赋权重,实现有效收敛。
FileCoin 采用的 EC 共识有一个好处。对于传统的 POS 共识机制来说,有一个重大问题就是无法控制分叉。也就是说,由于挖矿成本低,参与者可以同时挖多个链获取利益。而预期共识对这一点做了设计,那就是通过权重和抵押机制来促使矿工选择一条最好的链,对同时挖多个链的矿工进行惩罚,这样可以非常快速地促进收敛。这说明 POW 和 POS 共同使用会是一种好的方式。
每一个矿工获得出块的可能与其当前有效存储量占全网总存储量正相关。这种期望共识机制其实是更像是 POS 权益证明,只是它将POS里边的权益(Staking)换成了有效存储占比。但是矿工的有效存储从何而来呢?是通过存储用户数据得来。如何证明矿工存储了用户的数据,FileCoin 创造出一个新的证明机制叫 POST 时空复制证明。这个 POST 就是 FileCoin 的工作量了。把耗电的算力换成存储有用数据的存储空间,无意义的军备竞争变成了存储服务市场竞争。这确实是 FileCoin 的进步之处。只不过,为了成功的出块,矿工通过预期共识被选为出块节点后,必须在一个块的时间里(现在是45秒)做个 POST 证明,成功提交,才能出块。否则就失去机会。所以,为了确保矿工能在指定时间内出块,最终官方还是决定要使用 GPU。虽然这 GPU 不是像工作量证明那样一直不停的工作,但是在整个实现共识的过程中还是出现了跟有用的工作量证明思想相违背的耗能计算。
还有,谈到预期共识的时候,我们说到每一个纪元出块都不是一个块,而是一组块,那么纪元这个概念就很重要了。怎么控制纪元呢?每个矿工在参与选举前,需要先生成一个 Ticket,这个 Ticket 实际上是一个随机数,他需要走一个 VDF 和 VRF 的流程,这个 VDF 全称 Verifiable Delay Function,可验证的延时函数。他的计算流程是串行的,需要花费一定的时间,并且这个时间无法通过多核并行的方式进行缩减。这保证了每个矿工产生 Ticket 时必须要消耗的时间,没有人可以通过优化硬件的方式来获得加速。听上去这函数很完美,可是,这个 VDF 根本还不存在!现在 FileCoin 测试网直接使用了一个等待函数 sleep,这是 UDF,Unverifiable Delay Function。现在最接近的 VDF 解决方案,也是需要消耗大量计算资源的。说白了,还是要耗电,还是不环保。
所以,有用的工作量证明,依然只是一个美好的愿望,理想很丰满,但现实很骨感。被誉为下一个比特币的 FIL,还要继续为实现这个颠覆性的共识而努力。
总结一下FileCoin存储矿工获取激励的流程:用户存储数据,支付FIL费用 -> 矿工存储数据 -> 生成复制证明 -> 完成时空证明 -> 经过EC共识,选出出块Leader -> 获取打包权 -> 矿工获取FIL奖励
在这个流程图上,可以看到,矿工可以在两个地方获取奖励。一个是存储用户文件的时候可以得到用户的FIL奖励。一个是在获取区块打包权后获得FIL。而得到区块打包权的一个前提就是存有足够多的用户数据。所以,在存储需求不够大的情况下,矿工会从用户那里收取很低廉的费用。在用户不够的情况下,甚至会倒贴钱自己付FIL存数据,只为能够存足够多的数据,在 EC 共识中被选成 Leader 得到打包奖励。这样产生的效果是,FileCoin 对用户非常友好,存储费用非常低。所以,一定会吸引很多的应用来这个平台上做开发。但是缺点也很明显,如果存储量不够大,矿工根本没法跟其他人争夺出块权,所以得不到奖励。最后整个平台会朝着大矿工,大矿池的方向发展,这跟 FileCoin 想把所有闲散服务器利用起来实现分布式存储的初衷是违背的。或者说,一定要等到这个行业具有一定规模,技术更成熟,才有小矿机挖矿的机会。
我们先来简单的讲一讲中心化存储和去中心化存储各自的利弊。中心化存储设备统一管理,可靠性好,性能高,去中心化存储数据天然分散,易于流通,容灾性好,但是可靠性低。从经济角度来说,中心化存储是重资产投入,成本高。去中心化存储通过区块链激励层,用户自行加入,轻资产,可降低存储总成本。未来应用数据的存储和处理还会是以中心化存储为主,而去中心化存储因为是分布式网络,主要可用于热门数据流量分发。同时,因为没有中心化所有权,可以成为去中心化应用的首选。
市场上有一种说法是,去中心化网络适合冷数据的备份,其实这并不是去中心化存储的优点,实在是因为把热数据放到去中心化网络上太不可靠,处理性能也跟不上。所以,如果去中心化存储能实现一定的规模效应,大大降低存储成本,把冷数据备份当作核心业务,并把目标定位在今天因为成本太高没被企业存储的冷数据,会是一个很好的发展方向。
如此说来,从技术上讲,去中心化存储并不一定比中心化存储有优势。如果能推行一种新的模式,把去中心化的经济激励和中心化的存储合在一起,就能吸收两者的长处。真正实现有用的工作量。FileCoin 未来可能促成的大矿场模式的数据中心,可能更有市场。
在11年后的今天,比特币并没有实现它成为一个点对点的电子支付货币的初衷,但阻止不了人类前赴后继的去买它,拥有它。同样,我相信 FileCoin 已经得到足够大的社群,矿工和开发者的支持,即使在可预见的未来,它不会促成分布式存储应用的全面落地(也许这从来不是 FileCoin 的目标),但我还是相信会有很多人会因为它的共识去购买它,持有它。上升到哲学层面,人类在为真理买单。
那么在实际生活中,何为有用,或者说,我们到底是在用存储做共识还是用共识做存储?FileCoin 是前者。FileCoin 想要基于存储工作量实现的去中心化的共识,理论上是完美的,追求完美,人类是要付出代价的。这也是为什么在这个项目上我们等待了这么长的时间。但是一旦实现,它可能会为人类带来巨大价值,对市场带来无穷大的号召力。
只不过去中心化不是万物的灵药。中心化的一个最大优势是它的效率非常高。像dPOS或者联盟链这样的弱中心化共识兼顾两者优势,能更快速的把应用推向市场,提前启动分布式存储行业,推进分布式存储应用落地。所以,我们既追求用存储做共识,也追求用共识做存储,根据实际需求来做出我们的选择。在这个过程中,相信区块链也会进一步发展,逐步优化,变得越来越有用。
❺ 工作量证明机制(pow)是什么
工作证明(Proof Of Work,简称POW),顾名思义,即工作量的证明。通常来说只能从结果证明,因为监测工作过程通常是繁琐与低效的。
比特币在Block的生成过程中使用了POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block
Hash。
工作证明机制看似很神秘,其实在社会中的应用非常广泛。例如,毕业证、学位证等证书,就是工作证明,拥有证书即表明你在过去投入了学习与工作。生活大部分事情都是通过结果来判断的。