Validate a message signed by an Ethereum contract wallet
The owner of a contract wallet can rotate, and its authorization policy can involve multiple signers. Ask the wallet whether it accepts a specific signature for a specific digest.
Check the returned magic value
Encode isValidSignature(bytes32,bytes) with the exact digest expected by the application and the supplied signature bytes. Send eth_call to the wallet address. Decode the response as ABI bytes4.
isValidSignature(digest, signature) → 0x1626ba7e
A decoded value of 0x1626ba7e signals acceptance. A different value or revert does not establish authorization. Avoid recovering a single EOA address and treating that as the wallet’s policy.
Record when validation took place
Use the state at the intended block and retain its hash. A signature accepted before a signer rotation can fail later, and a wallet may apply time-dependent rules. Historical rechecks also require state availability for the block being queried. eips.ethereum.org EIP-1271