W3
EIP-4361EIP签名Final(2021-10-31)

Sign-In with Ethereum(SIWE)

规定「用钱包登录」消息的标准格式与校验规则,取代各家自己拼字符串。

适用链:全部 EVM 链

为什么重要:登录是钓鱼的高危环节:格式统一后,钱包能高亮域名与用途,服务端也有明确的校验清单。

函数签名与选择器

选择器是签名的 keccak256 前 4 字节;事件则是完整的 32 字节 topic0。 点一下即可复制。

签名 / 字段选择器 / topic0说明
domain必须是当前站点域名,服务端要严格比对,防止签名被换域名复用。
address签名者地址,大小写需按 EIP-55 校验和格式规范化。
nonce服务端下发、一次性使用,防止重放。
issuedAt / expirationTime签发与过期时间,校验时必须检查时效。
chainId / uri / version / statement链标识、资源标识、版本号(当前为 1)与人类可读声明。

实现与使用时的常见陷阱

  • 服务端绝不能信任前端传来的 address 字段,必须从签名里还原地址。
  • nonce 用完即弃,且要有过期时间;被复用就等于账号可以被无限重放登录。
  • domain 必须与请求来源一致,否则攻击者可以用自己域名骗签后再拿签名打你的接口。

相关标准

同属「签名」的其他标准
想把这个标准用起来?开发者路径的第 1–2 阶段讲了怎么把它写进项目;合约 IDE里有对应的可编辑模板与静态自检;链上 API 参考则给出前端调用它的三种写法。