区块链不是一块块孤立的数据,而是用密码学哈希把一个个区块按时间顺序锁在一起的账本。结构上可以分成三层来看:整条链如何前后衔接,单个区块内部放了什么,以及交易如何被压缩进区块头里的一棵默克尔树。理解这三层,也就能看懂为什么改历史记录的成本会随区块加深而指数上升。
整条链:后一块咬住前一块的哈希
创世块是链上第一个区块,它的“前一块哈希”通常填全零或协议规定的固定值。之后每一个新区块的区块头里,都会写入上一块的哈希。于是第n块依赖第n-1块,第n-1块又依赖第n-2块,一直回溯到创世块。
哈希函数具有雪崩效应:区块里改一个比特,算出来的哈希几乎会整段变化。后一块记录的是前一块的哈希,所以改中间某一块,后面所有块的“前一块哈希”都会对不上,整段链条立刻断裂。攻击者若想让网络接受被篡改的历史,必须从被改的那一块开始,把后面所有块按当前难度重新算出合法哈希,同时还要跑赢全网正在向前延伸的主链。这就是结构本身带来的防篡改,而不是靠某个中心管理员盖章。
主链通常按“累计工作量最大”或协议规定的分叉选择规则确定。短时分叉会出现两条同样长度的链,节点按规则选一条继续往后接。被丢弃的那一侧称为孤块或叔块,它们仍可能存在于个别节点的内存里,但不会进入最终被广泛承认的账本主干。

单个区块:区块头加区块体
一个区块在结构上分成头部和身体。身体装交易列表,头部装用于链接、校验和出块的元数据。全节点会保存完整交易,轻客户端往往只同步区块头,再按需向全节点索取某笔交易的默克尔证明。
以比特币风格的区块为例,区块头体积很小,通常固定为 80 字节左右,里面一般包含:版本号、前一块哈希、默克尔根、时间戳、难度目标(nBits)、随机数(nonce)。区块体则可能装几百到几千笔交易,体积从几百 KB 到数 MB 不等,具体上限由各链的共识规则决定。
出块时,矿工或出块者并不对整块数据做一次哈希了事,而是反复哈希区块头。身体里的交易先汇总成默克尔根写进头部,于是头部成为整块的“指纹压缩包”。验证节点拿到新块后,先检查头部哈希是否满足难度、前一块哈希是否指向本地已有的块、时间戳是否在合理窗口内,再重建默克尔根,确认身体里的交易没有被偷偷替换。

区块头字段各自管什么
版本号告诉节点本块遵循哪套规则,便于软分叉升级时识别新字段或新验证逻辑。前一块哈希是链条的铰链,缺了它,块就只是一堆数据,挂不进账本。
时间戳记录出块大致时间,用于难度调整和防止把时间拨得过离谱。它不必精确到毫秒,但必须落在协议允许的区间,否则邻居节点会拒绝该块。
难度目标规定区块头哈希必须小于某个数值。工作量证明链上,矿工不断改 nonce(必要时还改时间戳或交易排列),直到算出的哈希落到目标以下。目标越低,合法哈希越稀少,出块越难。权益证明链上不一定拼 nonce,但区块头里仍会留下证明人签名、随机种子或委员会信息,作用同样是让“谁有权接上下一块”可被公开验证。
nonce 本身没有业务含义,它只是为了让哈希结果可调。头部其他字段相对稳定时,改 nonce 就能得到全新哈希,而不必重算整棵交易树。
默克尔树:用一棵哈希树概括全部交易
区块体里的交易不会直接塞进区块头。每笔交易先算哈希,两两配对再哈希,层层向上,最后得到一个默克尔根,写入区块头。交易数量为奇数时,通常复制最后一个哈希凑成偶数再往上算。
这棵树的价值是证明效率。要证明某笔交易确实在某块中,不必下载整块:只要提供从该交易哈希到根的一条路径(默克尔路径),验证者把路径上的兄弟哈希依次拼起来,看结果是否等于区块头里的根。路径长度大约是log2N,上千笔交易也只需十几次哈希。
任意一笔交易被改,叶子哈希变,一路传到根,根对不上区块头,块立刻非法。这把“交易完整性”和“链条完整性”焊在一起:改交易等于改块,改块等于断链。
轻客户端正是靠默克尔证明工作。手机钱包同步一串区块头后,向全节点询问“这笔转账在不在第h 块”,全节点返回路径,钱包自己验根。它不保存全部交易,却仍能在密码学意义上确认收录关系。

交易在区块里如何排列
结构还决定交易的语义模型。比特币系多用 UTXO:每笔交易消耗若干未花费输出、生成新输出,区块按拓扑顺序排列,后一笔可以花费同块中前一笔刚产生的输出。账户模型(如以太坊)则在区块里顺序执行对账户余额和合约存储的更新,同一账户的多笔交易必须按 nonce 递增,避免重放。
无论哪种模型,区块都是状态迁移的原子批次。要么整块被网络接受,状态从S变到S′,要么整块被拒绝,状态不动。这也是为什么跨链桥、交易所充值要等多个确认:确认数本质上是“这块后面又接了多长的链”,结构越深,回滚成本越高。
创世块之后,链会因网络延迟短暂分叉。结构规则要求节点在本地维护一棵块树,而不是只存一条直线。最终按累计难度或最终确定性工具(检查点、确认槽、BFT 投票)剪枝,只把主链写入“已被最终接受”的视图。
节点眼里的同一套结构
全节点下载并校验从创世块到顶端的全部区块头和交易,重建完整状态或 UTXO 集。归档节点连历史状态也留着;修剪节点可丢掉很久以前的交易原文,只保留能继续验证新块的必要数据。
轻节点几乎只存区块头链。对工作量证明链,这串头部已经包含了累计工作量,足以判断哪条链更重。对有最终确定性的权益证明链,轻节点还要核对检查点签名或同步委员会公钥。结构相同,存储策略不同,这是区块链能同时服务矿机机房和手机钱包的原因。
传播时,节点往往先发区块头或紧凑区块,对端用内存池里已有的交易拼出身体,拼不齐再补缺。结构上把“小头部”和“可重建身体”分开,带宽才扛得住全球广播。
结构带来的边界
哈希链保证的是:已确认历史极难被悄悄改写。它不自动保证交易合法、合约没有漏洞,也不保证出块者诚实选交易。那些要靠脚本验证、虚拟机、手续费市场和共识激励另行约束。
不同链会在同一骨架上长出变体:有的用平行链或分片把结构拆成多条可互操作的链;有的在一层链下建通道,只把结算结果写回主链区块;有的把默克尔树换成更适合状态证明的 Verkle 树或稀疏默克尔树。万变不离其宗——数据仍被打成块,块仍用密码学承诺前后相扣,交易仍被一棵可验证的树概括进头部。
看懂区块链结构,就是看懂这套“块、头、根、链”如何把分散节点上的副本校准成同一本账。后续再学共识、智能合约或跨链,都是在这副骨架上加规则,而不是另起一套完全不同的数据形状。
本文链接地址:https://www.wwsww.cn/qkl/41476.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。



