Smart contract reference
Overview
Unforgettable Contracts is a set of Solidity smart contracts that power account and vault access recovery for the Unforgettable protocol. The system supports subscription-gated recovery methods and cross-chain synchronization of subscription state, enabling the same recovery guarantees to apply across multiple networks. Contracts are grouped by functional domains, such as accounts, recovery, subscriptions, cross-chain messaging, and vaults, to make it easy to navigate the architecture and identify relevant integration and extension points.
Deployed addresses
Ethereum Mainnet
| Contract | Address |
|---|---|
VaultFactory | 0x54C239E71af51Fc141A2BDf5469dc992b7256AD8 |
VaultSubscriptionManager | 0xdc8838478f49C212e68fD8b538B90c81D0f47621 |
VaultFactory is deployed deterministically (via CREATE3 / CreateX in this repo’s deployment approach), so its address is intended to match across supported chains. Other contracts may be chain-specific.
Deterministic deployment salt
To lock deterministic deployment to a specific protocol deployer, the deployment uses:
- Salt:
0x00D37f35Ec44ecC4e2F54de1FA3208F73d632E5900004e6f6e204f626c697461 - Protocol deployer address:
0x00D37f35Ec44ecC4e2F54de1FA3208F73d632E59
Contract map
Accounts
Account— Minimal EIP-7702 smart account integrating recovery.AccountSubscriptionManager— Subscription manager scoped to a smart account.Base7702AccountRecovery— Base recovery logic for EIP-7702 accounts.
Recovery core
RecoveryManager— Central recovery coordinator (strategy-based).ARecoveryStrategy— Abstract strategy interface / base implementation.SignatureRecoveryStrategy— EIP-712 signature-based recovery strategy.
Subscription core
BaseSubscriptionManager— Subscription manager coordinating multiple modules.BaseSideChainSubscriptionManager— Base subscription manager for side-chains.
Subscription modules
BaseSubscriptionModule— Base extension hook for subscription logic.CrossChainModule— Cross-chain subscription synchronization module.SBTDiscountModule— Discounts based on supported SBT ownership.SBTPaymentModule— Subscription payments using SBTs mapped to fixed durations.SignatureSubscriptionModule— EIP-712 permit-style subscription extension.TokensPaymentModule— Payments in ETH or ERC-20 tokens.
Cross-chain subscription sync via Wormhole
SubscriptionsSynchronizer— Publishes subscription state updates across chains.SubscriptionsStateReceiver— Receives and processes cross-chain subscription updates.SideChainSubscriptionManager— Side-chain manager with cross-chain sync support.
Helper data
HelperDataFactory— Registration + helper-data part submissions + metadata/subscription tracking.HelperDataRegistry— Helper-data storage updated via EIP-712 signatures.
Gnosis Safe integration
UnforgettableRecoveryModule— Safe module enabling recovery by swapping a specified owner.
Tokens
SignatureSBT— SBT with signature-based minting.ReservedRMO— ERC-20 granting each vault a one-time reserved token allocation.
Vaults
Vault— Vault controlled with a master-key EIP-712 signature.VaultFactory— Deterministic factory for vaults (incl. registry of unchangeable vault names).VaultSubscriptionManager— Subscription manager scoped to a vault.
Libraries
EIP712SignatureChecker— Wrapper around OpenZeppelinSignatureCheckerfor EIP-712 validation flows.TokensHelper— ETH / ERC-20 transfer helpers.
Practical integration entrypoints
- Vault lifecycle:
VaultFactory→Vault - Vault subscriptions:
VaultSubscriptionManager(plus subscription modules where relevant) - Recovery:
RecoveryManager(configured with one or more strategies) - Smart accounts:
Account+Base7702AccountRecovery+AccountSubscriptionManager - Cross-chain subscriptions:
SubscriptionsSynchronizer+SubscriptionsStateReceiver
Extension points
- Add a new recovery method: implement a new
ARecoveryStrategyand wire it intoRecoveryManager. - Add a new subscription payment/extension path: implement
BaseSubscriptionModuleand register it in your subscription manager. - Add cross-chain behaviors: extend
CrossChainModuleand/or the synchronizer/receiver logic.