跳到主要内容
ecdsa.com

personal_sign

以太坊的 JSON-RPC 钱包方法,用 EIP-191 版本 0x45 前缀对消息签名,返回 65 字节的 r‖s‖v 签名;是登录和简单消息签名的默认方式。
其他写法personal_signeth_sign

调用形式:personal_sign,参数为 [message, address],其中消息是十六进制编码的字节(大多数钱包也接受 UTF-8 文本)。各个库都提供对应的接口:ethers 的 signer.signMessage、viem 的 signMessage、web3.py 的 encode_defunct。较早的 eth_sign 不加前缀,直接对任意 32 字节哈希签名,DApp 可以借此诱骗用户签署交易,因此大多数钱包会禁用它或对它发出警告。

验证时重新计算带前缀的 Keccak-256 哈希并恢复出地址;对于智能钱包,则调用 ERC-1271 的 isValidSignature(尚未部署的账户还要用 ERC-6492 包装)。以太坊登录消息就是这样签名的。

标准与参考资料

全部术语