Block,即区块,是比特币历史中的下一批交易。付款进入你的节点所跟随链上的有效区块后,就得到第一次确认。这不是中央管理员的决定:矿工构建区块,其他节点检查它是否遵守比特币规则。
你发送一笔比特币付款,钱包最初显示等待确认。交易在节点间传播,可能进入各节点的 mempool,也就是本地未确认交易列表。矿工从中选择一些放入候选区块。如果矿工找到了所需的 Proof of Work (满足网络规则的挖矿计算结果),节点也将区块接纳进当前有效链,其中的付款便得到第一次确认。下一个接在它后面的区块会让确认数变成二。区块间隔的平均目标约为十分钟,并不保证每笔付款都能在十分钟内完成。 [1] [3]
每个区块都有简短的区块头和自己的交易。区块头包含前一个区块的密码学指纹等信息:前一个区块的数据改变时,这个引用也会改变。因此区块形成相互衔接的历史,而不是一堆散乱付款。区块头中的另一项指纹概括本区块的交易,叫 Merkle root。矿工不断尝试不同区块头,直到它的哈希,也就是数字形式的指纹,满足难度目标。但这还不能证明付款本身正确。全节点还要检查签名、花费权限等规则;有效的 Proof of Work 无法补救无效交易。 [1] [3]
区块的第一笔交易叫 Coinbase Transaction。矿工最多可以在其中领取规则允许的新发行量,加上所包含交易的手续费。节点随后依次检查普通交易:原先未花费的金额退出可用资金集合,新的金额被创建。这些独立金额叫 UTXO。一笔付款可以在同一区块中花费前面一笔付款的输出,前提是满足其他所有条件,但同一个输出不能花费两次。新的 coinbase 奖励不能立即在这个区块中花费:它受特殊的 100 个区块等待规则约束。 [1]
区块没有固定数量的付款席位。简单交易的数据量小于复杂交易,因此相同容量能容纳的交易数并不固定。SegWit (改变交易数据存储和计量方式的一次比特币规则升级) 启用后,容量按重量计算,上限为 4,000,000 个单位。这是衡量数据的技术指标,不是物理重量;其他规则也同样适用。矿工无须用满容量。所谓空块可以不包含普通付款,但仍有 coinbase 交易。因此空既不表示完全没有交易,也不表示自动无效。 [1] [2]
有时两个矿工几乎同时找到区块,都连接同一个前驱。两个区块可能都有效,却形成竞争分支。节点在有效分支中按累计证明的工作量选择,而不是简单投票或只数区块。切换分支叫链重组。被放弃区块中的付款可能失去确认;如果它仍然有效且未进入新分支,就可能重新等待打包。更多确认通常会提高可信度,却不是数学意义上不可逆的承诺。补充一点技术细节:区块头占 80 字节。Merkle root 是按照交易在区块中的顺序,用交易标识符 txid 计算出的指纹。SegWit 的 witness 数据,例如验证花费所需的签名,还通过 coinbase 记录了另一个密码学指纹。这些关联让节点能够检查收到的数据是否确实属于该区块。 [1] [2]
要获得更完整的理解,请将本词条与以下词条结合阅读: Block Header, 交易, Timechain / Blockchain, 挖矿. 反向关联还来自: Block Header, Merkle Tree, 确认, Coinbase交易.