工作量证明

经济对策
工作量证明(Proof-of-Work,PoW)是一种用于防止服务和资源滥用以及拒绝服务攻击的经济策略[1]。它通常要求用户执行一些复杂的计算,这些计算的结果能够被服务提供者迅速验证,从而通过消耗时间、设备和能源作为担保来确保服务和资源的有效利用[2]。这一概念最初由Cynthia Dwork和Moni Naor在1993年的一篇学术论文中提出,而"工作量证明"这个术语则是由Markus Jakobsson和Ari Juels在1999年提出的。目前,这种技术已经成为加密货币的主要共识机制之一,比如比特币就是采用了这种技术[3]

技术原理

工作量证明的核心技术原理是哈希函数。因为对于任何输入值n,哈希函数h(n)都会产生一个特定的结果,而且当n发生微小变化时,会导致结果发生显著的变化,即所谓的雪崩效应,使得几乎不可能从h(n)反推出原始的n。因此,通过指定搜索具有特定特征的h(n),并让用户进行大量的穷举计算,就能够实现工作量证明。例如,如果我们希望找到一个使h(n)的十六进制值的前四位为0000的n,那么理论上平均需要进行2^16次h(n)哈希运算才能找到答案,而验证只需要进行一次。为了提高难度,我们可以增加指定的位数。以SHA256函数为例,当我们处理字符串"Hello World"并试图找到一个使h(n)前四位为0000的n时,我们需要从"Hello World0"开始尝试不同的ASCII字符,直到"Hello World107105"才找到匹配的h(n):
0000BFE6AF4232F78B0C8EBA37A6BA6C17B9B8671473B0B82305880BE077EDD9
验证时只需将"Hello World107105"代入SHA256函数一次即可。