区块链中的区块、链、交易的结构和关系

78 阅读6分钟

我们可以用一个数字账本来做类比:

  • 交易 (Transaction):账本中的每一条记账记录
  • 区块 (Block):账本中的每一,上面写满了记账记录。
  • 链 (Chain):整本账本,由一页一页按顺序装订而成。

下面我们来详细拆解它们的结构和关系。


1. 交易 (Transaction):基础数据单元

交易是区块链中最基本、最小的组成单位。它本质上是一条记录,声明了“谁在什么时间,把什么东西,转移给了谁”。

交易的结构 (以比特币为例):

一个基本的交易通常包含以下几个部分:

  • 输入 (Inputs):指明了这笔交易的资金来源。它引用了你之前收到的、尚未花费的交易输出(UTXO - Unspent Transaction Output)。你可以把它理解为:“我用我钱包里之前收到的这几笔钱来支付”。
  • 输出 (Outputs):指明了资金的去向。它包含:
    • 收款方地址 (Recipient's Address):钱要转给谁。
    • 金额 (Amount):要转多少钱。
    • 找零 (Change):如果你的输入金额大于支付金额,多余的钱会作为一笔新的输出返回给你自己的地址,这就是找零。
  • 数字签名 (Digital Signature):这是最关键的部分。发送者用自己的私钥对整个交易进行签名,以此证明:
    1. 所有权:只有拥有私钥的人才能花费这些资金。
    2. 不可篡改性:一旦交易被签名,任何内容的微小改动(如金额、收款人)都会导致签名失效。

简单理解: 交易就像一张你填写好并签了名的支票,上面写着付款人、收款人、金额,你的签名确保了这张支票是你本人开出且内容无误。


2. 区块 (Block):交易的容器

单个的交易在网络中广播后,并不会立即被确认。矿工(或验证者)会将一定时间段内(比如10分钟)收集到的大量待确认交易打包在一起,形成一个“区块”。

区块的结构:

一个区块主要由两部分组成:

  • 1. 区块头 (Block Header):这是区块的元数据和摘要信息,包含了区块的身份证明。

    • 前一个区块的哈希值 (Previous Block Hash):这是实现“链”的关键。它像一个指针,指向链条中的上一个区块,将所有区块串联起来。
    • 时间戳 (Timestamp):该区块被创建的大致时间。
    • 默克尔树根 (Merkle Root):一种高效的密码学工具。它将区块内所有交易数据进行两两哈希,再对结果进行哈希,层层向上,最终生成一个唯一的哈希值。这个值可以用来快速验证区块中是否包含了某笔特定交易,并确保所有交易都未被篡改。
    • 随机数 (Nonce):一个没有任何意义的数字。在工作量证明(PoW)机制中,矿工通过不断改变这个数值并进行哈希运算,来寻找一个满足特定难度要求(比如开头有若干个0)的哈希结果。这个寻找过程就是“挖矿”。
    • 难度目标 (Difficulty Target):规定了挖矿的难度。
  • 2. 区块体 (Block Body)

    • 交易列表 (Transaction List):包含了这个区块打包的所有交易记录的完整列表。

简单理解: 区块就像账本的一页纸。区块头是这一页的页眉,记录了页码(通过前一个区块哈希)、记录时间、以及本页所有交易内容的防伪摘要(默克尔树根)。区块体就是这一页上密密麻麻写满的交易记录。


3. 链 (Chain):区块的有序集合

当一个新区块被成功“挖出”(即找到了符合要求的Nonce)并被网络中的大多数节点验证通过后,它就会被添加到现有区块链的末端。这个过程不断重复,形成了一条不断增长的链条。

链的结构与关系:

  • 通过哈希值链接:链的核心在于,每个区块的区块头都包含了前一个区块的哈希值
    • 区块 N 的头部包含了 区块 N-1 的整体哈希值。
    • 区块 N+1 的头部又会包含 区块 N 的整体哈希值。
  • 不可篡改性:这种链式结构提供了极高的安全性。
    • 如果你试图篡改 区块 N 中的一笔交易,那么 区块 N 的默克尔树根会改变,进而导致 区块 N 的整体哈希值也改变。
    • 由于 区块 N+1 的头部记录了 区块 N原始哈希值,现在它对不上了,区块 N+1 就会变得无效。
    • 这会引发连锁反应,后续所有区块(N+2, N+3, ...)全部失效。
    • 要想让篡改合法化,你必须重新计算从 区块 N 开始往后所有区块的哈希值(即重新“挖矿”),这在算力分散的去中心化网络中几乎是不可能完成的任务。

简单理解: 链就是整本账本。每一页(区块)的页眉都写着上一页的“指纹”(哈希值)。如果你想偷偷撕掉或修改其中一页,那么后面所有页上记录的“上一页指纹”就都对不上了,整个账本就作废了,篡改行为会立即被发现。


总结:三者的关系

  1. 包含关系

    • 由多个 区块 组成。
    • 区块 由一个 区块头 和一个包含多笔 交易区块体 组成。
  2. 流程关系(从产生到确认)

    • 步骤 1:创建交易
      • 用户发起一笔交易,并用私钥签名,然后广播到网络中。
    • 步骤 2:打包成块
      • 矿工从网络中收集待确认的交易,将它们打包进一个候选区块
    • 步骤 3:链接成链
      • 矿工通过解决密码学难题(挖矿),为这个区块找到一个有效的哈希值,然后将其广播出去。
      • 其他节点验证通过后,将这个新区块连接到现有的末端,区块中的所有交易至此得到确认。

最终的比喻:

  • 交易是一块块积木
  • 区块是一个装满积木的透明盒子,盒子上贴着标签(区块头),写着盒子的内容摘要和上一个盒子的编号。
  • 就是用这些盒子按编号顺序一个接一个地堆叠起来的高塔,由于每个盒子都依赖上一个盒子的编号,你无法在中间抽走或替换任何一个盒子而不被发现。