Wallet Architecture

CapSign wallets are ERC-4337 smart contract wallets built on the Diamond Pattern.

Overview

Wallets support:

  • Passkey authentication (WebAuthn/P256)

  • EOA signers (MetaMask, etc.)

  • ERC-4337 account abstraction

  • Multi-ownership

  • Document signing (ERC-1271)

  • Attestation management

Diamond Structure

WalletDiamond
├── DiamondCutFacet - Upgrades
├── DiamondLoupeFacet - Introspection
├── AccessControlFacet - Permissions
├── WalletCoreFacet - ERC-4337 logic
├── WalletSignatureFacet - ERC-1271 signatures
├── WalletDocumentsFacet - Document management
└── WalletIdentityFacet - Attestation management

Key Facets

WalletCoreFacet

ERC-4337 account abstraction:

WalletSignatureFacet

ERC-1271 signature validation:

Supports:

  • Passkey signatures (WebAuthn P-256)

  • EOA signatures (ECDSA)

  • Multi-sig

WalletDocumentsFacet

Document management:

WalletIdentityFacet

Attestation management:

Deployment

Via WalletFactory

CREATE2 Deterministic

Wallets deployed with CREATE2 for:

  • Predictable addresses

  • Vanity addresses

  • Cross-chain consistency

Address = f(factory, salt, initCode)

Ownership

Individual Wallets

Passkey owners:

Entity Wallets

EOA owners:

Multi-Ownership

Wallets can have multiple owners:

  • Multiple passkeys

  • Multiple EOAs

  • Mix of passkeys and EOAs

Signatures

Passkey Signatures

WebAuthn (P-256) signatures:

Verified using P-256 elliptic curve.

EOA Signatures

Standard ECDSA signatures:

Storage

WalletCoreStorage

Owner Management

Owners stored using Coinbase Smart Wallet's MultiOwnable pattern:

  • Owners indexed by position

  • Can add/remove owners

  • Removed owners tracked separately

ERC-4337 Integration

UserOperation Flow

Gas Sponsorship

Paymaster can sponsor gas:

Security

Access Control

All state-changing functions protected:

Reentrancy Protection

All external calls protected:

Emergency Mode

Pause wallet in emergencies:

Events

Testing

Gas Costs

Typical costs on Base:

  • Wallet deployment: 0.5M gas ($0.01)

  • Execute transaction: 100k gas ($0.001)

  • Add owner: 50k gas ($0.0005)

Resources

Last updated

Was this helpful?