Identity Subsystem
The OmniSocial identity subsystem is built around smart contract wallets using account abstraction principles to deliver secure, extensible identity and signature management for every user.
This system enables seamless persona switching, multi-device authentication, and integration of zero-knowledge proofs or guardians for recovery and 2FA—all without requiring multiple wallet addresses.
Components
🧱 OmniWalletFactory.sol
Role: Deterministically deploys OmniWallets for each user via
CREATE2
.Functions:
createWallet(address owner, bytes32 salt)
: Deploys a new wallet if one does not exist.getWalletAddress(address owner, bytes32 salt)
: Computes the expected address.
Events:
WalletCreated(address indexed owner, address wallet)
🔐 OmniWallet.sol
Role: User-owned smart contract wallet with account abstraction and built-in recovery & 2FA support.
Key Features:
Meta-transaction execution
Optional WebAuthn 2FA
Guardian approval and recovery
Persona switching and identity anchoring
Core Functions:
execute(address to, uint256 value, bytes calldata data)
: Executes a call on behalf of the user.setGuardians(address[] calldata guardians)
: Sets guardian accounts for recovery.triggerRecovery(address newOwner)
: Initiates account recovery flow.set2FA(bytes publicKey)
: Enables or updates WebAuthn-based 2FA.verify2FA(bytes challenge, bytes signature)
: Verifies second-factor authentication.switchPersona(uint256 personaId)
: Updates the active persona linked to this wallet.
Events:
Execution(address indexed target, uint256 value, bytes data)
PersonaSwitched(uint256 indexed personaId)
2FASet(address indexed owner)
RecoveryInitiated(address indexed newOwner)
GuardiansUpdated(address[] guardians)
Account Abstraction Benefits
Meta-Transactions: Users can authorize actions without holding MATIC. Relayers submit transactions and optionally receive a fee (gasless UX).
Social Login Ready: Can support magic links, QR pairing, and biometrics via compatible frontends.
One Wallet, Many Personas: Personas are minted as NFTs and linked to a single wallet. Users can switch personas without address changes.
Built-in Security: With 2FA and guardian-based recovery at the wallet layer, the OmniWallet ensures both usability and resilience.
Flow Example: Wallet Creation
User signs up via the OmniSocial dApp.
OmniWalletFactory
is called with their address and salt.OmniWallet
is deployed deterministically.User’s first persona is minted and linked.
Wallet is ready to sign content, join DAOs, or receive tips.
Last updated
Was this helpful?