热门问题
时间线
聊天
视角
工作量证明
来自维基百科,自由的百科全书
Remove ads
工作量证明(Proof-of-Work,PoW)是一种对应服务与资源滥用、或是拒绝服务攻击的经济对策。一般要求用户进行一些耗时适当的复杂运算,并且答案能被服务方快速验算,以此耗用的时间、装置与能源做为担保成本,以确保服务与资源是被真正的需求所使用。此概念最早由Cynthia Dwork和Moni Naor于1993年的学术论文提出[1],而工作量证明一词则是在1999年由Markus Jakobsson与Ari Juels.[2]所发表。现时此技术成为了加密货币的主流共识机制之一,如比特币所采用的技术。
工作量证明系统的核心特性在于其非对称性:证明者需完成适度困难(但可行)的计算工作,而验证者能极高效地验证结果。Hal Finney于2004年透过“可重用工作量证明”(RPOW)概念将此机制应用于数码代币,采用160位SHA-1算法[3]。
Remove ads
背景与发展
工作量证明的早期应用是1997年英国密码学家Adam Back开发的Hashcash系统,该系统要求电邮发送者执行少量计算任务,借此抵御垃圾邮件。其运作基于查找符合特定特征的散列值(如特定前导零数量),此过程需消耗计算资源,形成“证明”机制。
工作量证明算法持续演进以应对新挑战:
技术原理
工作量证明最常用的技术原理是散列函数。由于输入散列函数的任意值,会对应到一个结果,而只要变动一个位元,就会引起雪崩效应,所以几乎无法从反推回,因此借由指定查找的特征,让用户进行大量的穷举运算,就可以达成工作量证明。
我们若指定的16进制值的前四值,求,这样统计上平均约要运行216次散列运算,才会得到答案,但验算只要进行一次就可以了。如果想要增加难度,那就增加指定的位数即可。以SHA256函数举例,假设我们要处理资料Hello World
,并找出前四值为0000的,如果从Hello World0
开始加上一个十进制数ASCII进行穷举猜测,到Hello World107105
时才会得到符合条件的:
0000BFE6AF4232F78B0C8EBA37A6BA6C17B9B8671473B0B82305880BE077EDD9
验算时只要将Hello World107105代入SHA256函数一次即可。
Remove ads
- 挑战-响应协议:伺服器动态生成挑战,客户端求解后返回响应。难度可即时调整,搜索空间通常有界。
- 解决方案-验证协议:客户端自主选择问题并求解(如Hashcash),伺服器验证问题与解的有效性。多属无界概率迭代过程。
加密货币的应用
由于加密货币多由区块链所建构,而区块链本来就要依赖散列函数来做为资料正确无误的担保,所以在加密货币上使用工作量证明,是非常简明的设计。由分散在各处的电脑,竞赛谁能最早找出,搭配原本要打包的资料的穷举猜测值(nonce),谁就等同获得该区块的打包权(记账权)。此猜测值被找出后,与资料、散列值一起打包成块后广播,经多数节点确认与承认,打包者就能获得打包该区块所提供的奖励。[4]一般采用工作量证明的加密货币,好比比特币,会设置成随着参与竞赛的算力增减,而调整找寻猜测值的难度,以维持合理的运作速度。
- 优点
- 架构简明扼要、有效可靠。
- 由于要获得多数节点承认,那攻击者必须投入超过总体一半的运算量(51%攻击),才能保证篡改结果。这使得攻击成功的成本变得非常高昂,难以实现。
- 某种程度上是公平的,你投入越多的算力,你获得打包权的几率也等比增加。
Remove ads

工作量证明机制因高能耗引发环境担忧:
参阅
外部链接
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads