Skip to main content

Stop Binding Identity and Funds to a Single Private Key

An externally owned account binds identity, funds, and authority to one ECDSA private key: lose it and everything is unrecoverable, leak it and everything is drained. LUKSO fixes this at the account level, not with better key custody. A Universal Profile is a smart contract account β€” LSP0 ERC725Account holds the identity and the assets, while LSP6 Key Manager controllers sign for it. No controller is the account; controllers can be added, rotated, or removed while the address, the profile, and the on-chain history stay exactly the same.

Structural comparison​

RiskEOAUniversal Profile
Key losttotal, irreversible lossa recovery controller can install a new one β€” see social recovery
Key stolenfull drain, instant, irreversiblescoped controller permissions limit the blast radius, and can be revoked in one transaction
Key rotationrequires migrating assets to a new addressswap the controller, keep the same account address
Multiple devicesshare one key, or fragment across several addressesmultiple controllers under one profile, each independently scoped
Custody upgrademigrate every asset to a new walletadd a hardware-backed controller without moving anything

Why one key is a structural single point of failure​

address = keccak(pubkey)[12:] is the entire account model for an EOA. The private key signs, owns, and identifies the account all at once β€” there's no social fallback, no time-locked recovery, no rotating authority built in. Every one of those has to be solved as a product problem, outside the account, by a wallet vendor. dApps also can't ask for limited authority in a standard, account-level way: connecting a dApp to an EOA means handing over the one key that does everything.

What people try today​

Hardware wallets improve key custody but keep the same fundamental model β€” one key still signs everything, it's just harder to extract. Custodial backends like Privy, Magic, and Web3Auth trade self-custody for a reset-password experience, which solves recoverability by reintroducing a trusted third party. Wallet SDKs such as RainbowKit or wagmi connectors smooth the UX over the same EOA primitive without changing what's underneath it. ENS plus app databases separate identity from custody, but profile state still lives app-by-app instead of on the account.

How Universal Profiles remove the single point of failure​

A Universal Profile is an account contract, not a key. It stores profile metadata through ERC725Y and LSP3, delegates control through LSP6 controllers, reacts to incoming assets through LSP1, and supports sponsored execution through LSP25. The account becomes a user-owned object apps can read and interact with, rather than an address that lives or dies with one key. Add a controller, remove a controller, rotate a controller β€” the address is unchanged, the profile is unchanged, the asset history is unchanged.

The account outlives the key

On a Universal Profile, losing a controller key is a recoverable event, not a terminal one. The account was never the key in the first place.

Related reading: Wallet permission scoping Β· Social recovery without a seed phrase Β· EOA vs. Universal Profile