0414 分钟
CONFIRMATIONS · FINALITY

确认数和最终性有什么区别?

连续生产区块,再推进教学模拟中的最终性,理解‘已经看见’与‘可以安全依赖’不是一回事。

本章目标学完后,你应该能:
  • 区分区块高度、确认数与最终性
  • 观察后续区块如何增加安全缓冲
  • 理解金融应用为什么等待可依赖的状态
章节位置第 4 / 4 章
  1. 上一章同一组交易,为什么必须同一个顺序?
  2. 本章确认数和最终性有什么区别?

    连续生产区块,再推进教学模拟中的最终性,理解‘已经看见’与‘可以安全依赖’不是一回事。

  3. 下一章自由实验室
阅读前

先想一想这几个问题

展开答案前,可以先在心里做个判断。与预期不同的内容可以加入复习列表。

Q01确认数已经很多,为什么还要区分最终性?
简要回答

确认数通常表示重组越来越困难;最终性表示协议已经给出不可轻易撤回的承诺。两者的安全假设不同,应用等待的也不只是一个区块计数。

和原先判断相比:

看到交易出现在区块里,不等于应用可以立刻把它当成永远不会改变的事实。本章连续生成区块,再推进一个简化的最终性开关,区分“已经被包含”“有了确认”和“可以安全依赖”。

区块高度、确认数和最终性

区块高度回答“链走到了哪里”;确认数回答“这个区块后面又接了多少层”;最终性回答“在当前规则下,应用是否可以依赖它而不再等待”。不同链的共识机制给出不同的最终性保证,实验室用逐块推进的方式先建立直觉。

LEDGER SIMULATION虚拟积分 · 无真实密钥
LEDGER 001 · SIGN / VERIFY / APPLY

一笔交易如何变成状态?

交易先被签名和广播,再由节点验证并打包进区块。任何一步不满足规则,余额都不会改变。

当前链高#0TIP GENESIS
待打包交易0Pending
你的 Nonce0下一个可用序号
已确认0Included
被拒绝0Rejected
最终性高度#00 个区块等待
账户状态余额 + Nonce 是可验证状态
Nonce
0
公钥
pk_alice_demo
Nonce
0
公钥
pk_bob_demo
Nonce
0
公钥
pk_you_demo
交易队列0 TXS

还没有交易。先用正确 Nonce 广播一笔转账。

FOCUS EXPERIMENT · FINALITY确认数与最终性

第一笔交易需要一个区块,后面的空区块用来制造确认缓冲。最终性高度不会自动追上链高。

链高 / 最终性
#0 / #0
确认缓冲
0 个区块
观察提示

先看三张账户余额和 Nonce。签名只授权一组具体字段,节点还要在打包时检查 Nonce、余额和状态规则。

链上区块0 BLOCKS

还没有区块。交易先在本地 Pending,等节点打包。

节点事件1 EVENTS
  1. 01

    创世状态:三个账户各有 1,000 积分,Nonce 从 0 开始。

操作记录实验时间轴
1 个状态快照

拖动滑块可以回到此前的步骤。从那里继续操作时,后续记录会替换为新的操作序列。

初始状态
查看实验记录 →

先打包第一笔交易,再连续生成空交易区块,最后点击“推进最终性”。你会看到链高可以继续增长,而最终性高度按自己的节奏前进。

展开:这一步如何实现
if block.height <= finalizedHeight:
  application_may_depend_on(block)
else:
  wait_for_more_confirmations()

真实网络会用 PoS 投票、经济惩罚或其他共识规则计算最终性。这个实验室只模拟“区块被生产”和“应用选择推进最终性”的分离。

理解检查

一个区块被挖出后,为什么应用还可能等待?

一条底层主线

现在可以把四章串起来:签名授权交易,交易池等待排序,区块执行并承诺状态根,确认和最终性决定上层应用何时安全依赖结果。预测市场、AMM、代币发行和撮合引擎只是把更多状态与约束接在这条主线上。

本章小结完成练习和理解检查后,可以保存本章