用途:本技能面向需要在 DApp 中让用户用 MetaMask 签名 EVM 消息的场景,包括用 personal_sign 签名明文消息用于身份验证或校验、用 eth_signTypedData_v4 签名 EIP-712 结构化数据(如 permit 授权、订单或类型化消息),以及用 connectAndSign 在一次用户授权中完成连接与签名。
主要能力:先通过 createEVMClient 创建客户端并 connect 获取账户与 provider,再调用 provider.request 发起签名。personal_sign 参数顺序为 [message, account],message 通常需按 EIP-191 做十六进制编码;eth_signTypedData_v4 参数为 [account, typedDataJSON],typedData 需包含 types、primaryType、domain、message 并以 JSON.stringify 传入,types 中必须声明 EIP712Domain。还提供 ERC-20 Permit(EIP-2612)示例与 connectAndSign 单次授权流程,后者只支持 personal_sign,签名类型化数据需改用 connectWith 传 method: 'eth_signTypedData_v4'。
使用方式:先创建客户端并连接,再调用对应 RPC 方法签名;错误处理中 4001 表示用户拒绝,-32002 表示已有请求待处理。
适用场景:签名登录、EIP-712 授权、Permit、SIWE 单步连接加签名等。
限制:签名前必须已连接账户;参数顺序与类型不可混用,typed data 的 chainId 为整数,SDK 调用中为十六进制字符串;认证不应签名静态字符串,应使用带服务端 nonce 的 EIP-4361 消息并服务端校验签名、nonce 与域名。