所谓分叉,指的是同一条链在某个区块之后出现了两种走法。有的岔路等下一个块出来就自己合回去,没人注意;有的是规则被改了,从那个块开始,账本真的分成两本,各记各的。
新手撞见这个词,多半是在一条交易所公告里:某某网络将在某个区块高度进行升级和硬分叉,届时暂停该币的充值与提现。紧接着群里就有人说要送币了,也有人担心币会没。两种说法各对一小半,想知道自己碰上的是哪一半,得先弄明白链为什么会分。
交易所发的分叉公告,常见的是计划内升级:全网跟着换规则,多数时候不会多出一种币。只要有一部分人继续跑旧规则、那条链又真有人在用,就会出现两种币同时交易的局面。2022 年以太坊合并之后的 ETHW 就是这样,当时有交易所按 1 ETH 对 1 ETHW 给符合条件的用户发放过。
一条链为什么会分成两条
区块链没有一个总部来宣布「从今天起按新规矩记账」,每台节点都按自己装的那套规则,判断一个区块算不算数。大家装的规则一致,账本就是一本;不一致,就可能分叉。
比特币开发者术语表的「分叉」词条,讲的其实是一种和规则无关的情况:两个矿工几乎同时挖出了同一高度的块,网络里短暂出现两个版本,等下一个块接到其中一个后面(比特币平均约 10 分钟出一个块),另一个就被放弃。普通用户基本感觉不到它,交易所充值要等几个确认,原因之一就在这里。
真正值得单独起名字的,是规则变了的两种:软分叉和硬分叉。区分它们只看一个问题——没升级的旧节点,还认不认新规则下产出的块。节点和账本是什么关系,区块链是什么那篇从头讲过。
软分叉:规矩收紧,旧节点照样认
软分叉是把规则收紧:原来允许的写法里,有一部分从此不再允许。比特币术语表的定义基本就是这句话,并且补了一句:新块在旧节点眼里仍然有效,所以它向后兼容。
打个比方。小区门禁原来刷卡、输密码都能开,物业改成只认刷卡。刷卡进门的人,没换新系统的旧门禁照样放行,小区也还是那一个小区。
最常被拿来举例的是隔离见证(SegWit)。它的技术文档 BIP 141 在「层级」一栏直接写着 soft fork,2017 年 8 月 24 日在比特币区块高度 481,824 启用。文档也没回避代价:没升级的节点看不见、也不校验新加进来的见证数据。
对普通持币的人,软分叉几乎不用做任何事。钱包和交易所跟不跟进新功能,是它们的事,你的币不会变成两份。
硬分叉:同一个词,比特币和以太坊用法不同
硬分叉是规则改到了旧节点不认的程度:新块在没升级的节点眼里无效。接着上面的比方,物业给新门禁加了刷脸开门,没升级的旧门禁不认脸,刷脸的人就被它挡在外面。同一扇门,新旧两套系统给出了两种答案。
不少科普文章在这里把两件事混着讲了:「硬分叉」这个词,在比特币和以太坊两边的用法不一样。比特币术语表把它定义成区块链的永久分岔,说的是结果;以太坊官网的历史页,却把每一次计划内的网络升级都记成一次 fork,说的是手段。以太坊那边的升级绝大多数是全网节点一起换了规则,旧规则那条链没人接着跑,你也不会多出一种币;例外是 2016 年的 DAO 分叉,以及 2022 年合并之后有人继续挖旧链形成的 ETHW。
所以同样一句「要硬分叉了」,可能是一次例行升级,也可能是一个社区吵翻了各走各路。分辨的办法,是看有没有一群人公开说要继续跑旧规则,而且真有矿工、交易所和钱包跟着他们走。
| 事件 | 时间与区块 | 类型 | 最后留下几条有人用的链 |
|---|---|---|---|
| 比特币隔离见证(SegWit) | 2017-08-24,区块 481,824 | 软分叉 | 一条 |
| 比特币现金(BCH)分出 | 2017-08-01,区块 478,559 | 硬分叉 | 两条:BTC 与 BCH |
| 以太坊 DAO 分叉 | 2016-07-20,区块 1,920,000 | 硬分叉 | 两条:ETH 与以太坊经典 ETC |
| 以太坊 Spurious Dragon 升级 | 2016-11-22 | 硬分叉(全网跟随) | 一条 |
DAO 那一行多看一眼。以太坊官网的记录是:一部分矿工拒绝跟着分叉,理由是 DAO 出事并不是协议本身的缺陷,他们后来组成了以太坊经典。分叉之前的历史两边共用,从那个块往后,成了两种币。比特币现金也一样,维基百科的说法是:分叉那一刻持有一枚比特币的人,自动也持有一枚比特币现金。矿工在这件事里为什么说话算数,可以看 PoW 和 PoS。
公告说要分叉,你手里的币会怎样
先看币放在哪。放在交易所,由交易所替你处理;放在自己的钱包,私钥在你手上,真分成两条链时两边的余额都归你,操作上的风险也归你。托管和自持具体差在哪,见 钱包和交易所账户的区别。
- 币在交易所:常见做法是升级前后暂停这个网络的充值和提现,交易一般照常。有交易所在 2022 年一次 BNB Beacon Chain 升级公告里写得很直白:充提暂停,交易不受影响,升级不会产生新币,技术更新由它替账户里的持币用户处理;网络稳定后恢复充提,不再另发公告。所以暂停多久、几时恢复,要看你用的那家的公告,或者充提页面实际有没有开放。分叉出来的新币发不发、怎么发,也是交易所说了算,它没有义务一定支持。
- 币在自己的钱包:计划内升级,确认钱包软件跟上了新版本就行。真分成两条链的,分叉那一刻的余额在两边各有一份,用的是同一把私钥。
- 真分成两条链时,还有个坑叫「重放」:你签过名的一笔交易,被人原样拿到另一条链上再广播一次,结果两边都转出去了。以太坊在 2016 年 11 月的 Spurious Dragon 升级里加入了 EIP-155,让交易可以带上所在链的编号,带了编号的交易在以太坊上有效,到了以太坊经典上就不再成立。新分出来的链做没做这种保护,要看它自己的说明。
换我们来选,分叉前后几天就不碰这个币:不充、不提,等充提页面确实恢复了再动。省下的那几天不值得拿去赌一笔卡在半路的转账。
「领分叉币」那一步,最容易把币送出去
分叉本身很少直接让人丢币,丢币多半发生在「去领新币」的时候。道理不复杂:要领新链上的币,就得用私钥签名,证明你在分叉前有币。骗子只要做一个「领取工具」,让你把私钥或助记词填进去,就能把你两条链上的币一起拿走。
2017 年比特币黄金(BTG)分叉之后就出过这么一件事。据 CoinDesk 当年 11 月 22 日的报道,一个叫 mybtgwallet 的网站打着生成 BTG 钱包的旗号,让用户提交私钥或助记词,被卷走的币合计超过 330 万美元,其中 300 万美元以上是比特币本身,BTG 只占十来万。项目团队还曾在推特上替它背书。
所以只记一条:任何要你输入助记词或私钥才能「领币」「激活」「验证」的网页,一律当骗局处理。助记词为什么这么要命,私钥和助记词是什么讲过。币本来就在交易所、交易所也宣布支持的,等它发就行,不用自己去找任何工具。
实在想自己领,常见的稳妥顺序是:先另建一个新钱包(新的助记词),把旧助记词下面所有地址、所有链上的币都转过去,确认一样不剩,然后才把旧助记词导入支持新链的钱包软件,任何网页表单都不填。mybtgwallet 当年也被项目方推荐过,卷走的除了比特币还有莱特币和以太坊,所以顺序比挑工具更要紧:旧助记词下的资产全部搬走之后,就算这一步踩了雷,丢的也只是还没到手的那份新币。
有人在群里喊「又要分叉送币了」,先回他一句:这是一次全网跟着走的升级,还是真有人要另起一条链?