本文解释比特币区块链中工作量证明(Proof-of-Work)的主要功能。文章专注于工作量证明带来的其中一个必要性质,展示经常被讨论的一些其他特性,例如安全性是次要的副作用,尽管安全性很有用,但它不是必要的。2 U5 ~9 v- D5 R" k" n4 v
% e7 V7 d$ F; o ]+ c) V本文对区块链中工作量证明如何被运用的几个有趣特性进行说明,这些特性不是一眼就能看到的,有时甚至与直觉相反,例如参与者如何在缺乏沟通的情况下集体解决某个问题。( k# e2 j7 [# ]. j x0 L$ D
, i4 s! w5 f! [; l( F
了解这些特性后,我们应该能得出这样的结论:工作量证明主要是一种实现分布式和去中心化计时系统(即时钟)的机制。6 l8 @5 J! ?3 M! q* u1 w
) e8 e4 y! X4 r# d
请注意,本文并不涉及工作量证明技术本身,而是解释区块链如何利用它。如果你完全不了解工作量证明,那么该链接可能是一个很好的入门材料。6 }( T/ u/ [, r4 L
' h/ y U$ I0 g3 T9 v, r' F5 d7 _" w
, \ N* Y( a" M% J7 Q# I. t( B5 p* c' z! E
去中心化账本时间序列问题& O) o9 T; c1 O) u7 n
在描述解决方案之前,我们先来关注问题本身。许多关于工作量证明的文献非常令人困惑,因为它们试图在没有先确定所要解决的问题,就开始寻求解决方案。
7 l0 F0 U" |& ~, j6 D/ E/ X# F+ S$ M s; |5 z* A3 A. y9 F9 R1 e' l
毫无疑问,任何分类账(ledger)都需要时间顺序。因为:你不能花费还没有收到的钱,也不能再次花费已经用出去了的钱。区块链交易(或包含它们的区块)必须具备明确的排序,并且不需要可信的第三方。8 }; ^ B# F5 Y1 s3 `
) ?: E2 p) g5 N7 P
即使区块链不是一个分类账,而是类似于某种日志的数据,但对于具有相同区块链副本的每个节点来说,它们也需要顺序。交易顺序不同的区块链是不同的区块链。
/ O' ?; p% I' r9 c' o8 A$ ], [9 W
" @2 O9 |- q0 }( x但是,如果交易是由世界各地的匿名参与者生成的,并且没有一个中心机构负责组织交易序列,那么区块链如何才能做到这一点呢?假设交易(或区块)可以包含时间戳,但是这些时间戳如何才能被信任呢?
3 O5 B: e# D: C( D- R( W! j7 v5 L0 o# ^' r
时间只是一个来自人类的概念,并且它的任何来源(比如原子钟)都是“可信的第三方”。最重要的是,由于网络延迟和相对论的影响,大部分时间存在轻微的偏差。即使是飞机上的人与地面之间的时间膨胀(一分钟以内)也足以使排序成为不可能的事。矛盾的是,在去中心化的地理分散系统中,依靠时间戳来确定事件顺序是不可能的。6 \& X# B( l$ K4 M: o3 N
+ n* r8 l/ ^% T2 p2 H; g0 v- Y
本文所讨论的“时间”不是我们所习惯的年、月、日等。我们需要的是一种机制,通过它我们可以验证一个事件发生在另一个事件之前,或者两个事件可能同时发生。
l3 p4 u8 [1 |) A& [( r7 O/ }2 l" @( p, S6 @& J7 v# r
想要使用“之前(before)”和“以后(after)”的概念,首先需要确定一个时间点(a point in time)。而一开始,在理论上设定一个时间点似乎是不可能的,因为我们没有足够精确的技术来测量普朗克时间。但正如大家所看
6 A0 m5 V) C5 T. h3 _8 Y+ C
|