上链ON-CHAIN BLOCK 02 / 26
卷一 · 世界观BLOCK 02

区块链到底是什么


"区块链"这个词把两个东西塞在了一起:一种数据结构(哈希链),和一套让全网对它达成一致的机制(共识)。这一章我们先把数据结构讲透——它意外地简单,简单到你可以在下面亲手挖一条链、再亲手把它砸烂。理解了"为什么改一格就全红",你就理解了"不可篡改"到底是数学意义上的什么。

先认识哈希:数字世界的封蜡印

一切从哈希函数开始。它接受任意长度的输入,吐出一个固定长度的、看起来随机的指纹。以太坊用的是 keccak-256(输出 32 字节)。它有三个对区块链至关重要的性质:

Android 类比

你在 Gradle 里见过它:依赖的 sha256 校验和、APK 签名里的摘要、Git 的 commit hash,都是同一个思想。哈希就是"内容的唯一身份证":内容变一个字节,身份证就完全换一张。区块链只是把这个你早就在用的工具,拿来当"防伪封条"。

试一下雪崩效应DEMO
keccak256 = …
哈希由本页纯 JS 计算(assets/web3-lib.js 里的 keccak-256 实现),不联网。

把哈希串成链

现在做一件简单的事:每个区块里除了自己的数据,还记下上一个区块的哈希。就这一下,魔法发生了。

概念结构
Block N = {
    data:      "一批交易",
    prevHash:  // ← Block N-1 的哈希
    nonce:     // 一个可调的随机数,用来"挖矿"
}
Block N.hash = keccak256(data + prevHash + nonce)

因为每个块的哈希都依赖前一个块的哈希,而前一个又依赖它的前一个……哈希就像多米诺一样一路串到创世块。这意味着:你改动历史上任何一个块的任何一个字节,它的哈希立刻变,于是它后面所有块记录的 prevHash 全部对不上,整条链从那一点起彻底断裂、全部作废。这就是"不可篡改"的全部秘密——不是"锁住了不让改",而是"改了立刻被所有人看出来"。

亲手挖一条链,再砸烂它DEMO · 旗舰
难度:哈希需以 00 开头
点"挖出 4 个区块"开始。挖好后,试着改任意一个块的 data 输入框——看它和它之后的所有块如何瞬间变红。
要点入账

玩一下上面这个 Demo,胜过读十段文字:改早期的块,后面全红;改越早,塌得越彻底。"挖矿"在这里被具象化了——它就是不停试 nonce,直到哈希碰巧满足某个难度条件(比如以 00 开头)。想篡改一个旧块,你不仅要重挖它,还要把它之后每一个块都重新挖一遍,才能让链重新自洽。区块越深,重挖代价越天文数字——这就是"确认数越多越安全"的来源。

真实区块里装了什么

教学模型里一个块只有 data,真实的以太坊区块头字段更丰富,但思想一模一样。几个你该认识的:

字段作用
parentHash上一个区块的哈希,就是我们 Demo 里的 prevHash,链之所以成链
stateRoot整个"世界状态"(所有账户余额、合约存储)的 Merkle 根,一个哈希概括全网状态
transactionsRoot本块所有交易的 Merkle 根
timestamp / number时间戳与区块高度(第几块)
baseFeePerGas本块的基础 Gas 价格(EIP-1559,详见第 4 章)

Merkle 树:一个哈希代表一百万笔交易

一个块可能装几千笔交易,总不能把它们全塞进区块头。解决办法是 Merkle 树:把交易两两哈希、再两两哈希,层层向上收敛成一个根哈希(transactionsRoot)。好处是——想证明"某笔交易确实在这个块里",你不需要下载整个块,只需要一条从叶子到根的哈希路径(几百字节)。这正是手机轻钱包能在不下载全链的情况下验证交易的原理。

Android 类比

Merkle 证明的思路,和你用 DiffUtil 做增量更新、或者 Git 用树对象比较目录快照,是同一种"用哈希指纹快速定位差异"的智慧。你不比对全部内容,只沿着哈希树往下走,不一致的分支才展开细看。

共识:谁有权写下一个块

数据结构解决了"改不动",还剩一个问题:全球几千个节点,该听谁的、按谁排的顺序往账本上追加新块?这就是共识机制。你会听到两个词:

共识的细节可以写一本书,但对开发者来说,你现在只需要记住它保证的结果:全网最终对"哪条链是唯一有效的历史"达成一致。你的交易被打包进某个块、并被后续若干块确认之后,就可以认为它"板上钉钉"了。

风险记账

"写进区块"不等于"永久确定"。在极短时间内,可能出现两个节点几乎同时出块导致的短暂分叉(reorg),你的交易可能被回滚重排。所以交易所常要求"等 12 个确认"再入账。开发 dApp 时,别在交易刚上链的一瞬间就把它当成终局——留意确认数。

本章小结

◆ 返回目录