区块链是如何工作的?
区块链最近非常流行,但是区块链是什么呢?他怎么工作,能解决什么问题,又是如何被使用的呢?
就像它的名字,区块链是一个包含信息的块链,这项技术与1991年由研究者们开发,最初旨在为数字文档添加时间戳,以确保人么不能回溯或篡改它们,就像一个公证人。
然而区块链并没有被大规模使用,直到2009年,中本聪创造的虚拟货币:比特币,让区块链重获新生。
区块链是一个分布式账本,对任何人都是完全开放的,它们有一个有趣的属性,当一些数据被记录与区块链中去改变它们是很困难的。
那区块链是如何工作的呢?让我们近距离检视一个块,每个块包含一些数据,它自己的哈希值以及前一个块的哈希值,存储在块中的数据取决于区块链的类型。例如比特币区块链中的区块保存了相关的交易信息,包括卖家、买家以及比特币的数量。每个区块包含一个哈希值,你可以将哈希值比作指纹,哈希值用来标识一个区块和他包含的所有内容,并且它总是唯一的,就像指纹那样。当一个块被建立,它的哈希值就被计算出来了,改变区块中的某些内容会导致区块的哈希值发生变化。换句话说,当你想要检测区块中的内容改变时,哈希值是很有用的。如果一个区块的指纹改变了,那它就不是之前的区块了。区块中包含的第三个元素是前一个区块的哈希值。它使得区块之间能够连接起来并让区块链变得十分安全。
举个例子:假设我们有一个包含三个区块的区块链,每个区块有着自己的哈希值以及前一区块的哈希值。所以多少个区块指向第二个区块,第二个区块指向第一个区块。第一个区块有些特殊,它无法指向前一个区块,因为他是第一个。我们称他为创世区块。现在假设你篡改了第二个区块的内容,这将导致第二个区块的哈希值也发生改变,并使得第三个区块及其以下的区块变得非法。因为三号区块存储的哈希值与第二个区块的哈希值不一致。所以单独改变一个块将连带性地致使后面的所有内容无效。但要防止篡改,只有哈希是不够的,现在的电脑计算速度非常快,每秒可以计算数十万次哈希值。你可以有效地篡改区块,重新计算其他块的所有哈希值,是你的区块链再次有效。
为了解决这一问题,区块链有一个机制称之为工作证明(POW,Proof Of Work)。这是一种减缓生成新区块速度的机制,在这种情况下,比特币大约需要10分钟才能产生一个新块。这种机制使得区块难以被篡改。因为一旦你篡改了一个区块,你需要计算后面所有区块的工作证明。所以区块链的 安全性由哈希值和工作证明机制来保证。
区块链还有一种来保护自身安全性的机制,那就是分布式。相对于用一个中心化得实体来管理区块链网络,区块链使用的是人人都可以加入的P2P网络。当某个人加入区块是,他会得到整个区块链的完整复制。这个人就可以以此来验证所有区块是否合法。
让我们看看当某人创建一个新块时会发生什么。这个新的区块会发送给网络上的所有人,每个人再验证这个区块以确保这个区块没有没篡改过。如果验证通过,每个人都将新的区块加到自己的区块链上。我们可以认为,网络上所有人达成了共识。它们认同网络中哪些区块是合法而哪些是非法的。哪些被篡改的区块会被网络上的用户拒绝接受。所以要成功篡改一个区块,你需要篡改区块链上50%以上的区块,重新完成每个区块的工作证明。并控制P2P网络中超过50%的用户。只有这样,你篡改的区块链才会被所有人承认。可以说,这基本上是不可能做到的。
区块链技术本身也在不断发展,最近的一个技术改进,叫做智能合约。智能合约是放在区块链上的简单程序,它能够在特定的情况下实现自动化比特币交易。我们将在后续的文章中介绍智能合约。
区块链技术的诞生吸引了很多人的兴趣,在其诞生后不久,一些人意识到区块链技术可以用来做其他事。存放病历档案,创造数字化公证,甚至可以用来收税。现在你知道区块链是什么了,以及他工作的基本原理和它能解决的问题,想知道如何使用JavaScript实现一个区块链吗?详见想次分享。
Write your own blockchain in JavaScript