把账本穿一串•比特币与区块链

38 7~9 min

当你用微信给🐢转一笔钱,微信首先要知道你有一笔钱,这就需要一个账本。因为🐢也相信微信的账本不会搞错,交易成功发生。在这笔交易中,微信成为了大家认可的第三方,我们管这种认可叫做共识,而微信,是可信第三方。

现在,🐢要把这笔钱取出来,微信会从🐢的第一笔交易开始验证,确保我也有这笔钱。当一切完成后,微信便会从银行一个装着所有人余额的账户转出这笔钱,交易又一次成功。

但现在,我们需要一个去中心化网络,所有人都平等,可信第三方并不存在。在这个网络中,最好的办法是每个人都拥有一本账本。而区块链的核心就是一个这样的账本。

现在,你又想给🐢转一笔钱,你必须向整个网络广播这笔交易,当大家都回溯确认你有这笔钱并记上这新的交易时,交易成功发生。

为了让大家知道你是你,而不是🐢冒充你给自己转了一笔钱,这就需要电子签名,一种非对称加密技术,依赖哈希函数。这又是一个新话题。现在,你只需知道,有了这种技术,所有人都能知道你是你。

可怎么确保大家的账本都一致呢?那就是选一个大家共同认可的人为大家记账。但首先,我们需要一个交易池。

交易池的主要作用是缓存网络中接收到的待处理交易。当用户发起一笔交易后,该交易会被广播到区块链网络中的各个节点,并暂时存储在交易池中。一个得到大家共识的人会从交易池中选择2000-3000笔交易进行打包,制成新账本(区块)。将这些得到大家认可的账本穿到一起,便是区块链。

而如何选出这个人,就需要一套共识机制。对于比特币,这种方式是做题(工作量证明)。这种证明的本质是穷举,谁先算出答案,谁就负责打包这一区块。为了让大家有动力去打包区块,系统会给第一个算出答案的人一笔奖励——12.5个比特币。

算出答案很难,而验证却只需要一瞬间,这也依赖了哈希函数。一旦一个节点广播了包含答案的新区块,它便会被穿到链上,现在,大家都有了一本共识且不停更新的账本。

而如果两个人同时算出来了答案,就会产生分叉区块。如果交易被打包进分叉区块,则可能需要被放回交易池重新处理。

在一个区块的区块头,记录了上一个区块的哈希值(可以简单理解为文件的唯一标识),上一个区块又记录了上上个区块哈希值,一直指向第一个区块,被称为哈希指针。

现在,有了电子签名,记账者无法伪造转给他的交易;有了哈希指针,无法凭空变出一笔钱。一个可靠的账本链诞生了。这,就是区块链。

在下一篇中,我们将简单理解现在网络的非对称加密与其数学基础——哈希函数。

拓展🐍(完成此题可领取一张万能数字)

拜占庭将军问题

拜占庭帝国(Byzantine Empire)军队的8个师驻扎在敌城外,每个师都由各自的将军指挥。将军们只能通过信使相互沟通。在观察敌情之后,他们必须制定一个共同的行动计划,如进攻(Attack)或者撤退(Retreat),且只有当4个以上的将军共同发起进攻时才能取得胜利。然而, 其中有一或二名将军是叛徒,试图阻止忠诚的将军达成一致的行动计划。 更糟糕的是,负责消息传递的信使可能在半路被杀导致传递失败。他们应该怎么办?

🐢🐢🐢

🐢🏰🐢?

🐢🐢🐢