这篇文章将解释 “工作量证明” 在比特币区块链上的关键作用。我们将只关注工作量证明机制最关键的一个特征、并证明其它特征(比如安全性)只是附带结果,虽然有用,但并不是最本质特征 。 本文的解释基于例证一些工作量证明在区块链上运用中的有趣属性。它们往往不是那么直观,有时候甚至与我们的直觉相悖。比如说,通过工作量证明,一群人不用互相交流就能共同解决一个问题。 在了解了这些有趣的属性之后,你们大概会得出一个结论:工作量证明主要是一个实现 “分布式且去中心化的时序系统”(也就是一个时钟)的机制。 去中心化账本中的时间顺序问题在研究解决办法之前,让我们先来仔细分析一下问题。很多介绍工作量证明的文章读起来都很晦涩,原因就在于它们试图跳过问题直接解释答案 。 任何账本显然都需要有顺序。正如一个人不应该能花一笔没到账的钱一样,他也不应该能使用一笔已经转给别人的钱。区块链上的交易必须在不依靠第三方机构的情况下,清晰地排列出交易的顺序 。 即便区块链不做账本,只做某种日志(因为每个节点都有同样的区块链副本),也需要为发生的事情排列出顺序。排序不同,结果显然也不同;排序不同,那就变成另一条区块链了 。 但是如果交易都是由世界各地的匿名用户生成,并且没有一个中心机构来负责整理,那么我们怎么给交易排定顺序呢 ? 举例来说,交易(或者区块)含有时间戳,但什么条件下,这些时间戳才是信得过的呢 ? 时间不过是一个人造的概念。包括原子钟在内,所有的报时来源, 其实都是一个 “被信任的第三方”(trusted third party) 。但最重要的是,这些第三方大多数情况下都不是完全正确的。因为网络延迟或者相对论的影响都会使它们的结果产生出入。坐在飞机上的人跟地上走的人之间会产生一个 “时间膨胀” 现象,这种误差会随逐渐累积起来,最终使排序失真 。于是,依靠时间戳来决定时间的顺序在一个去中心化且地理上分散的系统中是不可能的。 我们这里 说 的其实并不是传统意义上的 “时间” 概念,不是说的 “年月日” 这种 。我们需要的是一个能让我们验证一个事件是否先于另一件事发生的机制。 首先 ,为了使用 “之前” 和 “之后” 这样的描述,我们先得建立 “时间点” 这样一个概念 。在时间线上确立一个具体的点乍 看起来似乎不可能,因为目前还没有技术能够精确到测量出一个 Planck(时间单位,约等于 5.391247×10^-44 秒)。但你之后会发现,比特币就是这样运作的 —— 它通过创建自己的时间概念来让确定时间线上的具体点变得可能。 (责任编辑:admin) |