跳到主要内容
ecdsa.com

ERC-1271(合约签名验证)

智能合约账户验证签名所依据的以太坊标准:验证者调用 isValidSignature(bytes32 hash, bytes signature),并把返回值 0x1626ba7e 视为有效。
其他写法ERC-1271EIP-1271isValidSignatureERC-6492

智能账户(Safe、ERC-4337 钱包、通过 EIP-7702 委托的账户)无法为自己的地址生成普通的 ECDSA 签名,因此由合约来判定:Safe 检查是否有足够多的所有者签名,通行密钥钱包检查 P-256 签名,会话密钥钱包检查自己的策略。魔术值就是函数选择器 bytes4(keccak256("isValidSignature(bytes32,bytes)"))。

如果地址上已有代码,验证者应该尝试 ERC-1271;如果还没有,则尝试 ERC-6492:ERC-6492 用部署该账户所需的工厂合约调用包装签名,并以 32 字节的魔术后缀 0x6492…6492 结尾。viem 的 verifyMessage、OpenZeppelin 的 SignatureChecker 等库能处理全部三种情况。验证结果可能随时间变化,因为合约的所有者和策略都可能改变。

标准与参考资料

全部术语