智能账户(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 等库能处理全部三种情况。验证结果可能随时间变化,因为合约的所有者和策略都可能改变。