自从过了年后,小编已经被N个小伙伴问过“什么是区块链?”了。对于这个问题,不同的人可能有不同的答案。

在肖风博士的最新演讲中,他从区块链的层次分解、技术发展进程、经济意义等角度解释了何谓区块链。

本篇文章翻译自外文博客,用通俗易懂的语言,分三步,解释了区块链的三个主要组成部分:区块链本身,点对点网络和共识机制,有助于我们逐步理解区块链的底层技术。结合肖风博士的演讲,你将从机制、经济和技术层面,对区块链技术有更深入更透彻的理解。

本文即使是非技术人员,也能轻易理解。现将其分享给各位,供大家参考。

l下文翻译自Thijs Maas发表在Hackernoon上的博文《The Quick, 3-Step Guide to Blockchain Technology》,仅代表作者观点,不代表万向区块链的立场,内容仅供参考。

第一步  理解区块链技术本身


简单来讲,区块链其实就是一种构建数据的方式。它是一个账本:一个保存会计记录的文件。

这个文件就像一本永远也不会完结的书一样。

书的每一页都有内容并且在书页底部都有一个页码,有了页码,你就能立刻知道这页书所属的位置,如第49页是在第48页和第50页之间。

就像书页一样,每一个区块上面都写满了内容。虽然区块没有明确的编号,但它们有时间戳,时间戳的功能和页码的功能完全一样,算是每个区块的“编号”。一个新的区块总是添加在具有最近时间戳的区块之后。如此,链条就形成了。

区块链最酷的地方在于,它使用加密技术来确保当“书页”上的任何信息发生变化时,我们能够立即注意到它。这个属性使得区块链成为一个很好的,用于保存和跟踪有价值的纪录的数据结构。

在比特币区块链中,区块里包含了比特币的交易信息,如张三把这个比特币发送给李四了。

由于比特币区块链记录了自比特币存在以来的所有交易情况,因此我们可以通过检查账本,确定李四是在何时拥有这个比特币的。“谁在某时拥有某物”就是我们所说的区块链的“状态”。

当一笔交易被记录在区块中并添加到链上时,这笔交易才算真正地发生。因此,当一个区块被添加到链上时,区块链就被更新了。这意味着,如果我想验证某人是否真的给我转了一个比特币,我必须能够检查区块链的状态。为了能够做到这一点,账本必须是公开可利用的。这里就是点对点网络起作用的地方。

第二步   理解点对点网络的作用


如果区块链仅仅被储存在一台电脑上,并且恰好这台电脑被关闭的话,那就很烦人了。因为我无法随时随地验证对方是否给我转了账。因此,区块链是分散存储在世界各个地区的数台电脑上的。

这些电脑被称为“节点”,它们在点对点网络中一起工作,以确保区块链的安全性和状态的最新性。每个节点都存储着区块链的完整版本,每当有新块添加时,每个节点也都会更新区块链。使用点对点网络有下面这些优势:

  • 我可以随时随地的使用区块链检查交易状态;
  • 我不用依靠某一方来了解交易的最新状态;
  • 当发生黑客攻击时,对方必须同时攻击成千上万台电脑,而不只是一台服务器;
  • 不必担心区块链里的信息会被删除或篡改,要实现这一点就必须修改所有计算机里的信息。

但上述情况并不意味着区块链就是100%安全的。例如,我怎么知道区块链里记录的信息是正确的?怎么验证区块里有没有包含无效交易?如果有不同版本的区块链,那我怎么知道哪一个区块链里的才是真实纪录?

区块链巧妙的地方在于,这些问题,可以用共识机制来解决。

第三步   理解共识机制


共识机制神奇之处在于,它允许点对点网络中的所有节点一起工作,而彼此之间却不必相互了解和信任。

共识机制就是一组简单的规则:网络中的节点通过运行网络软件达成一致。这些规则确保区块链网络按预期工作并保持同步。

共识协议规定了:

  • 如何将区块添加到链上
  • 区块什么时候被认为是有效的
  • 如何解决真相冲突

将区块添加到链上

不同的区块链有不同的添加区块的方式。

