合约用最新 chainid 做 EIP-712 重放防护,遇到改链 ID 的硬分叉就会把老签名全部作废。EIP-1965 提议一个预编译,回答「某个链 ID 在某个块号是否有效」。本文复盘这份 2019 年提案的问题设定与它停摆的原因。
汇总与「分叉」相关的文章,帮助你系统了解该主题。
合约用最新 chainid 做 EIP-712 重放防护,遇到改链 ID 的硬分叉就会把老签名全部作废。EIP-1965 提议一个预编译,回答「某个链 ID 在某个块号是否有效」。本文复盘这份 2019 年提案的问题设定与它停摆的原因。
链ID不是常量,硬分叉可能改写它。EIP-1959 与 EIP-1965 先后提出让合约查询链ID历史的操作码与预编译,解决链改名后旧签名集体失效的问题。拆解两者的差异、成本设计与双双搁浅的原因。
分叉后同一笔交易可能在两条链上都有效,账户余额被两边同时花掉。卢克·多什 2016 年提出 BIP-115,设计 OP_CHECKBLOCKATHEIGHT 操作码,把交易绑定到特定链上某个高度的区块哈希末段。提案最终关闭从未部署。本文拆解这条锁的机制、五万块回看窗口的取舍与它想解决的双击找回难题。
Bitcoin Core preciousblock只让本地节点在同等累计工作量的区块间改变接收顺序偏好;后续调用可覆盖,重启后效果消失。本文解释其适用边界与审计方法。
硬分叉让同一笔币在两条链上同时存在,而签名并不承诺链身份,于是有了重放攻击。本文以 2017 年 Bitcoin Cash 分叉为例,拆解 SIGHASH_FORKID 如何把链身份写进签名,并给出自托管与托管两种场景下的认领与防重放核对清单。
getchaintips展示的是当前节点知道的所有链尖,而不只是主链。出现多个tips很常见:可能是短暂分叉、只收到header、曾经无效的分支或同步残留。判断异常必须同时看status、height、branchlen与chainwork。能依据一手来源判断Bitco
本文解释创世块(genesis block)的角色:它“无父块”的特殊性、创世文件如何定义初始状态、“创世参数”为什么决定一条链的身份、以及分叉/硬分叉如何产生“新的创世语义”。