跳转到主要内容

区块链基础知识:可视化演示

演示区块链技术的工作原理,涵盖哈希处理、区块、链、分布式账本和代币,使区块链概念变得具体直观。

Date published: 2016年11月13日

安德斯·布朗沃思(Anders Brownworth)关于区块链技术工作原理的可视化演示,包括涵盖 SHA-256 哈希处理、区块、挖矿、区块链、分布式账本、代币等内容的演练。

本文字稿是安德斯·布朗沃思发布的原视频文字稿 (opens in a new tab)的无障碍副本。为了提高可读性,已进行了少量编辑。

SHA-256 哈希 (0:01)

这是一个区块链演示。我们将以非常直观的方式进行——通过逐步讲解构成区块链的关键部分,使其变得非常容易理解。

在开始之前,我们需要了解一下这个叫做 SHA-256 哈希的东西。哈希看起来像一堆随机数字,本质上它是某些数字数据的指纹。碰巧的是,它就是我在这个框里输入的任何内容的指纹。如果我在这个框里输入我的名字“Anders”,你会看到哈希发生了变化。事实上,我每输入一个字母它都会改变。

所以这是全小写名字“Anders”的哈希——它以 19ea 开头。如果我删除它并再次输入“Anders”,你可以看到它仍然以 19ea 开头——完全相同的哈希。从这个意义上说,它是这些数据的数字指纹。无论这里是什么数据,每次你输入完全相同的数据,你都会得到完全相同的哈希。

我可以输入任何我想要的内容。你也可以什么都不输入——e3b0——这就是空内容的哈希。或者你可以输入海量的内容。事实上,你可以把整个美国国会图书馆的内容放进去,你也会得到一个哈希。有趣的是,无论信息量极小、没有信息,还是整个国会图书馆的内容,你总是会得到一个这么长的哈希。你无法预先猜测它是什么——你必须把数据放进去才能算出哈希是什么,但无论你输入多少次完全相同的信息,你总是会得到完全相同的哈希。

区块 (2:10)

我要做的是将哈希的概念扩展到一个我们称之为区块的东西上。区块和哈希完全一样,但数据部分被分成了三个部分:一个叫做“区块”——只是一个数字,这是 1 号区块;一个“随机数”,这只是另一个数字;然后是一些数据,就像我们之前看到的那样。

所有这些信息的哈希在下面,它以四个零开头。这是一个相对不寻常的哈希——大多数哈希都不会像这样以四个零开头。但这个是,正因为如此,我完全武断地说这个区块被“签名”了。

如果我改变这些信息中的任何一部分会发生什么?假设我在这里输入一些东西——哈希将会改变,那么它以四个零开头的几率有多大?非常低。我只输入“hi”——看,这个哈希不是以四个零开头,而且背景变成了红色。所以现在你知道,包含这些信息的这个区块不是一个有效或已签名的区块。

这就是随机数发挥作用的地方。随机数只是一个你可以设置的数字,用来尝试找到一个能让哈希再次以四个零开头的值。我可以整天坐在这里输入数字,但我有一个小小的“挖矿”按钮。当我按下它时,它会从 1 开始向上遍历所有数字,试图找到一个让哈希以四个零开头的数字。这个过程被称为挖矿。

它停在了 59,396——而这个数字恰好能哈希出一个以四个零开头的结果。它满足了我对已签名区块的定义。

区块链 (5:16)

那么你能告诉我什么是区块链吗?它可能只是这些区块组成的一条链。这是我的区块链——1 号区块和以前一样有一个随机数、一个数据区,但它还有一个“前一个”字段,这是一堆零。继续往下看,这是 2 号区块、3 号区块、4 号区块——这条区块链上有五个区块。

每个区块的“前一个”字段是它前面那个区块的哈希。你可以看到每个区块都向后指向它前面的那个区块。第一个区块没有前一个区块,所以它只是一堆零。

如果我在这里改变一些信息会发生什么?它会改变这个区块的哈希并使其失效。但是如果我改变前面某个区块中的内容呢?它会改变那个哈希,但那个哈希会被复制到下一个区块的“前一个”字段中,所以它破坏了这两个区块。我们可以随心所欲地回到过去的某个时间点并破坏那个区块,它将破坏自那以后的所有区块。它之前的所有区块仍然是绿色的,但它之后的所有区块都变成了红色。

