在11月15日,BCH将面临潜在的分裂,若真分裂,一个币变两个币,但有些事要注意,否则你的一个币可能会变成无效。 第1章 BCH协议升级 在11月15日,BCH面临一次协议升级。这次协议升级有两个相竞争的协议版本,bitcoin abc 0.18.2和bitcoin sv 0.1。 Abc0.18.2协议版本主要修改是增加了两个操作码OPcode, OP_CHECKDATASIG (CDS)和OP_CHECKDATASIGVERIFY(DSV);将区块里的交易排序规则从拓扑排序(TTOR)改成了规范排序(CTOR)。 SV0.1协议版本主要修改是恢复了比特币早期的四个操作码OPCode,OP_MUL,OP_LSHIFT,OP_RSHIFT,OP_INVERT;删除每个脚本201个操作码的限制;提高区块大小上限到128MB。 两个版本还有一些其他的改变,但本文将重点放在操作码上。 这一次BCH的协议竞争性升级可能会导致分裂,即一条链变成两条链,一个币变成两个币。并且因为两条链采用了相同的forkid,导致相互不带防重放保护,即一条链上的交易,可能在另一条链也合法。 考虑到两条链的交易重放和交易脚本,这可能会导致用户在一条链上发的交易,在另一条链上是合法的,但在另一条链上可能永远无法花出去。即交易可合法重放,但却无法合法解锁。 交易重放的知识,上篇文章我写到了,我复制到本文下一章,看过的直接跳过。本文重点描述交易可合法重放,却不可以合法解锁的情况。 第2章 交易重放 如果区块链分裂后在任一条链上发起一笔交易,在两条链上这笔交易却都会有效。这就是显得你发了两笔交易,这里的另外一笔,就是“重放”。 我打个比方来解释这个,在国军退守台湾后,蒋公将大陆的很多机构都照样在台湾复制了一遍。比如在台湾也建了清华大学。而在大陆的北京,也是有一个清华大学。 如果你在美国给清华大学写一封信,就是用纸,让邮递员送的那种信。但收件地址上只写了“中国清华大学XXX收” 这个收件地址即可以解读为是北京的清华大学,也可以解读为台湾的清华大学。这下邮递员麻烦了,他干脆将你的信复印一遍,送到两个大学去。 这就是重放攻击。因为本来你只想寄给台湾的清华大学,但现在却被重放到了北京的清华大学。 所谓的重放保护,就是想办法让你发的交易,只在一条链上有效,在另一条链上无效。从而可以避免“重放”。 BCH在11月15日如果真分裂了,并且两条链都不带防重放保护,因为两条链都继承了分裂点之前的币,所以使用在分裂点之前的币构造的交易,在两条链上都是合法的,即是可以被重放的。 但如果这笔交易是使用了新的OPCode,不管是哪条链的OPCode,都可能产生能重放但不能花的交易。 第3章 P2SH交易 比特币有一种交易类型叫P2SH,Pay to Script Hash,支付到脚本哈希。这种交易将UTXO锁定到脚本哈希上,因为是脚本哈希,而不是脚本的内容,所以这种交易广播时节点并不知道脚本内容,所以肯定不会知道这个脚本里面包含了什么操作码OPCode。 赎回P2SH交易里的币(即花费P2SH地址里的币)就需要运算脚本里的内容,也就是花费时,脚本里用了哪些OPCode就会被节点知道了。 上述P2SH的特性,就会让BCH在这一次分裂之后的P2SH交易重放变得非常危险。 第4章 带新操作码的P2SH交易可重放,但在重放链上不可花费 如果在11月15日BCH分裂后,使用分裂点之前的UTXO来构造一笔P2SH交易,并且在脚本里面使用了新的OPCode。那这笔交易在两条链都是合法的,因为两条链的节点是无法知道这笔交易使用了对方链的OPCode,这样,这笔交易就是可以被重放的。 这笔P2SH交易一旦被重放到另一条链,那就将不可再被赎回,因为这条链上这个对方链的新OPCode是非法的,无法解锁。这就相当于,这笔币在这条链永远丢失了。 所以在分裂后,请谨慎使用新的OPCode。那如果用户有业务需要用新的OPCode,该怎么办? 第5章 先确保币准确分裂,再用新的OPCode 假如BCH真分裂了,而且你还需要用到新的OPCode,那一定要先将你的币在两条上分离出来。分离就是将你在分裂点之前的币,在两条链上分别发到一个新的地址。 分裂最简单有效的办法就是在分裂点后100个区块,从矿池购买一丁点coinbase交易的UTXO,发到你的BCH钱包里,然后将所有余额一次性转入一个新地址。只需要在一条链上这么做一次,就可以彻底分离出来了。 分离币后,新OPCode你就可以随便用了,因为不会再被重放了。 如果在你没有分离币之前,最好别做转账,更不要转币到3开头的地址。3开头的地址就是p2sh地址。 有些交易所的充值地址就是一个多重签名地址,是3打头的。个人建议交易所先暂停使用3开头的地址充值,也建议用户在分离币之前也不要往这样的交易所里充值。反正分离币之前,最好别动。 对于很多小白用户,最好的方式还是学习一下怎么分离币,如果不行,就存放到承诺会给潜在分裂币的交易所吧。 第6章 结束语 分叉和分裂是区块链世界必须掌握的知识。 (责任编辑:) |