工作量证明

✍ dations ◷ 2025-06-08 03:55:28 #密码学,理论计算机科学,密码货币,电脑安全

工作量证明(Proof-of-Work,PoW)是一种对应服务与资源滥用、或是拒绝服务攻击的经济对策。一般是要求用户进行一些耗时适当的复杂运算,并且答案能被服务方快速验算,以此耗用的时间、设备与能源做为担保成本,以确保服务与资源是被真正的需求所使用。此一概念最早由Cynthia Dwork(英语:Cynthia Dwork)和Moni Naor(英语:Moni Naor)于1993年的学术论文提出,而工作量证明一词则是在1999年由Markus Jakobsson(英语:Markus Jakobsson)与Ari Juels.所发表。现时此一技术成为了加密货币的主流共识机制之一,如比特币所采用的技术。

工作量证明最常用的技术原理是散列函数。由于输入散列函数h()的任意值n,会对应到一个h(n)结果,而n只要变动一个比特,就会引起雪崩效应,所以几乎无法从h(n)反推回n,因此借由指定查找h(n)的特征,让用户进行大量的穷举运算,就可以达成工作量证明。

我们若指定h(n)的16进制值的前四值,求n,这样统计上平均约要运行216次h(n)散列运算,才会得到答案,但验算只要进行一次就可以了。如果想要增加难度,那就增加指定的位数即可。以SHA256函数举例,假设我们要处理数据Hello World,并找出h(n)前四值为0000的n,如果从Hello World0开始加上一个十进制数ASCII进行穷举猜测,到Hello World107105时才会得到符合条件的h(n):

0000BFE6AF4232F78B0C8EBA37A6BA6C17B9B8671473B0B82305880BE077EDD9

验算时只要将Hello World107105代入SHA256函数一次即可。

由于加密货币多由区块链所建构,而区块链本来就要依赖散列函数来做为数据正确无误的担保,所以在加密货币上使用工作量证明,是非常简明的设计。由分散在各处的计算机,竞赛谁能最早找出,搭配原本要打包的数据的穷举猜测值(nonce),谁就等同获得该区块的打包权(记账权)。此猜测值被找出后,与数据、散列值一起打包成块后广播,经多数节点确认与承认,打包者就能获得打包该区块所提供的奖励。一般采用工作量证明的加密货币,好比比特币,会设置成随着参与竞赛的算力增减,而调整找寻猜测值的难度,以维持合理的运作速度。

相关

  • 相差显微镜相衬显微技术是一种光学显微技术,光线在穿过透明的样品时会产生微小的相位差,而这个相位差可以被转换为图象中的幅度或对比度的变化,这样就可以利用相位差来成像。光线在穿过非
  • 不当换质换位换质换位律(contraposition, transposition),又称异质位换律、换质位法,是古典逻辑的一种结构变换推理,一般用于改变条件命题的结构。在直言命题中,换质换位律只能用于全称肯定型(A
  • BOM澳大利亚气象局(英语:Bureau of Meteorology,缩写作 BOM),前身为中央气象局,是澳大利亚联邦政府的一个行政机构负责向澳大利亚和周边地区提供气象服务。根据《气象法》成立于1906
  • 鲁丹期鲁丹期(Rhuddanian)是志留纪的第一个阶段,年代大约位于443.8–440.8百万年前。
  • 乔·贝内特办公室角色列表包含了美国情景喜剧《办公室》里的主角、常驻配角、其他配角、客串明星等在剧中的身份及描述。
  • 一氧化二溴一氧化二溴是一种无机化合物,化学式为Br2O。它是暗棕色固体,仅在-40°C以下稳定,用于溴化反应。分子中Br-O的键长为1.85Å,Br-O-Br的键角为112°。一氧化二溴由溴蒸气或溴的四氯
  • 观音山大觉寺坐标:22°43′46″N 120°22′16″E / 22.729581°N 120.371093°E / 22.729581; 120.371093观音山大觉寺,或称大社大觉寺,简称大觉寺,旧名翠屏岩,是位于台湾高雄市大社区观音山
  • 卡雷尔·雅努塞克1. 自由捷克斯洛伐克国防部长谢尔盖·因格尔(英语:Sergej Ingr) 2. 英国将军哈罗德·富兰克林(英语:Harold Franklyn) 3. 自由捷克斯洛伐克空军中将卡雷尔·雅努塞克 布拉格Libeň
  • 鲈滑石斑鱼鲈滑石斑鱼(学名:,又称巨石斑鱼,俗名龙趸、石斑、过仔鱼、花狗斑)为辐鳍鱼纲鲈形目鲈亚目鮨科石斑鱼属的其中一种鱼类。本鱼分布于印度太平洋区,包括红海、印度洋非洲东岸至太平洋
  • 约翰·约翰逊 (作曲家)约翰·约翰逊(冰岛语:Jóhann Jóhannsson,冰岛语音标:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","