EIP-712 v1 — eth_signTypedData(旧格式,数组结构)
基础转账授权 (v1)
eth_signTypedData
v1 Legacy
查看参数 ▾
bytes4 短于宽度右侧补零
eth_signTypedData
bytes4
v1 Legacy
bytes4 类型值仅 3 字节 0xa9059c,EIP-712 规范要求右侧补零至 4 字节 → 0xa9059c00。
测试钱包是否正确处理右侧补零编码。
查看参数 ▾
EIP-712 v3 — eth_signTypedData_v3
ERC-20 Permit (v3)
eth_signTypedData_v3
DeFi 常见
查看参数 ▾
订单签名 (v3)
eth_signTypedData_v3
DEX 场景
查看参数 ▾
EIP-712 v4 — eth_signTypedData_v4(含嵌套、数组、bytes、动态类型等全覆盖)
ERC-20 Permit
v4bytes32
简单
查看参数 ▾
Permit2 Batch Transfer
v4arraynested
Uniswap
查看参数 ▾
OrderBook 订单
v4uint256address
DEX
查看参数 ▾
Gnosis Safe 多签
v4bytes
多签
查看参数 ▾
🧪 综合大型结构(覆盖所有类型)
v4nested structarraybytesbooluint/intstring
全覆盖
BatchTransfer 结构覆盖:address/address[]、bool/bool[]、bytes(动态)、bytes1/4/8/16/32 及其数组、嵌套结构体(TransferItem[]、TransferMetadata)、uint8~256 及其动态/定长数组、int8~256 及其数组,全类型极限测试
查看完整参数 ▾
eth_sign — 原始哈希签名(危险操作,钱包可能会警告)
⚠️ 注意
eth_sign 对任意 32 字节哈希签名,无法展示可读内容。部分钱包会禁用此方法。gasless 模式下 Bitget DEX 会用此方法。
Hash
0xd11e505f9a76d28144db86eb31b9e73804fb41f1b21e06fbf3d0982340ce839d
异常参数 / 错误处理测试 — 验证钱包对非法输入的报错行为
📋 测试目的
以下用例均为故意构造的错误参数,用于验证钱包对非法签名请求的处理方式(拒绝、报错提示、崩溃等),不应产生有效签名。
用户拒绝(Cancel)
personal_sign
拒绝验证
弹出签名窗口后手动点击拒绝,验证钱包返回 code 4001 错误。
空消息 personal_sign
personal_sign
空值
message 传空字符串 "",钱包应报错或拒绝。
错误地址格式
personal_sign
无效地址
from 传非地址字符串 "not-an-address",验证参数校验。
eth_sign 非 32 字节
eth_sign
长度错误
传入 16 字节的 hash,不满足 32 字节要求,验证钱包报错。
v4 缺少 primaryType
eth_signTypedData_v4
字段缺失
EIP-712 结构中省略 primaryType 字段。
v4 类型与数据不匹配
eth_signTypedData_v4
类型错误
types 声明 value: uint256,但 message 中传字符串 "not-a-number"。
v4 未声明的引用类型
eth_signTypedData_v4
类型缺失
message 中引用 GhostType,但 types 里没有定义。
v4 domain 无 chainId
eth_signTypedData_v4
domain 缺字段
domain 中不包含 chainId,部分钱包可能警告或直接拒绝。
uint256 溢出值
eth_signTypedData_v4
数值溢出
uint256 字段传入 2^256(超出上限一),验证溢出处理。
v4 types 为空对象
eth_signTypedData_v4
空结构
types 传 {},primaryType 指向不存在的类型。
不存在的 RPC 方法
unknown_method
方法不存在
调用不存在的方法 eth_signSomethingFake,验证钱包返回 -32601 错误。
v4 传入非 JSON 字符串
eth_signTypedData_v4
格式错误
第二个参数传入 "this is not json {",验证 JSON 解析报错。