Blockchain Basic Principle

Table of Contents

1. 区块链

A blockchain is a distributed database that is used to maintain a continuously growing list of records, called blocks. Each block contains a timestamp and a link to a previous block.

区块链的最著名应用是比特币结算系统。比特币结算系统是分散地建立在网络上的(称为 P2P 网络),它是一个去中心化的结算数据库,个别数据节点被破坏或者被人为篡改不会影响整个比特币结算网络。

区块链的设计使得它天然具有较高的 Byzantine fault tolerance

2. 区块链原理

尽管区块链这个的概念是由 Satoshi Nakamoto 于 2008 年提出的。但其思想却是由 Stuart Haber 和 W. Scott Stornetta 于 1991 年在其论文“How to time-stamp a digital document”中提出。

Stuart Haber 和 W. Scott Stornetta 的论文主要解决问题: 如何证明电子文档的创建时间和最后的修改时间? 这个问题有很多应用场景,如可裁决谁先提出某个专利想法等等(如两个人 A 和 B 都声明自己先发明了微积分,A拿出一个文档说我于 x 年就把这个想法记录下来了,B拿出一个文档说我于 y 年就把这个想法记录下来了,如果年份都是可信的,那么法官简单比较下哪个年份更早就可裁决出谁先发明了微积分了)。

2.1. 简单的解决方案

下面是一个简单的解决方案,它可以证明电子文档的创建时间和最后修改时间。

方案介绍:系统中引入一个可信的 Time-Stamping Service(TSS)。用户每次对电子文档有修改(包括创建)就把文档提交给 TSS,TSS 记录下收到文档的时间(即当前文档的最后修改时间),而且要保存文档的一个复本。要证明文档的最后修改时间就很简单了。由于 TSS 是可信的,那么直接拿着文档去找 TSS,TSS 在其内部数据库中查找,发现这个文档的确存在,而且是 X 年 X 月 X 日提交的。

这种方案可行,但存在很多问题:

  1. 隐私性不好。如果文档是机密信息,用户不仅要确保自己不泄露,还要确保 TSS 不泄漏。
  2. 带宽和存储要求。如果文档很大,则会带来很大的带宽压力和 TSS 存储压力。
  3. TSS 本身的能力限制。万一 TSS 的硬盘坏了,那就什么都没有了。
  4. TSS 本身的可性度。这是最关键的问题,怎么保证 TSS 是公平的?上面方案中并没有相关方案用于防止 TSS 和用户 A 串谋起来欺骗用户 B(如 TSS 造假说用户 A 于 X 年 X 月 X 日提交了某个文档,但实际上用户 A 并没有提交,用户 B 也无从验证 TSS 是否在造假)。

2.2. 改进方案(无法解决 TSS 本身可性度问题)

对于上面简单的解决方案所存在的 4 个缺点,前面 3 个缺点容易解决。这里给出一个方案能克服前 3 个缺点(但第 4 个缺点还是存在)。

2.2.1. 使用 Hash

不发送文档本身给 TSS,而是发送文档的 Hash 值给 TSS。这样第 1 个和第 2 个缺点基本得到解决。

2.2.2. 使用数字签名

进一步,如果使用数字签名技术: TSS 把文档 Hash 值再加上收到文档的时间作为整体进行数字签名后返回给用户。

这样,TSS 本身几乎不用存储什么东西了,这样第 3 个缺点也基本得到解决。

2.3. 最终方案一:linking(blockchain 采用的方案)

如何在上节介绍的改进的基础上进一步解决 TSS 的可性度问题(第 4 个缺点)呢?

注意到“用户提交文档的 Hash 值和提交时间”是无法提前知道的。 如果我们把“上一次”用户提交文档的 Hash 值和提交时间作为“这一次”数字签名的一部分输入,这样所有的数字签名过程是有序的(组成一个链),这样 TSS 无法伪造签名了(TSS 无法在链中悄无声息地插入一个节点,因为这会使得新插入节点后面结点的签名信息不一致,很容易查找出来)。

2.4. 最终方案二:random-witness

random-witness 是另一种解决 TSS 可性度问题的方案。不过,Blockchain 没有采用这种方案,这里不介绍。可参考 Stuart Haber 和 W. Scott Stornetta 的论文(在原始论文中这个方案称为“Distributed trust”)。名字“random-witness”来自 Dave Bayer 和 Stuart Haber 的论文“Improving the Efficiency and Reliability of Digital Time-Stamping”。

Author: cig01

Created: <2017-04-02 Sun>

Last updated: <2017-07-23 Sun>

Creator: Emacs 27.1 (Org mode 9.4)