ContractSignature
EIP-1271 contract signature verification primitive. Enables verification of signatures from smart contract wallets using theisValidSignature standard interface.
Overview
EIP-1271 allows smart contracts to validate signatures, enabling:- Smart contract wallets (Gnosis Safe, Argent, etc.)
- Multi-signature schemes
- Custom signature validation logic
- Account abstraction
Installation
Basic Usage
Verify Contract Signature
Unified EOA + Contract Verification
API Reference
Functions
isValidSignature(provider, contractAddress, hash, signature)
Verify signature using EIP-1271 contract method.
Parameters:
provider: JSON-RPC provider withrequestmethodcontractAddress: Contract address (string or Uint8Array)hash: Message hash (32 bytes)signature: Signature bytes
Promise<boolean> - True if signature is valid
Example:
VerifySignature({ keccak256, recoverPublicKey, addressFromPublicKey })
Factory function that creates a unified signature verifier for both EOA and contract accounts.
Parameters:
keccak256: Keccak256 hash functionrecoverPublicKey: secp256k1 public key recovery functionaddressFromPublicKey: Address derivation function
Constants
0x1626ba7e is bytes4(keccak256("isValidSignature(bytes32,bytes)")).
How It Works
Detection Logic
VerifySignature automatically detects the account type:
- Calls
eth_getCodeto check if address has contract code - If no code (
0x): Uses EOA verification (ecrecover) - If has code: Uses EIP-1271 contract verification
Contract Interface
EIP-1271 contracts must implement:0x1626ba7e, invalid signatures return anything else.
Usage Examples
With Gnosis Safe
With Personal Message
Custom Provider
Error Handling
Smart Contract Example
Example EIP-1271 implementation:Related
- EIP-1271 Specification
- SignedData - EIP-191 personal message signing
- Signature - ECDSA signature handling
- TypedData - EIP-712 structured data

