The current meta-transaction implementation prevents smart contract wallets from using gasless transactions due to limited signature verification support.
In NativeMetaTransaction.sol, the verify()
function relies solely on ecrecover
for signature validation:
This implementation has two key limitations:
It only supports raw ECDSA signatures produced by Externally Owned Accounts (EOAs)
The signature validation mechanism lacks EIP-1271 support required for smart contract wallet signatures:
No isValidSignature()
check
No contract signature validation path
Hard comparison against ecrecover output only
This affects both the OWPIdentity.sol and MembershipFactory.sol contracts since they inherit from NativeMetaTransaction.
Smart contract wallets (e.g., Gnosis Safe, Argent) cannot execute gasless transactions
Institutional users with multi-sig wallets are blocked from meta-transaction functionality
Manual code review
Implement EIP-1271 support by adding contract signature validation:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.