安全 Replay Attack

重放攻击

把一条链上的合法交易拿到另一条链上重放的攻击,硬分叉后两条链共享交易历史时高发。EIP-155 引入链 ID 从根本上防御。现代钱包已内置防护,但自定义签名消息(如 EIP-712)仍需检查 chainId 字段。

重放攻击(replay attack)把一条链上的合法签名拿到另一条链重放:硬分叉后两条链共用历史地址与密钥,没有链 ID 保护的旧签名可在分叉链上原样执行——你的转账被「复制」了一份。

现代变体

  • 跨链桥消息重放(同一消息在目标链执行两次)
  • 签名重放:链下签名被收集后择机提交

防御已标准化

链 ID(EIP-155)解决分叉重放;nonce 防同链重放。用户侧相关的是签名纪律:签名=可无限期保存的授权凭证,签过的东西永远假设已被存档(签名骗局)。