PoW工作量证明

PoW是Proof of Work的缩写,即工作量证明的意思。在《拜占庭将军问题》中介绍过,比特币系统中引入了“工作量”的概念,有意降低了信息传递的效率,让矿工必须完成一定的工作量,才能够在全网广播消息。

(孩子第一次为我的文章配图,厉害吧)

以工地的搬砖任务为例,一群工人们(矿工)向火车的车皮(区块)里搬砖,每个工人身边都有一个集装箱,这个集装箱与火车车皮一样大,正好能够装满1000块砖。

工人们只能往集装箱里搬砖,谁先装满集装箱,就把这个集装箱放到车皮里,领取12.5元的工钱(实际上并不是马上拿走,100节车皮之后才能真正取走)。只有第一个搬完的工人能够获得奖励,在这个集装箱放入车皮的同时,其他工人的集装箱里也装了一些砖头了,全部作废,重新搬砖,继续投入到下一节车皮的竞争中。

比特币世界里的矿工(工人)也是这样辛苦,这里的矿工是一堆安装了专门芯片的电脑,它们的工作就是进行HASH计算(准确讲是SHA256,高级搬砖工作),谁先算完,写入一个新区块(车皮),得到奖励的12.5个BTC(发行新币),其它矿工则白忙活,继续进行下一轮的竞争。

因为电脑的计算速度太快,所以要安排上亿次的HASH计算,保证有矿工在10分钟左右能够完成任务。这种工作量,既是一种发行货币的过程,也是一种验证其他人交易的过程,从而保证了整个比特币系统的安全性。

简化的计算过程

假设我有一个区块信息是“abcde",要在其后面补一个随机数,使得HASH结果以0开头。我在“区块链生存训练”饭团里介绍过HASH的作用,HASH的加密特性使得原始数据即使发生极其微小的改变,得到的结果也有巨大不同。

所以我只能一个数一个数地尝试,一直试到随机数5的时候,此时的字符串为”abcde5",SHA256的HASH结果为051f2f...d7b9e1,以0开头,我找到了一个解,我就可以把"abcde5"加到新区块上,拿走12.5个BTC。

区块链正如其名,是一个区块与另一个区块链接起来而成的,一个区块中用于参与工作量计算的主要有三部分数据(为了说明HASH计算的工作量,我对整个计算过程进行了极大地简化,更详细的细节请自行参考《精通比特币》):

1)父区块HASH:用于指向父区块,当一个区块一个区块地链接起来后,想篡改一个区块,会影响子区块,再会影响孙区块,从而带来指数级的巨大计算量,从而使篡改几乎不可能。

2)交易信息指纹:一个区块内通常有几百笔的交易信息,也用HASH算法产生一个指纹(准确地讲是Merkle树,以后再介绍),只占用32个字节。

3)随机数nonce:矿工所做的事就是找这个nonce,通过不断地尝试变化这个nonce,进行上亿次的HASH计算,得到满足要求的结果。

假设父区块HASH为“abc",交易HASH值为”de",不断变化nonce,计算HASH值,假设nonce=5时,满足工作量目标(以一个0开头,这个术语以后再解释),获得到了全球共享大账本的记账权,然后将这个区块广播出去。

其它矿工收到这个区块后,首先要进行验证,验证别人是不是经过了大量计算并满足目标,而这个验证的计算量则非常非常小,0.001秒都不用。

就像前面说的搬砖一样,搬1000块砖的过程非常辛苦,但其它工人只需扫一眼就知道他是否完成了工作量(因为1000块砖正好装满一个集装箱),其它工人一看集装箱放到了车皮上(产生了新区块),则放弃当前的一箱砖,开始新一轮的工作(下一区块的竞争)。

小结:

  • 工作量证明既用于发币,也是验证交易的有效性,保证比特币的安全
  • 计算过程中不断调整nonce,要进行数亿至万亿次的HASH运算
  • 先完成计算的获得记账权,写入一个新区块,向外广播
  • 其它矿工只用非常非常少的计算量就可以完成验证
  • 竞争失败的矿工,取得最新区块信息,开始新一轮竞争

我在5月23日开办了“区块链生存训练”饭团,现在成员超过180人,已经讲解了众多概念:比特币地址、Block区块、区块链、确认、Mining挖矿、矿工费、HASH哈希、矿工、工作量证明、私钥、公钥、交易、钱包、PressOne、ICO等等,并且饭团内还有热烈的讨论。有人预测区块链将是未来的价值互联网的基础协议,想要活在未来,就要尽早学习这些内容。

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-07-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

干货 17年大盘点:区块链领域常见术语详析

以下是区块链领域中的一些常见术语,供有兴趣了解区块链技术的朋友参考。 1、地址(Addresses,加密数字货币地址)用于在网络上接收和发送事务。地址是一个字...

2356
来自专栏企鹅号快讯

以德交易所DNS遭黑客劫持 已损失超过26.6万美元

“用指尖改变世界” ? 以德(EtherDelta)是用于以太坊(Ethereum)与ERC20兼容代币(已经部署在Ethereum区块链上的代币)之间进行交易...

19210
来自专栏企鹅号快讯

比特币开始执行比特币支付协议发票减少钱包的支持

本周,加密货币支付处理器Bitpay将BIP70支付协议应用到他们的借记卡比特币到美元的发票中。根据该公司的说法,该功能将防止常见的支付错误,并为中间人攻击提供...

2065
来自专栏区块链大本营

比特币都有十年了,可能你至今还不知道怎样使用它才安全!

十年前,比特币刚刚出现时,中本聪(Satoshi Nakamoto)着重强调的是它作为数字化的“电子现金”的货币潜力。然而,一经面世,比特币便成为互联网地下世界...

721
来自专栏程序员宝库

区块链入门教程

文章作者:阮一峰(http://www.ruanyifeng.com/) 原文链接:http://www.ruanyifeng.com/blog/2017/12...

3286
来自专栏友弟技术工作室

区块链入门总结区块链

新交易创建 -> 交易广播网络 -> 交易验证 -> 验证结果通过网络广播 -> 交易写账本

2802
来自专栏企鹅号快讯

漫画玩转区块链,让区块链不再难懂

来源及作者:程序员小灰 ? ? ? ? ? ? ? ? 什么是区块链? 区块链,英文 Blockchain,本质上是一种去中心化的分布式数据库。任何人只要架设自...

22110

数字令牌的入门介绍

最近数字令牌已经出现,首先是对比特币等加密货币兴奋不已,然后用数字令牌来代表区块链上的不同资产。他们是什么?你如何数字化一个令牌?它为什么如此重...

6887
来自专栏互联网杂技

区块链入门教程

区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来。 可是,简单易懂的入门文章却很少。区块链到底是什么,有何特别之处,很少有解释...

3356
来自专栏程序你好

区块链 - 区块链基础知识入门

2351

扫码关注云+社区

领取腾讯云代金券