1

比特币是一个存储和消费数字货币的革命性方式,并且有着变革其他领域的潜力。无须成为一个数学家或密码学家, 你就可以理解它是怎么回事。当开始看到整个系统是如何形成时,你可能会变得十分兴奋。本文是三篇系列文章中的第一篇。

假设通过互联网给你发送一部电影或是一首歌,我会将一个文件添加到邮件中。一旦我点击了发送,那么你就会收到。收到以后,你可以选择观看这部电影,或者是删除它。你可以对这个电影采取任何操作。

但是记住:我仍然拥有一份拷贝。

2

这就是典型地在互联网上数字信息的移动。你并不是真的 转移(transfer) 内容,而是对它进行了 拷贝(copy)。直到目前为止,这种方式都十分行得通:但是这可能有点不太恰当,毕竟复制一首歌或是一部电影并不太可能会对经济造成危害。

但是现在来考虑一下复制金钱(copy money)。

如果我给你发送一美元,非常重要的一点是,我无法保留这一美元的副本。通过邮件来产生无限的数字货币,可能一开始看起来很有吸引力,但是如果每个人都开始这么干的话会发生什么事情呢?这会导致肆虐的货币膨胀,从而使得经济因此崩塌。

3

传统上,在有线传输和使用借记卡的世界里,数字货币是由中心化机构进行跟踪以防止复制。比如说,银行的数据库会确认谁到底拥有了多少钱。这个系统依赖于中心化的机构,我们大都已经熟悉这个概念。当然,这个中心化机构对我们的钱有着绝对的控制权,因为我们的钱只是银行数据库里的一个数字而已。

但是,如果存在另外一种方式,会发生什么呢?相对于通过不可靠的中心化机构来确认我们的财产所有,如果由一个不是仅由单方控制的分布式机构来保证这些信息,会发生什么呢?如果我们的钱是否有价值,不是因为我们相信被背后政府的力量,而是因为我们相信数学的力量?

这就引出了比特币。

引入比特币

比特币是一个数字货币系统,它并不从属于任何政府或机构。

这可能会有点令人疑惑,上面说比特币是一个系统,实际上,比特币也是货币本身的代名词。比特币系统创建于 2009 年,但是做为货币单位意义上的比特币却是通过一个叫做 挖矿 的持续过程不断生成。听起来有点像是挖黄金,不过这是 21 世纪的数字黄金。

在比特币网络中,所有交易都永久记录于一个长长的列表之中,这个列表就叫做区块链。区块链并不是由一个中心的权威机构保护的秘密列表。它是一个分布式的公开列表,每个参与其中的计算机都有一个备份。

4

比特币区块链是不可更改公开分布式的账簿:

不可更改。这是指一旦一个记录已经在区块链中存在了几小时,再去改变或是清除该条记录都是行不通的。因为几个小时以后,会有很多其他交易基于该条记录所构建。要想改变这条记录,就要改变所有基于该记录的所有后续记录,随着后续记录的不断增加,这将变得无法更改。

公开。这是指任何人都能够查看区块链,而不仅仅是银行职员。这并不意味着你可以精确地看到正在发送或者接收比特币,因为记录都是匿名的 – 通过使用匿名来模糊实体信息。

分布式。这是指全世界的电脑会维护一个同步的区块链拷贝。并没有主本或副本的概念,所有的拷贝都是相同的。

最后,账簿指的是区块链是一系列交易的集合。如果知道 Venmo 交易列表的话,你完全可以将区块链看做是 Venmo 的交易列表。

这个分布式账本之所以叫做“区块链”,是因为每个单一的交易被通过一个更大的单位“区块(block)”进行了整合,而这些区块会被按照顺序相互连接起来。这比一笔一笔的添加交易要快得多,生成一个新的区块大概需要十分钟。

为了更好的阐释这个不可更改,公开,分布式账本的威力,让我们假设一个常见的场景,这个场景会涉及 5 美元比特币交易。(虽然一个比特币的价值可能会时高时低,但是 5 美元基本上只是一个比特币的一小部分。 )

在我们假设的场景中,我的朋友 Flizabeth 给我发送了价值 5 美元的比特币,这笔交易会被记录在区块链中 – 所有的交易都是被记录在区块链中。那么,我就拥有了这 5 美元的比特币,然后我可以把它发送给你,因为区块链的每一个拷贝 Flizabeth 的 5 美元比特币。在这个过程中,我,你,Elizabeth 都没有向一个中心化的权威数据库请求谁拥有多少钱这样的信息,也没有请求任何权限。授权是去中心化的,它存在区块链的每一个拷贝中,无处不在。

你可能会想问:Elizabeth 是从哪儿获得发给我的比特币?

