Rickee's Corner
Published on

Blockchain For Dummies

Authors
  • avatar
    Name
    RickeeX
    Twitter

这个 dummy 很显然是我 😄。系统性地输出一下了解到的 Web3 理论。

何谓 Blockchain?

区块链(blockchain)是一切的主题。所谓 block,就是公开记录的数据块。前一个 block 的哈希值通常被包含在后一个 block 的开头,因此它们像链条一样紧紧连接,一旦改动前面的区块,后面的所有区块都会引发连锁反应。这种方式保证了数据的不可篡改性。

共识机制

你可以说:我重新计算后面的区块就好了呀?理论上是这样。

比特币的解决方案是工作量证明(Proof of Work, PoW)。每添加一个区块都需要做一道极难的、只能用算力堆砌破解的数学题。也就是说,如果我想要修改 block n-k,我必须计算出 block n-k+1, block n-k+2, ... 的数学题,而且速度要比「世界上最幸运的矿工的接力棒」还要快。最终,我的篡改链比当前的共识链还要长,成为新的共识链。这只有在我掌握了全网 51% 及以上的算力的时候,才有机会稳定实现。这在现实中是不可能的。

数学题

所谓数学题,就是:

solve Nonces.t.[(Block n1)Hash+Transactions+Nonce]Hash<A\begin{equation} \text{solve \textbf{Nonce}}\quad s.t.\quad \left[(\text{Block}\ n-1)_{\text{Hash}}+\text{Transactions}+\textbf{Nonce}\right]_\text{Hash}< A \end{equation}

其中 AA 是一个给定的哈希值上限,按 64 位十六进制数来表示的话,目前的难度是开头有 19 个零。其大小会根据挖矿难度动态调整,以确保每产出 2016 个新的区块,总用时在两周(20160 分钟,即保证每 10 分钟产生一个新的 block)左右。

这个 Nonce 目前没有任何数学解法。只能穷举法暴力破解,因此这是一场算力的比拼。谁最先碰到任何一个满足条件的 Nonce 值,他就有权利将上述内容打包成 block n 并广播。验证方法极其简单:计算新 block 的哈希值,看看开头的零够不够 19 个即可。这是一个解题难度和验证难度极其不对称的题目。

一旦这个幸运的矿工正式将他手头的 block n 部署上链,所有人都会放弃手头的挖矿工作,重新开始,基于 block 0 - ... - block n 来制作 block n+1。这是一个「第一名冲线后,所有人就回到起点重新开始比赛」的游戏。

比特币的发行

比特币会奖励成功上链的矿工一定数量的比特币。这个数额每 210,000 个 block 减半一次。根据上述十分钟定律,每产生 210,000 个 block 需要四年左右。头一个四年(2008-2012)的奖励是 50 比特币。

编号时间区块数量奖励数量发行比特币总数
12008 - 2012210,00050210,000 × 50
22012 - 2016210,00025210,000 × 25
32016 - 2020210,00012.5210,000 × 12.5
42020 - 2024210,0006.25210,000 × 6.25
52024 - 2028210,0003.125210,000 × 3.125
…………………………
last约 2140 年210,0000.00000001210,000 × 0.00000001
total无限21,000,000(级数之和)

截至 2024 年,94% 的比特币(接近 2000 万)已经被挖出。但是比特币的使用规则决定了它是越用越少的:一旦被送到一个黑洞地址,那么比特币就永远遗失了。所以比特币有严重的通缩倾向。

公钥和私钥