2017年是比特币爆发的一年。经过这么多年的潜水,比特币的价格突然从1000美元飙升到近2万美元。有多少人改变了,变成了“货币交易专家密码学”。
赶上好时机真的可以赚很多钱,但醒醒吧,盛宴已经散去了。
-2013年10月至2018年10月比特币价格走势图(来源:Coinmarketcap.com)- 虽然肾上腺素的爆发主要是市场价值的快速上升,但这一波热潮最初是由技术引发的。区块链技术仍有巨大的潜力。现在是业务开发人员、企业家和个人爱好者带着热血上车的时候了。但是,除了热血的涌动,首先要增进对区块链技术的了解。
不幸的是,目前解释区块链技术的文章要么涉及太多复杂的技术术语,要么太肤浅,缺乏深度。这两种类型的文章都不方便读者清楚地理解文章的内容。我该怎么办?我建议你从这篇文章开始。只要10分钟,你就能理解为什么区块链技术如此具有颠覆性。花这些时间是值得的。祝你阅读愉快。
引言
首先,区块链是一种存储电子数据的方法。数据以块的形式出现,想象许多存储数字数据的块。
这些块链接在一起,给其内部数据不可变性。当链接到一个数据块时,其内部数据将无法更改。
一旦一个块被添加到链中,里面的数据对任何人都是公开的。该技术具有非凡的创新意义,可以用来记录几乎所有我们能想到的数据(如产权、身份、余额、病历等)。同时,没有篡改记录的风险。假设我买了一所房子,并把产权证书的照片上传到区块链,我可以证明我当时享有这所房子的所有权。
一旦链接到这个信息,就没有人能改变它(嗯,还是有办法改变的,这里有一个先进的阅读材料,我建议你以后阅读)。
因此,区块链是一种存储数据并确保数据不被篡改的方法。
这听起来不错,但随之而来的问题是:我们是如何实现这种技术的?
第一阶——交易数据
让我们以比特币区块链为例。比特币区块链是现存历史最悠久的区块链。在比特币区块链上,每个区块的大小约为1MB。截至截止日期,该链已累积52.5万块块,链上存储的数据总量约为52.5万MB。(校对注:其实远不如52.5万MB,因为早期很多区块都没有打满1MB。另外,截至今天(2019年4月)
24日,积累了57.3万个区块,总数约250GB。)
比特币的交易数据只存储在比特币区块链上。它就像一个巨大的交易记录库,可以追溯到第一笔比特币交易。在本文中,我们假设有一个区块链存储交易数据,就像比特币区块链一样。
第二阶——链接区块(通过哈希运算)
想象有三个区块存储交易数据(如图1所示)。
这三个区块都有一些交易数据。没什么特别的。就像三个独立的word文档,描述了交易的内容和余额的变化。文档1将按时间顺序从第一笔交易开始记录,直到数据量达到1MB,然后在文档2中记录,直到数据量达到1MB,等等。这些文档是数据块。它们一个接一个地联系在一起(链接)。因此,每个块将根据其内部数据串生成一个特殊的(数字)签名。如果该块中的数据发生任何变化,即使只有一个数字发生变化,该块的签名也会发生变化。这是如何实现的?欲了解详情,请阅读步骤3中的哈希运算部分。
(校对注:如上所述,实际情况下的块并不接近块大小的上限。实际数据大小取决于包装在链条中的矿工记录了多少交易,他们不会等到1MB交易数据开始。实际情况见下文)
假设两笔交易记录在区块1中,即交易1和交易2。这两笔交易的总数达到1MB(事实上,一个区块中包含的交易数量远不止这些)。根据该区块中的数据串生成签名。假设签名是“X32”。如下图所示:
请记住,即使区块1中存储的数据改变了一个数字,也会得到一个完全不同的签名!只要将区块1的签名添加到区块2中,就可以将区块1的数据与区块2连接起来。区块1的签名也包含在区块2的数据串中,因此与区块2中的其他数据一样,该签名已成为区块2签名的数据基础。如下图所示:
正是这些签名将区块链接在一起,形成了区块链。现在加上区块3,整个链如下图所示:
假设区块1中的数据已经发生了变化。例如,Damian和George之间的交易发生了变化。Damian向George发送了500个比特币,而不是100个比特币。由于区块1中的数据串发生了变化,其签名也发生了相应的变化。更改数据后,区块1的签名不再是“X32”,而是变成了“W10”,如下图所示:
-请访问r/blockchainSchol查看更多关于区块链的科普知识-
这样,区块1的新签名“W10”之前添加到区块2数据串的旧签名“X32”产生冲突。区块1和区块2之间的链接断裂。该链上的其他用户将知道区块1中的数据已经改变。为了保持区块链的不可变性,其他用户将拒绝同步更改交易信息,并保持原始交易记录(即向George发送100BTC)不变,整个链仍然完整。这意味着,要篡改交易,必须用新签名代替区块2数据串中区块1的旧签名。但是,一旦区块2中的数据串发生变化,区块2的签名也会发生变化。假设区块2的签名从“9BZ”变成了“PP4”。然后区块2和区块3之间的链接就断了!
每个人都可以看到区块链上的区块。因此,如果篡改者真的想篡改交易,他们必须确保篡改后的块仍然连接在一起(否则很容易发现哪个块与其他块没有连接,然后判断块已经被更改)。换句话说,更改一个块必须为后续的所有块计算新的签名。这几乎是不可能的,但要理解为什么,请看下面。
第三阶——生成签名(哈希值)
然后,我们以区块1为例,再画一个示意图。假设区块1只记录一笔交易,即Thomas将100BTC发送到David。签名需要根据这个数据串生成。这个签名是通过密码学哈希函数在区块链上生成的。密码学哈希函数是一个极其复杂的数学公式:以任何数据串作为输入值代入公式,可以获得独特的64位输出值。例如,你可以“Jinglebells”一个词代入这个哈希函数(哈希函数有很多种,这只是其中之一),输出为:
761A7D9CAFE34C7CDE6C1270E17F73025A61E51A56F700D415F3E19986