第 6 章 · 一次链上交易发生了什么
点下确认之后的那十几秒里,到底发生了什么?
- 练习的能力
- Onchain LiteracyProtocol Literacy
- 动手
- 在测试网发一笔转账,截图记录 pending、已打包、已确认三个状态,写下每一步花了多久。
- AI Lab
- 把交易哈希交给 AI,让它逐字段解释这笔交易,再自己到浏览器上核对每一个字段。
一个现实问题
你点了确认。
界面开始转圈。三秒,十秒。然后变成「已提交」,下面多了一行小字:待确认 1/12。
你把交易编号发给对方。对方说:还没收到。
又过了一会儿,变成 3/12。对方说:我这边显示到账了,但平台说还要等。
所以,这笔钱到底算不算到了?
这个问题比它看起来复杂。同一条链上,你会遇到一堆不一致的规则:
- 有的平台要 1 个确认,有的要 30 个。
- 同一个平台,充 100 块和充一大笔,要求的确认数可能不一样。
- 有的链根本不显示确认数,只显示「已完成」。
- 有时候界面显示「成功」,钱却没到,而且手续费照样扣了。
最后这一条是新手最困惑的:失败了为什么还要收钱?
第 1 章讲过「显示到账」和「完成结算」是两件事。这一章要把那个差值整个拆开,看清楚从你按下确认到钱真正不可能被收回,中间一共有几步、每一步会怎么坏、以及你该在哪一步才算放心。
这也是前五章的汇合点。你会在这一章里同时用到:账本(第 2 章)、共识(第 3 章)、排序与工作量(第 4 章)、签名与密钥(第 5 章)。
思想实验
回到第 5 章那面村口的墙,加上第 4 章的「一页一页往下接」。
你要付 5 枚给小卖部。 完整的过程是这样的:
第一步,写条子。 你写下「从我这一行转 5 枚给小卖部那一行」。注意这张条子上除了金额和收款方,还必须有两样东西:
- 一个编号,表示「这是我写的第 8 张条子」。没有它,同一张条子被人捡去重复投一次,你就被扣两次。
- 一笔跑腿费,给愿意把你这张条子抄上墙的人。
第二步,盖章。 用你的私章按一下。全村都能验证这确实是你按的,而且改动条子上任何一个字,这个印就失效了。
第三步,扔进筐。 村中心有一个大筐,所有待处理的条子都堆在里面。
这里有一件事非常重要:筐是公开的。 任何人都能走过去翻看里面所有的条子——包括你那张。他们在你的条子生效之前,就知道你要做什么。
第四步,等人来抄。 抄页的人每隔一段时间过来,从筐里挑一批条子抄成新的一页。
他凭什么挑你的? 跑腿费。给得高的先抄,给得低的可能在筐里躺很久。筐里条子多的时候,跑腿费会被抬得很高;筐里空的时候,给一点点也能很快被抄走。
第五步,你的条子上了第 100 页。 现在,算不算数?
第六步,第二天早上,有人搬来一叠更长的册子。
这叠册子从第 99 页开始就和大家手里的不一样,而且它比现在这一串更长。按第 4 章的规则,全村改认这一串。
你那张条子不在上面。 它回到了筐里——运气好的话。运气不好的话,那个人在他的版本里塞了一张你付给他的条子,同样带着你的真印(因为他在筐里看到过你那张,能构造出冲突的版本吗?不能——他没有你的私章。但付款人自己可以这么干)。
第七步,村里于是形成了一个习惯: 你的条子上墙之后,后面每多接一页,要推翻它就要多重做一页的工作量。接到六七页之后,推翻它的成本高到没有人会去做。
但注意:那个成本永远不是无穷大。 它只是高到不值得。
第八步,隔壁村改了规则。 他们不靠「谁的串更长」,而是每隔一小段时间,让一组事先押了保证金的记账人集体签字确认:「到第 100 页为止,锁死,谁再改就没收保证金。」
签完之后,第 100 页就真的不能改了——除非这组人里有足够多的人愿意一起赔上全部保证金。
现在停下来想一想:第七步和第八步,「算数」这两个字的含义一样吗?
一个是「推翻它太贵了,所以不会有人做」。另一个是「推翻它要赔钱,而且规则上明确不允许」。
这是两种不同的安全感,而它们在界面上都显示为「已完成」。
你来决定
你是那家小卖部的老板。有人用条子付款买东西。
你什么时候把货给他?
观察结果
四个选择其实是同一个问题的四个刻度:
你愿意为「这笔交易被推翻」这件事,买多少保险?
保险费的支付方式是等待。等得越久,被推翻的概率越低,成本越高。
| 你等到 | 被推翻需要什么 | 适合的场合 |
|---|---|---|
| 进入公共筐 | 付款人自己再发一笔,加价替换 | 极小额,或你信任对方 |
| 被打包进区块 | 重做这一个区块 | 日常小额 |
| 后面又接了若干区块 | 重做全部区块并反超进度 | 大额,按金额调整等待 |
| 明确的最终确认 | 足够多的记账人同时被罚没 | 支持这类规则的链上的大额 |
三个结论从这张表里出来,一个比一个重要。
第一,最终性不是开关,是一条曲线。
没有哪条链在第 0 秒就是百分之百。有些链的曲线在某一点之后变成近乎垂直(明确的最终确认),有些链的曲线永远在逼近而不到达。但曲线的左端,所有链都一样:刚发出的那一刻,什么保证都没有。
第二,「成功」这个词在三个不同的地方出现,含义完全不同。
这三者经常被同一个绿色对勾表示,但它们是三件事:
| 界面说 | 实际含义 | 这时候钱怎么样了 |
|---|---|---|
| 已提交 | 你的钱包把交易发给了一个节点 | 还没生效,随时可能被替换或丢弃 |
| 已打包 | 它被写进了一个区块 | 可能成功,也可能标记为失败 |
| 已确认 N 次 | 后面又接了 N 个区块 | 被推翻的概率随 N 下降 |
第三,也是最反直觉的一条:交易失败了,手续费照扣。
原因在第 4 章:手续费买的不是「成功」,是抄页的人为你付出的处理工作。他把你的条子读进来、执行、发现余额不够或者条件不满足、把失败结果记上——这些工作真实发生了,所以要付费。
你付的是计算资源,不是结果。 这个区分会在第 7 章展开成一整章。
建立模型
一笔交易从你心里的念头到不可推翻,中间是七格。这是整个第一阶段最值得背下来的一张图。
- 构造
- 签名
- 广播
- 进入待处理池
- 被打包进区块
- 获得若干确认
- 达到最终性
把每一格摊开:
| 阶段 | 这一步在做什么 | 典型的坏法 | 你还能做什么 |
|---|---|---|---|
| 构造 | 填收款方、金额、编号、手续费 | 地址填错、金额多一位、编号冲突 | 还没签名,改就行 |
| 签名 | 用私钥授权这份内容 | 签了一个你没看懂的授权 | 签名前能拒绝,签完就晚了 |
| 广播 | 发给网络,扩散到各个节点 | 节点没接受、格式不合规、网络断了 | 重发,通常无损失 |
| 待处理池 | 在公共候选区里排队 | 手续费给低了,长期挂着 | 加价替换,或发一笔同编号的空交易顶掉 |
| 打包 | 被写进一个区块并执行 | 执行失败,但费用照扣 | 无法撤销,只能排查原因重发 |
| 确认 | 后面接上更多区块 | 区块被重组,交易退回待处理池 | 只能等,或等更多确认 |
| 最终性 | 不可能再被推翻 | —— | 到此为止 |
三格需要单独说清楚,因为它们是真实损失最集中的地方。
签名那一格。 这是整条链上唯一一个「你还能说不」的时刻。过了这一格,你的意志就不再起作用了——链只认签名。第 5 章说过,一次签名可能授权的不只是这一笔转账,而是未来一整类资产的转移权。看不懂就拒绝,这是成本最低的安全措施。
待处理池那一格。 这里有一件很多人不知道的事:待处理池是公开的。 你的交易在生效之前,全世界都能看到你打算做什么——转多少、给谁、换什么币、能接受多少滑点。
有人专门盯着这个池子。看到一笔会推高价格的大额交易,他可以抢在你前面买、等你的交易把价格推上去、再卖出。你付的差价就是他的利润,而这一切完全合法地发生在规则之内。 第 18 章和第 24 章会完整拆解这件事。
打包那一格。 「被打包」和「成功」是两回事。在区块浏览器上,一笔失败的交易和成功的交易并排躺在同一个区块里,只是状态标记不同。失败的原因通常是:资源预算给少了、执行中触发了合约的拒绝条件、或者价格滑动超出了你设定的容忍范围。
最后是一把实用的尺子,你以后每次转账都可以在心里过一遍:
金额越大、对方越不认识、撤销的可能性越小,你就该往右边多等几格。
反过来,不要为一笔小额支付等到最终性——那是把成本花在了错误的地方。
它叫什么
现在给名字。
用私钥对一份具体的交易内容生成授权。
请记住它的两个性质:它和内容严格绑定(改一个字节就失效),它是不可撤回的意思表示(签完之后,你的态度不再被询问)。
整个流程里,这是唯一由你决定的一格。 后面每一格都由网络决定。
同一个地址发出的交易的序号,从 0 开始依次递增。
它解决两个问题:防止同一笔交易被重复执行,以及规定同一个地址的交易必须按顺序生效。
第二条有一个很实用的推论:如果你的第 8 笔卡住了,第 9 笔就算手续费给得再高也动不了。 想解开,要么给第 8 笔加价,要么用同一个编号发一笔手续费更高的空交易把它顶掉。
这是「我的交易卡住了怎么办」这个问题的完整答案。
把签好名的交易发给一个节点,由它扩散给其他节点。
注意:你的钱包并没有「发送」资产给任何人,它只是把一份签名文件交给了网络。资产的转移发生在后面的打包环节。
每个节点各自维护的、还没被打包的交易候选区,也就是那个筐。
三个必须记住的性质:它是公开的(任何人都能看到里面的内容);每个节点的池子可能不一样(没有全局统一的一份);里面的交易还没有任何效力(可以被替换、被丢弃、永远不被打包)。
第一条是整个链上交易环境里最被低估的一件事。
一批被打包在一起、并按确定顺序排好的交易,接在前一个区块后面。
区块是排序的最小单位。同一个区块里的交易,先后顺序也是确定的——而这个顺序由打包的人决定,这件事的经济后果非常大。
负责打包交易、生产区块的参与者。
在工作量证明的链上,他们通过算力竞争获得这个资格(第 4 章的矿工);在其他设计里,通过押上资产获得。
不管哪一种,他们都有一项没有被明确写进规则的权力:决定收哪些交易、以及按什么顺序排。 这项权力值多少钱,是第 18 章的主题。
你的交易所在的区块后面又接了多少个区块。
它是一个风险度量,不是一个状态。确认数越多,被推翻所需的代价越高。
没有一个放之四海皆准的确认数。 合理的做法是问:这笔金额值得别人花多少钱来推翻?
网络改认了另一串更长或权重更高的区块,原来那一串上的部分交易被退回待处理池。
它不是攻击,是正常运行的一部分——两个人几乎同时出块时就会发生,通常只影响一两个区块。
但深度重组(影响很多个区块)通常意味着有人在主动攻击,第 4 章讲过它在小链上真实发生过。
一笔交易不可能再被推翻的状态。
它有两种形态,区别很大:
概率最终性:后面接的区块越多,被推翻的概率越低,但永远不严格等于零。第 4 章那条链属于这一类。
确定最终性:到某个明确的时刻,这批交易被锁死,推翻它需要足够多的参与者同时被罚没全部押金。
两者在界面上都显示为「已完成」,但含义完全不同。 判断一条链能给你什么保证,看的就是这一条。
收成一句话:
最终性不是一个瞬间,而是一个逐步增强的概率。
所以「到账了吗」这个问题永远要带一个后半句:到账到什么程度,以及这个程度配不配得上这笔金额。
动手
这个 Lab 全程在测试网上做。 用第 5 章那个测试网钱包,不要碰任何真实资产。测试网的行为和主网不完全一样,但七格的结构是一致的,这正是要观察的东西。
准备一支秒表,或者手机自带的计时器。
准备两个地址。 在同一个钱包里建第二个账户,你要从第一个转给第二个。
打开区块浏览器,搜索你的第一个地址,把这个页面留着,一会儿要一直刷新它。
发起转账,但先别确认。
填好金额,走到最后一步那个确认页面。停在这里,把这一屏看完。
找出这几样东西并记下来:收款地址(逐字核对前四位和后四位)、金额、手续费、以及它预估的时间。
这一屏就是模型里的「签名」那一格。 这是整个流程里唯一一个你还能反悔的地方。养成在这里停三秒的习惯,它以后会救你至少一次。
按下确认,同时按下秒表。
接下来的几分钟里,每隔十秒刷新一次浏览器页面,记录三个时间点:
T1:界面显示「已提交」的时刻 T2:浏览器上能查到这笔交易、状态是待处理的时刻 T3:状态变成已打包、并且显示出区块高度的时刻
T1 到 T3 这段时间,你的钱既不在你这里,也不在对方那里。它在筐里。
打开这笔交易的详情页,逐个字段抄下来。
至少抄这些:交易哈希、状态、所在区块高度、发送方、接收方、金额、手续费、编号、时间戳。
有些字段现在看不懂没关系,先抄下来,下一节的 AI Lab 就用这份记录。
盯着确认数看五分钟。
刷新页面,看确认数从 1 开始往上爬。记下它每增加一个大概要多久。
你会发现间隔并不均匀——这正是第 4 章 Lab 里看到的那个现象:平均值稳定,单次随机。
这意味着「大概要等 N 分钟」这句话本身就是一个概率描述。
做一次对照实验:把手续费设到最低再发一笔。
如果钱包允许自定义手续费,把它调到最低(有些钱包在「高级」里),再发一笔。
观察它在待处理池里待多久。如果它挂住了,试着用同一个编号、更高的手续费再发一笔,看它能不能把前一笔顶掉。
这就是"我的交易卡住了"的标准解法,在测试网上练一次,比在主网上着急时现学好得多。
填完这张表,它就是你的阶段作品。
| 阶段 | 发生时刻 | 距上一步多久 | 这一步如果失败,你会看到什么 |
|---|---|---|---|
| 签名 | |||
| 广播 | |||
| 进入待处理池 | |||
| 被打包 | |||
| 1 个确认 | |||
| 5 个确认 |
最后写三句话:我在哪一步之后才真正放心?为什么是那一步?如果这是一笔大额,我会改成等到哪一步?
AI Lab
用上一节 Lab 里那笔测试网交易。
第一步,让它逐字段解释:
这是一笔链上交易的详情,来自测试网。请逐个字段解释:
(把你抄下来的字段贴在这里)
每个字段说明三件事:
1. 它记录的是什么
2. 它由谁决定:发送方、网络,还是打包这个区块的人
3. 如果这个字段的值不对,会表现成什么症状
最后单独回答:这笔交易现在处于什么状态,以及它还有没有可能被推翻。第二步,问四个它容易答错的问题:
基于上面这笔交易:
一、「已打包」和「执行成功」是同一件事吗?如果一笔交易被打包但执行失败,
手续费会被扣吗?为什么?
二、假设我现在想撤销这笔交易,有没有任何办法?如果它还在待处理池里呢?
如果它已经被打包了呢?
三、如果我要收一笔大额转账,应该等几个确认?请不要直接给数字,
先说出这个数字取决于哪几个变量。
四、这条链的最终性是概率型还是确定型?依据是什么?第三步,也是最重要的一步:拿着它的答案回到浏览器,一格一格核对。
按右边的清单逐条查。凡是对不上的,记下来:它说的是什么、实际是什么、它为什么会这么说。
两个提醒。
第一,第三问的正确回答方式是反问你。 一个直接给出「等 12 个确认就安全了」的模型,是在套模板。正确的答案必须包含:这笔金额值得别人花多少钱来推翻、这条链此刻的安全预算有多大、你能不能承受最坏情况。
第二个提醒和内容无关,但更重要。 交易哈希和地址都是公开信息,贴给模型本身没有风险。但不要把你所有地址一次性贴给它——那等于主动把自己的完整资产分布交给一个第三方服务。第 23 章会讲清楚,把几个地址关联起来能推断出多少东西。
测试网地址随便贴。主网地址,按上面这条办。
AI 说完之后,你必须自己验证
- 状态字段:它有没有把「被打包」和「执行成功」当成一回事。这两者在浏览器上是两个不同的标记,混为一谈的直接判错
- 手续费:它算的实际花费,和浏览器上显示的数字是否一致;它有没有说清「预算」和「实际消耗」是两个不同的字段
- 编号:它有没有解释清楚同一地址的交易必须按编号顺序生效,以及卡住时该怎么办
- 时间戳:它说的是区块的时间,还是你发起的时间。这两者能差很多,而它经常不区分
- 确认数:它有没有给出一个「万能确认数」。给了就追问依据——正确的回答必须和金额、和这条链的具体情况挂钩
- 最终性:它有没有说清这条链属于概率型还是确定型。答不上来的,说明它在套模板
- 凡是它写的具体数字(区块时间、费率、确认时长),逐个到浏览器上对,对不上的标出来
真实案例
一条采用工作量证明的小型公链,在几个月里连续发生深度重组:攻击者掌握了足够算力,把已经确认了几十个区块的历史推翻,实现了双花。
这件事对本章的意义非常直接:那些交易当时在浏览器上全都显示「已确认」,确认数还不少。
事后多家交易平台大幅提高了该资产的充值确认数要求。这个动作本身说明了一切:确认数不是一个技术常数,是一个根据安全预算动态调整的风险参数。
第 4 章讲过它的经济逻辑:推翻这条链要花多少钱,推翻它能赚多少钱。两个数字的差额,决定了你该等几个确认。
在链上出现热门事件时——大规模的资产发行、清算集中触发、某个应用突然爆火——待处理池会在几分钟内堆满。
后果是连锁的。手续费被竞价推到平时的几十倍;出价不够的交易挂上几个小时甚至几天;而最要命的是,有些操作本身对时间敏感——比如需要在价格跌破某条线之前补充抵押。交易挂在筐里,清算却不会等你。
这解释了本章的一个核心结论:待处理池不是一个排队大厅,是一个实时竞价市场。 你付的不是「手续费」,是在买一个有限资源的优先级。
第 7 章整章都在讲这个市场,第 16 章会讲清算为什么不等人。
待处理池公开这件事,催生了一整个产业。
典型形态:你发出一笔会显著推高某个价格的交易,它在筐里被人看到。对方抢在你前面买入,等你的交易把价格推上去,再立刻卖出。你实际成交的价格比预期差,这个差额进了他的口袋。
整个过程里没有任何一步违反了规则。他没有拿到你的私钥,没有伪造你的签名,没有攻击任何系统——他只是比你先知道了你要做什么,并且有权决定顺序。
这件事把第 2 章那个问题重新提了出来,只是换了一副面孔:谁有权决定账本上这一页的顺序,谁就掌握着一种可以变现的权力。 第 18 章和第 24 章会完整展开,这里只需要记住:你的交易在生效之前是公开的。
改一个变量
抢跑和夹击立刻失去了信息基础,普通用户的实际成交会变好。
但三个新问题跟着来了。第一,节点怎么互相同步? 交易必须被传播才能被打包,完全保密和必须传播是矛盾的,只能靠加密和分阶段揭示来折中。
第二,谁来保证提交的内容是真的? 一笔加密的交易被打包之后才解密,如果解密出来是无效的,这个区块空间已经浪费了。
第三,也是最微妙的:保密给了谁特权? 如果排序权交给一个看得见明文的专门角色,你只是把这项权力从「所有人都能看」变成了「只有一个人能看」——那正是第 2 章的老王。
这个方向是当前一个非常活跃的工程领域,各种方案都在这三个问题之间找平衡点。第 18 章会介绍思路。
确认速度大幅提升,体验接近传统支付。这是很多链在做的事,方向本身没有问题。
代价在第 4 章讲过一次:单个确认的含金量下降了。 区块间隔和网络传播时间接近时,短暂分叉变成常态,你可能要等几十个确认才相当于原来几个的安全性。
还有一个更现实的代价:跑节点的门槛上升。 出块越快,节点要处理的数据越多、带宽要求越高、追上最新状态越难。能独立验证的人越少,第 3 章那把尺子上你的位置就越往左——你对这条链的信任,又有一部分变回了「听别人说」。
速度不是免费的,它的成本通常记在"谁还能自己验证"这一栏。 第 8 章会把这笔账算完。
所有人都能预测成本,体验确定性大幅提升,也不会再出现天价手续费。
但固定价格解决不了拥堵,只是把排队方式换掉。需求超过供给时,总得有一种机制决定谁先。 不按价格排,就得按时间排(先到先得,于是变成拼网络速度)、按随机排(于是有人刷大量交易提高中签率),或者按某个人的意志排(回到老王)。
更深一层的问题:固定价格会让这个市场失去信号。 第 7 章会讲,手续费的波动本身是一条重要信息——它告诉你这条链此刻的真实需求有多强,也告诉验证者该不该扩容。
拥堵是需求的表现,不是 bug。 把价格摁死,拥堵不会消失,它只是换一种形式出现在别的地方。
第 2 章讲过,可撤销性是现实金融的核心功能:转错账能追回,被骗能申诉,判决能执行。把它加回来,用户体验会好很多。
但你现在能推出完整的代价链了。能撤销,就意味着存在一个有权撤销的角色。 那个角色要么是某个机构,要么是一次投票——不管哪一种,第 2 章那张表的第三列又填满了。
而一旦「已确认」变得可以反悔,链上的一切组合都会松动。 一笔交易的结果被另一个应用当作输入用掉之后,撤销它意味着要连带撤销后面所有依赖它的操作。这不是加一个功能,是拆掉一个地基。
第 3 章那次 2016 年的事件,实质上就是一次人工撤销。它之所以引发那么大的争议并最终导致分裂,原因正在这里。
请注意这不意味着「不可撤销一定更好」。 它意味着:不可撤销是链上一切组合能力的前提,而你为这个前提付出的代价,就是转错地址之后没有客服可以找。第 9 章会讲这个前提换来了什么。
带走的问题
从十八问里挑三问,用在这一章。
这一章给出了一个很干净的答案:发起交易的人付,付给打包区块的人。
但要追问一层:他付的到底是什么? 不是「成功」——失败了也照付。他买的是网络的处理资源,以及一个排在前面的优先级。
这个区分在后面很多章里会反复出现。凡是看到"免费"「零手续费」的产品,就去找这笔成本被转嫁到了哪里——通常在价差里,在补贴里,或者在你看不见的排序权里。
验证者为什么要收你的交易?因为有手续费。那他为什么按这个顺序排?
规则本身并没有要求他按手续费高低排序,他只是在最大化自己的收入。而当他发现「调整顺序」本身能赚更多钱时——比如在你的大额交易前后各插一笔——他会这么做,而且完全合规。
任何时候看到一个角色拥有未被明确约束的自由度,就去算这个自由度值多少钱。 这是分析任何协议时最有穿透力的一个动作,第 18 章会把它用到极致。
这一章的七格里,签名那一格是天然属于人的。
它是唯一一个「你还能说不」的时刻,也是唯一一个需要判断意图而不只是执行规则的时刻。前面六格和后面的一切,都可以自动化;唯独这一格,一旦交出去,就等于把资产的全部控制权交了出去——第 5 章讲过为什么。
所以判断任何一个自动化工具、脚本或者智能体,问题永远是同一个:它自己能不能完成签名这一格? 能,你就是在把第 5 章那把私章交给它;不能,风险等级立刻低一个量级。
这条线从这里一直延伸到第 34 章。 中间会出现很多精巧的设计,但它们都在做同一件事:在保留自动化效率的同时,不把这一格整个交出去。
本章自测
已提交:你的钱包把签好名的交易交给了一个节点。它还在筐里,随时可能被替换或丢弃,没有任何效力。
已打包:它被写进了一个区块。注意——这不代表成功。一笔被打包但执行失败的交易同样占据区块里的一行,而且手续费照扣。
已确认 N 次:它所在的区块后面又接了 N 个区块。这是一个风险度量,N 越大,推翻它的代价越高。
三者常被同一个绿色对勾表示,但结算的含义完全不同。这正是第 1 章那句「显示到账不等于结算完成」的具体展开。
因为手续费买的是处理资源,不是结果。
网络确实为你的交易做了工作:读进来、执行、发现余额不够或条件不满足、把失败状态记上。这些计算真实发生了,消耗了区块里的空间和验证者的算力。
换个角度看更清楚:如果失败不收费,任何人都能用海量注定失败的交易免费塞满网络。 收费是这条防线的一部分。
所以正确的心智是:你付的是计算,不是承诺。 第 7 章会把这件事扩展成一整章。
概率型:后面接的区块越多,被推翻的概率越低,但永远不是零。它给的是「贵到不值得」。
确定型:到某个明确时刻,这批交易被锁死。推翻它需要足够多的参与者同时被罚没押金。它给的是「规则上不允许,且违反要赔钱」。
实际影响有两条。
第一,该等多久的判断方式不一样。概率型要问「这笔钱值得别人花多少钱来推翻」;确定型只要等到那个明确的时刻。
第二,你信任的东西不一样。概率型信的是算力成本;确定型信的是那组参与者没有串通到足够比例,以及惩罚机制真的会执行。
两者在界面上都是一个绿色对勾。能说出自己在用哪一种,是这一章最实际的收获。
因为你的意图在生效之前就被所有人知道了:你要转多少、给谁、换什么、能接受多大的价格偏离。
这带来一类完全不同的风险:对方不需要你的私钥、不需要伪造签名、不需要攻击任何系统,只需要比你先知道,并且有权决定顺序。
它也解释了为什么「我的钱包很安全」和「我的交易很安全」是两件事。第 5 章解决的是前者,后者要靠别的办法——控制滑点、拆分大额、使用能规避公开池的提交通道。第 18 章和第 24 章会讲具体做法。
没有标准答案,但检查四件事。
一、这笔金额值得别人花多少钱来推翻? 这是判断的核心。攻击的收益上限就是你这笔钱,所以它必须小于攻击成本。
二、这条链现在的安全预算有多大? 全网算力或质押总量决定了重组的成本。小链和大链的同一个确认数,含义差着好几个量级。
三、这条链是哪种最终性? 确定型的话,等到那个明确时刻就行,不需要数确认。
四、我能承受最坏情况吗? 如果推翻发生了,这笔损失会不会让你出局。
如果你的回答里出现了一个固定数字而没有提到金额,那就是在套模板。 同一条链上,两笔金额差一千倍的转账,合理的等待时间本来就不该一样——这就是为什么各个平台的规则彼此不同,而且会随时调整。
一句话带走
最终性不是一个瞬间,而是一个逐步增强的概率。