一笔签好名的交易会被广播、被校验、被排序,最终依据该网络的规则被视为已经确定。
从请求到记录
按下发送之后,会启动一个可以拆成五步的过程。钱包构造出一笔交易,描述应该发生什么变化。你用私钥产生的签名对它授权。钱包把它广播给网络节点,节点按规则检查——签名是否有效、账户余额是否够、手续费是否足够。随后由验证者或矿工把有效交易打包进区块。最后其他节点校验这个区块,并在它上面继续延伸链条。
整个过程里只有第二步涉及你,而且它的不可逆程度超出多数界面所强调的。一旦一个有效签名被广播出去,后面的每一步都不会再征求你的同意。你能控制的一切,都发生在你点下确认之前。
在广播和被打包之间,交易会停留在一个常被称为内存池的等待区。网络繁忙时队列会变长,通常手续费更高的交易会被优先选中。这就是为什么一笔转账看起来像卡住了:它没有丢,只是在排队。
确认数和最终性不是一回事
确认意味着这笔交易已经被打包进某个区块。之后每多出一个区块叠在上面,改写这段历史的代价就更高,所以很多平台会等到若干个确认之后才给账户入账。它们等待的具体数字是一条风险政策,不是协议常量。
有些网络还提供明确的最终性:过了某个定义好的时点,协议就把这个区块视为已经落定,要推翻它所需要的攻击,规则本身已经把成本设计到高不可及。另一些网络只提供随深度增加而增强的概率性保证。两种做法没有哪一种绝对更好,但实际后果不同,在一个网络上学到的规则拿到另一个网络上可能是错的。
能站得住脚的普遍表述其实很窄:深度越深,被回滚的可能性越小;需要多深取决于网络本身以及这笔交易的金额;而且没有哪个网络提供事后由客服撤销的服务。
先看状态,再做反应
待处理、已被替换、失败和已确认是四种不同的状态,对应四种不同的处理方式。待处理意味着已经广播但还没被打包——通常的答案是等,或者用钱包提供的加价替换功能。已被替换意味着后来一笔相同 nonce 的交易顶掉了它。失败意味着网络处理了这次尝试,但拒绝了执行结果。
失败的智能合约调用仍然会消耗手续费。这一点让人意外,但它是网络工作方式的必然结果:验证者确实付出了真实算力去运行代码并发现它回滚了,这份工作无论结果如何都要有人买单。
在这个阶段最昂贵的错误,是因为第一笔看起来什么都没发生就把同一笔款项又发了一次。在重发任何东西之前,先找到交易哈希,在正确网络的区块浏览器上查一下。一笔只是慢和一笔真的失败了,在钱包界面上长得一模一样,在链上却完全不同。
- 在下任何结论之前,先找到交易哈希。
- 在你实际使用的那个网络的区块浏览器上查询它。
- 把平台状态和网络状态区分开——两者可能不一致。
- 在第一笔的状态查清之前,绝不重发。
链上能看到什么,看不到什么
公开的区块浏览器可以显示地址、金额、合约调用、手续费、时间戳和状态。这让你不必征得任何人同意就能独立核实,当平台和网络对发生了什么各执一词时,这一点非常有价值。
区块浏览器看不到的是任何人的身份。它不会显示法律姓名,也无法告诉你某个地址属于个人、公司还是合约。但活动往往是可以被关联的——通过地址复用、通过做过身份认证的平台、通过公开发帖,或者通过对交易模式的分析。公开不等于匿名,而且今天留下的永久记录,明天可能被更好的工具重新分析。
来源与审校
重要论断均以第一手和官方来源为依据。只有在重新核查课文及其引用之后,审校日期才会更新。
- Bitcoin.org: How Bitcoin works
- Solana documentation: Core concepts
- NIST IR 8202: Blockchain Technology Overview
- 撰稿
- Crypto Academy Editorial Desk
- 审校
- Crypto Academy Research Desk
- 下次审校
- 2026年12月2日