最有名的共识机制是比特币PoW机制(工作量证明)。PoW的第一个规则是:平均每十分钟,一个区块会被添加在区块链中。

这个过程叫做“挖矿”,添加新块的节点叫做“矿工”。在PoW机制下,系统会出一道密码谜题,矿工运用计算机的算力解决系统中的密码谜题来添加新块。共识机制规定:只有成功解决出密码谜题后,才能添加一个新块。成功添加新块的矿工能够获得预埋在系统中的新币作为奖励。随后,所有矿工开始挖掘下一个区块。

PoS(权益证明)也是常见的共识机制之一。这种机制通过计算你的权益,包括你持有的币的数量和持有币的时间,来决定记账的权利。谁的权益大,谁就获得添加新区块的权利。

区块的有效性

当矿工解出谜题“挖出”区块后,网络中的所有节点将检查该区块是否有效,并将它添加到各自的区块链副本中。

节点们首先需要就块的合法性达成共识,只有这样网络才会达成同步并更新区块链的状态。只有遵循共识机制设定的规则的新块,才会被节点们承认并添加到链上。没有遵循规则的块将会被拒绝添加。

通常情况下,只有包含交易信息的块才有效。以比特币区块链为例,协议规则规定:如果没有从别人那里接收到比特币或者挖出比特币,就不可以发送比特币。换句话说,如果发送者已经接收到了足够的比特币来做交易,节点们将运行软件检查区块中的所有交易信息,以此来检查网络状态。

现在,假设我已经收到1比特币,我后来将其发送给张三,然后我尝试将相同的比特币发送给李四。只要我的第一笔交易被添加到链中,所有节点都会更新区块链,以证明我现在没有该比特币了,那么任何包含我和李四的交易信息的块都会被拒绝。节点们的软件发现该块没有遵循规则,因此它们不会将这个块添加到链上。

规则还规定,只有具有比特币持有者数字签名的交易才是有效交易。只有控制发送比特币钱包或地址的人才可以在交易上签字。因此,只有你可以花你的比特币。

如何解决真相冲突

在偶然的情况下,会出现两名矿工同时向链条添加有效块,一部分节点接受了一个矿工的有效块,另一部分接受了另一个矿工的有效块。第一个块包含我和张三交易的信息,第二个块包含我和李四交易的信息。现在,我突然同时拥有两种不同状态的区块链。

我们将这种情况称为“分叉”。张三或李四是否拥有我发送的比特币?两条链中的哪一条才是'真正的'区块链?

通常情况下,所有的共识协议都有一条简单的规则来解决这个问题:最长的链获胜!

当分叉发生时,一些矿工会在这条链上挖矿,另一些矿工将在另一条链上挖矿。不可避免的是,一条链上的矿工肯定会比另一条链上的矿工多,因此,矿工多的那条链将会增长的更快。

另一条链上的矿工将会迁移至较长的那条链上,分叉出去的链就会消失。这样对主链没有任何损害。

因为矿工是以自我利益行事的经济行为者。一个矿工如果知道这条分叉的链会消亡,那么就不会有兴趣在分叉链上采矿。所有在分叉链上的交易绝不会发生在主链上,这意味着在分叉链上挖矿的矿工将得不到奖励。

上述这种情况,我们称之为软分叉

在少数情况下,分叉链可能会产生大量的采矿能力。在这种情况下,可能需要一段时间才能确定哪条链是主链。传统观点认为,等待6个区块方可真正确认一个交易。

译者补充:这种情况称为硬分叉,在原链上工作的节点无法验证分叉链上的节点生产的区块,这样就会分出两条链。这两条链将会并存运行下去。

“最长的链获胜”这条规则,再加上添加一个区块需要巨大的算力这一客观要求,使得区块链具有很高的安全性。攻击网络的唯一途径就是回到区块链中的某个区块,分叉区块链并开始从那里挖掘新区块。然而,要做到这一点,攻击者必须重做之前所有矿工们的工作,并努力赶上主链。没有比整个矿工网络更多的计算能力,要实现攻击基本是不可能的。这也是区块链为什么不易受到攻击的原因。