一个简单的回答是可能有某个人发给了 Elizabeth 比特币,这也是大多数人得到比特币的方式。

但是这些比特币最初必然是被创造出来的,那么它是怎么创造出来的呢?

一个比特币是如何诞生的

5

美元是由美国政府印刷的,其他传统货币也是由它们的政府发行而来。很久以前,美元是由在美国财政部等量的黄金支持的。在那段时间,要想创造更多货币就需要更多等量的黄金,因此挖黄金十分流行。

比特币也是通过一个叫做 挖矿 的过程而来。它是数字挖矿,是通过计算机和软件,而不是炸药和铁铲。为了能够将新一个新的区块加入到区块链中,必须要解决一个非常困难的数学题。第一个解决了这个难题的“矿工”就会获得新创造出来的比特币。这就是比特币的挖矿。

换句话说,挖矿做了两件事:

  • 向区块链中加入新的区块
  • 创造新的比特币

矿工竞相解决的数学难题是一个叫做“哈希”的问题。

初见哈希

6

一个哈希就是一个数字指纹,因为它唯一识别了一串数字信息 – 无论该信息是一张图片,一个图片相册,一部电影,一串密码,文本,还是其他的任何内容。它是由数字信息经过一个叫做“哈希”的过程衍生而来。它的形式可以是一串字母,数字和其他符号。

哈希是计算机科学中的核心概念之一,广泛用于诸多场景。为了增强安全性,在线服务经常会存储密码的哈希而不是实际的密码信息,当你登录的时候, 系统会比较密码的哈希而非原始密码。Facebook 使用哈希来检查上传图片是否违规。在 Facebook,不会有人真的用肉眼检查每张照片是否是暴力或色情图片。相反,Facebook 会预先针对被认为是违规的图片,进行哈希,创建一个违规内容的哈希列表。每当一个新的图片被上传到Facebook,它会被同样的函数生成一个哈希。产生的结果哈希会与违禁内容的哈希相互比较 – 如果它们相匹配,Facebook 就会知道这个图片是违禁照片。

典型地,当软件执行一个哈希函数时,它会接受输入数据 – 比如一张照片 – 然后输出一个天书一样的字符串,这个字符串就是哈希了。

举个例子,我们用叫做 SHA-256 的一个哈希函数来计算一个小狗图片的哈希。

7

显然,大家应该都能看得出,这张小狗的图片不会是 Facebook 的违禁图片。不过,Facebook 里面的人不会真的去看这张照片,而是使用相关程序检测这张图片的哈希,如下:


8EC9D4718F919C6087CA589EDA09E7DD9A7ACCDB820F42B4196E1D0D4BEDE77A

这就是上面那张图片的 SHA-256 哈希结果,采用 16 进制表示。是不是没有之前的小狗可爱了:).

哈希函数一个非常有趣的特性是,只要我们稍微改变一下输入,输出就会完全不同。比如,如果我们改变这张图片的一个像素点,在小狗的眼睛上面放一个跳蚤大的黑色像素点:

8

尽管只是改了一个像素值,但是再次对图片进行哈希,我们会得到一个完全不同的哈希值,:


039E1AF92F7D00775ECE35C2216FC3F7F0BBCD31F912A105D2601380D8DEABA2

现在,接下来我们应该使用真实内容和真实的哈希值了,但是由于哈希的表现形式不太友好,肉眼很难进行鉴别和区分。故而,我们使用表情符号(emoji)来代表输入和输出。在上面的例子中,我们用猫脸来表示输入(content to be hashed),绶带表示输出(结果哈希):

想象Facebook在两张违禁图片 🚫 和 ❌ , 执行一个哈希函数,得到结果哈希 💩 和 💀 。

9

然后,有人上传了一张图片 ? ,因为 Facebook 还不知道它是否违规,所以 Facebook 会调用程序对图片进行哈希,结果是

10

尽管没有人真的去用肉眼观测过这张图片,但是 Facebook 已经知道它属于违禁图片,因此图片的哈希匹配了。没有人需要去直接查看新上传的输入,只要它有着与已有违禁图片的相同哈希,我们就认为这是违规图片。

图片识别仅仅是哈希的其中一个应用。创造新的比特币和将新的交易加入到区块链中的比特币挖矿,是另一个应用。

至此,在本系列的第一篇,我们知道了比特币是一个去中心化的货币,并非由任何的政府或金融机构发行,还知道了什么是哈希。在下一篇,我们将会了解比特币矿工是如何利用哈希来创造比特币,密码学是如何在完全可转移且不可逆的情况下,使得比特币具有唯一性和不可复制性。

原文:Bitcoin Explained (with Emoji)

⤧  Next post 简单了解 Tendermint ⤧  Previous post 用异步协程写一个爬虫 (2)