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 必须与请求来源一致,否则攻击者可以用自己域名骗签后再拿签名打你的接口。
相关标准
同属「签名」的其他标准