比特币工作量证明,“法外之地”的法

简介: 在工作量证明的区块链中,系统会根据算力大小来选取打包的节点,对于节点来说,单纯的打包和数据上传非常简单,不过,系统需要选取一个特定的节点来处理某件事,为了避免众多节点对同一件事打包而引起不必要的分叉,比特币通过前文中提到的哈希穷举,增加打包难度,以延长打包时间。

PoW(Proof of Work,工作量证明)是区块链技术中基本的、常见的一种共识机制。加密币中的挖矿,其实就是运用工作量证明来进行的。

一、PoW的起源

工作量证明最早是一个经济学名词,指系统为达到某一目标而设置的衡量机制。通俗来说,就是当你完成一定量的工作后,确认这一工作量的证明。因为监测整个工作的过程是非常的耗时的,而只通过检验工作结果来确认工作量,显然效率要更高。

工作量证明系统(或者说协议、函数),是一种应对拒绝服务攻击和其他服务滥用的经济对策。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。这个概念由Cynthia Dwork 和Moni Naor 1993年在学术论文中首次提出。

在1999年,Markus Jakobsson and Ari Juels两人将pow概念引入计算机体系,工作量证明(PoW)这个名词,在两人的文章中被真正提出。起初,PoW被用于抵挡拒绝服务攻击和网络爬虫,后来在反垃圾邮件中被广泛使用。

反垃圾邮件系统哈希现金(Hash Cash),其设计理念是一个正常用户写一封邮件是需要一定的时间,而发送垃圾邮件者是无法接受这个等待的时间,PoW系统使垃圾邮件发送者需要更多的时间来发送邮件,增大他们的成本,起到抵挡攻击的作用。

PoW共识机制是基于哈希函数本身复杂的运算,通过给定的初始值和简单的值递增规律,利用其碰撞原理,找到特定的碰值,可以通过对碰值的调节,实现对于工作量的调节。

_

二、哈希函数

哈希函数(Hash Function)即散列函数,输入一个x,会得出相应的输出H(x)。其中,这里的x可以是任意长度的字符串,而输出的H(x)却具有固定长度,哈希函数正是将任意长度的数据映射到有限长度的域上。在计算过程上,虽然复杂,但非常高效。

比特币这种加密系统使用的哈希函数,还需要同时具备免碰撞、匿名性、防篡改等特点。

免碰撞指的是:如果输入的x≠y,绝不会出现H(x)=H(y)的情况,即输入两个不同的数据块,其哈希值一般来说也不会相同。理论上相同的可能性并非绝对没有,但概率极小。所以,对于一个给定的数据块,要找到与它哈希值相同的数据块极难。

哈希函数的隐匿性是指,对于一个给定的输出结果H(x),想要逆推出输入的x,在计算上是不可能的。

而对于数据块的任何一处小小的改动,哈希值随之产生的变动都会非常明显,这一点构成了哈希函数的防篡改特点。

同时,在这一函数中,穷举法是能够使得哈希值H(x)落在特定范围的最好方法。在比特币的区块链上,使用哈希穷举实现工作量证明能够拥有随机和易验证两种特性,这两种特性将于后文中提到。

三、工作量证明的原理

在工作量证明系统中,客户端完成一定难度的工作,得出一个结果,验证者只需通过验证这个结果就能检验客户端是否做了相应的工作。这种方案的一个核心特征是不对称性:工作对于请求方是适中的,对于验证方则是易于验证的。其工作流程如下:

_1

对于任意一串字符,给出了一定的工作量要求,对这串字符进行变更,使其得到具有特定规律的一个结果,若得到这个结果,则验证通过。为了达到这个目标,需要不断地对这串字符进行哈希计算,直到计算量达到一定次数时,才能得到要求的变更后的数列。

在计算之前,根据工作量要求可以得出预期的计算次数,这个预期的次数和实际不一定完全吻合,但会大体接近,如果重复多次,会发现这确实是一个符合统计学规律的概率事件。而
这里提到的预期计算次数,其实就是要求的工作量。

以上是工作量证明的基本原理,比特币系统中的工作量证明机制与其类似,但更为复杂。

四、比特币的工作量证明

在工作量证明的区块链中,系统会根据算力大小来选取打包的节点,对于节点来说,单纯的打包和数据上传非常简单,不过,系统需要选取一个特定的节点来处理某件事,为了避免众多节点对同一件事打包而引起不必要的分叉,比特币通过前文中提到的哈希穷举,增加打包难度,以延长打包时间。

简言之,就是每个节点都需要在10分钟内找到一个随机数,并保证这个随机数加上上文所说的哈希运算,能够满足一定的规律。为了找到这个随机数,只能通过不断尝试新的随机数,不断的运算。而随着运算量的增大,目标范围也会不断缩小。

_2

哈希穷举的随机性和易验证性在这里体现了出来。首先,即使知道了这个随机数的范围,也只能通过大量计算去得到;然后,如果有人找到了随机数,那么其他节点能够很容易地检验这个结果的正确性。

如果算力增强,就需要修改难度以增加计算次数,比特币中就有修改难度的规则。所以,想要找到这样一个随机数,计算量要远远大于预期的工作量。

为了鼓励节点不断地对数据和信息进行打包,比特币的区块链网络设置了奖励,即支付给打包(记账)节点的奖励和交易费。

打包奖励是指创建区块的节点会获得一定数量的比特币作为奖励,奖励的数量随着比特币区块的生成而减少。

交易费即使用比特币转账时支付给记账节点的费用,这是支持节点工作、维护区块链自动运转的重要因素。

这两种打包奖励都是通过工作量证明来进行,在比特币中也就是为人所熟知的挖矿行为。而衍生而来的矿机,在一开始其实是个人计算机这样的运算设备,随着算力的提高,难度的增大,专业矿机诞生。自始至终,算力的竞争从未结束,而难度和算力也在不断进行博弈。

工作量证明的优点是足够安全、公平和去中心化,其免碰撞、匿名性与不可篡改的特点奠定了比特币区块链技术的核心;但它的缺点也很明显,耗时长效率低,算力提高的同时耗费了电力,除了挖矿,这些强大的算力难以转化成其他资源。

文章来源:BB财经(www.bbcaijing.cn),如有侵权请联系删除!

相关文章
流动性挖矿系统开发技术分析丨DAPP/LP流动性挖矿系统开发(逻辑及功能)丨流动性挖矿源码交付
Pledge and liquid mining are well known.Recently,the two have been combined-liquid pledge and liquid pledge.The English name is Liquid Staging,which refers to the process in which users obtain liquidity through their pledged assets.Liquidity pledge allows investors to pledge their assets,and also al
|
监控 机器人 大数据
探讨:高频量化合约对冲交易软件开发策略实现代码执行教程
探讨:高频量化合约对冲交易软件开发策略实现代码执行教程
|
区块链
区块链实战(二)PoW工作量证明的实现
区块链实战(二)PoW工作量证明的实现
132 0
区块链实战(二)PoW工作量证明的实现
|
区块链
从“工作量证明”解密“区块链”
在一个互不认识、没有中心、缺乏互信的环境里,大家只需要在最长的区块链上工作,就能保证系统信息的真实性,这就是“工作量证明”机制。
1143 0
|
算法 区块链 数据安全/隐私保护
|
存储 区块链
区块链除了发币其它功用估计不值钱
区块链发币上作用似乎被低估了,但其它方面的作用很可能被高估了
1139 0