如果我去改变最后一个区块,我所要做的就是重新挖矿那一个区块。如果我回到很久以前并做出改变,我必须挖矿这个、这个、这个和这个。经过的区块越多,做出改变就越来越困难。这就是区块链抵抗突变——抵抗改变的方式。

分布式区块链 (9:18)

那么我怎么知道我的区块链是否被重新挖矿了呢?现在我们有一个分布式区块链。它看起来和上一个区块链完全一样,但这是对等节点 A。如果你往下看,你可以看到对等节点 B,它有区块链的精确副本。还有一个对等节点 C——这可以无限延续下去。互联网上有许多对等节点,它们都有区块链的完整副本。

如果我看这个哈希,它是 e4b。如果我往下看下一个,它也是 e4b。它们肯定是相同的。现在如果我在这里输入一些东西,重新挖矿这个区块,然后挖矿接下来的区块——所有的链都是绿色的。然而,这条链显示最后一个哈希是 e4b,最下面那条也显示 e4b,而中间这条显示 4cae

所以我只需瞥一眼这个小小的哈希就知道这条区块链出了问题。即使所有的哈希都以四个零开头,这个也是不同的。这本质上是二对一——我们这里是一个小小的民主系统。所以 e4b 获胜。这就是在许多不同的计算机上拥有完全分布式的副本如何让你快速查看所有区块是否相同。

区块链很容易就能有 40 万或 50 万个区块。你不需要检查所有的区块,你真正要做的只是查看最近一个区块的哈希,你就能知道过去是否有任何东西被篡改了。

代币 (12:17)

这就是全部内容——仅此而已。但这其实没什么用,因为我们在数据区没有任何有意义的东西。我们真正想要的是代币。

现在我有了这些代币——完全武断地,我称它们为美元。我们有从 Darcy 给 Bingley 的 25 美元,从 Elizabeth 给 Jane 的 4.27 美元——你懂的。所有这些交易都在发生,我只是用这些交易替换了数据。就像以前一样,如果我们往下看,我们会注意到我们有同一区块链的所有这些其他副本。

这就是不可变性重要的地方。如果我在这里改变一些东西,哈希将会与其他副本上的不同。如果你回到过去并改变某个值,我们能注意到,这非常重要。对于金钱来说,不失去追踪是非常重要的,这就是使用区块链的全部意义——抵抗对过去发生的事情的任何形式的修改。

我要提到的一件事是:我们并没有列出“Darcy 有 100 美元,他给了 Bingley 25 美元”。我们只记录资金的流动,而不是银行账户余额。这就引出了一个问题——Darcy 有 25 美元吗?

Coinbase 交易 (14:34)

在这个版本的区块链中我们遇到了一个问题:我们实际上不知道 Darcy 是否有 25 美元。所以让我们来看看 Coinbase 交易。我们在区块中添加了一个 Coinbase 交易——它说我们将凭空创造 100 美元并给 Anders。这个区块中没有其他交易,因为在此之前没有人有任何钱。

在下一个区块中,又有 100 美元凭空出现并给了 Anders。现在我们有了一些交易——它们都来自 Anders,因为此时我是唯一有钱的人。我把我的 10 美元发给 Sophie。我有 10 美元吗?是的——我回头看,发现 Coinbase 交易给了我 100 美元,所以我至少有 10 美元。

你把这些加起来,它们不超过 100 美元。它遵循货币的一个基本规则:你不能凭空创造货币,而且它的分散是受控的。

如果我们把时间快进,我们看到 Jackson 给了 Alexa 2 美元。Jackson 真的有 2 美元吗?我们往回看一个区块,发现 Emily 从 Anders 那里得到了 10 美元,并给了 Jackson 10 美元。所以 Jackson 确实有这笔钱。我们可以往回追溯并找出答案——这就是拥有“前一个”字段的好处之一。

结语 (16:30)

这就是一个在其上运行货币的基础区块链。如你所知,区块链有许多副本——每个人都有一个副本。如果我们突变某些东西并将其变成 6 美元,区块就会失效,并且与其他副本不一致。这能抵抗篡改,这正是你对货币的期望。它非常适合处理小额和交易性的事务。

区块链是一种非常高效的方式,用于就过去发生的事情达成共识——这种不可变的历史随着时间的推移而记录下来。我们略过了一些要点,但如果你深入研究这个演示,点击这些东西并尝试一下,你会越来越清楚它是如何工作的。

这个页面对您有帮助吗?