前阵子在油管看到了一个介绍区块链的短视频,把区块链讲得很清楚,于是我把它翻译一下分享给大家。相信大家看了这篇文章,基本上能够理解什么是区块链了。
区块链,顾名思义,它是由一组包含信息的区块组成的信息链。
区块链由一个有趣的属性:一旦某些数据被记录到一条区块链中后,那么数据就很难再被改变。那区块链到底是如何工作的呢?
区块链的组成
区块链由区块和链组成。每一个区块包含三个元素:数据、哈希值、前一区块的哈希值。
区块的第一个元素是数据。区块中所保存的数据与区块链的类型有关。例如,比特币区块链中的区块保存了相关的交易信息,包括卖家,买家,以及交易比特币的数量。
区块的第二个元素是哈希值。每个区块包含了一个哈希值,这个哈希值是唯一的,它用来标识一个区块和它所包含的所有内容。一旦某个区块被创建,它的哈希值就相对应的被计算出来了。改变区块中的某些内容会使得哈希值改变。所以换句话说:当你想要检测区块中内容的改变时,哈希值对你就很有帮助。如果一个区块的指纹改变了,那它就再也不是之前的区块了。
区块的第三个元素是前一个区块的哈希值。这个元素使得区块之间可以形成链接,并且能够使得区块链十分的安全。
举个例子假设我们有一条区块链包含3个区块。如图所示,每个区块包含了一个自己的哈希值以及前一个区块的哈希值。3 号区块指向 2 号区块,2 号区块又指向 1 号区块。但是 1 号区块有点特殊,它不能指向前一个区块,因为它是第一个区块。我们把1号区块叫做创世区块。
那么,现在我们假设你篡改了第二个区块。这将导致第二个区块的哈希值改变,那么 3 号区块存储的数据就是错误的、非法的。而 3 号区块存储的数据一旦是非法的,后面的区块也一定是非法的。
所以如果一个人想要篡改区块链中任何一个区块,它必须修改这个区块以及这个区块之后的所有区块。这将是一个很繁重的任务。
区块链的工作量证明
但是,仅仅使用哈希值的方法不足以防止用户篡改区块。因为现在的计算机运算速度已经足够强大,并且能够每秒计算成千上万的哈希值。你完全可以篡改一个区块并且重新计算其他的区块的哈希值,这样就使得你的区块再次变得合法。
所以为了减少这种风险,区块链还采用了一种技术叫做工作量证明。这是一种减缓新区块创建过程的机制。
在比特币区块链中,大概需要花费10分钟来完成所要求的工作量证明,并且添加一个新的区块到区块链中。这个机制使得区块链的篡改更加困难,因为一旦你篡改了一个区块,你需要重新计算所有后续的区块的工作量证明。
所以区块链技术的安全性主要来自于哈希值以及工作量证明机制。
区块链的分布式特性
但是,区块链还有一种机制来保护自身的安全性,那就是分布式。相对于用一个中心化的实体来管理区块链网络,区块链采用的是一种peer-to-peer网络,并且所有人都可以加入。当有人加入这个网络时,他就会得到整个区块链的复制。这个人就可以以此来验证是否所有的区块还是合法未篡改的。
那么接下来我们就来看看,当某人创建了一个新的区块时,会发生哪些改变这个新的区块会被发送给网络上的所有人。每个人再验证这个区块以确保这个区块没有被篡改过。如果所有的东西都被检验正确之后,那么每个人就都会把这块新的区块加到自己的区块链上。
我们可以称之为,网络上的所有人达成了「共识」。他们认同网络中那些区块是合法的,哪些是不合法的。那些被篡改过的区块将会被网络上的其他用户拒绝。所以,要成功篡改一个区块链,你需要篡改区块链上的所有区块,重新完成每个区块的工作量证明,并且控制区块链网络中超过50%的用户。
只有这样,你篡改的区块才会被所有人承认。但实际上,这基本上是不可能做得到的!
树义有话说
看到这里,你可以尝试着回答下面几个问题:
- 什么是区块链?
区块链由区块和链组成,每个区块由数据、哈希值、前一个区块的哈希值三个部分组成。
- 区块链为什么需要挖矿(工作量证明)?
通过挖矿(工作量证明)可以避免坏人的恶意破解,增加其破解的时间成本和经济成本。
- 区块链为什么很安全?
区块链安全是因为其不可更改特性和分布式特性。即如果要修改区块链中的数据,你需要完成下面两件事情:第一,你需要计算出修改区块之后的所有区块的哈希值,这需要非常庞大的计算能力。第二,你需要让超过50%的区块链用户同意你的修改。同时完成上面两件事情基本上是不可能的,所以区块链很安全。
如果你能回答上面三个问题,那么你就算是理解区块链了。但是区块链技术本身也在不断地发展。最近的一个技术改进,叫做智能合约。
智能合约的诞生使得我们可以做很多事情,例如网购的信任问题。我们将在后面的文章中讲解智能合约的概念。