| Type | Who Controls Use of Private Key | Supported Wallet types | Example Use-cases |
|---|---|---|---|
| Developer-controlled | Developer, secured using MPC | • Developer-controlled (EOA or SCA) | Backend wallets that you create either for end-user or your own business’s use-case that you completely control, such as: • Receive payment deposits and reconciliation • Programmatic distribution of tokens, one-to-many payouts • Programmatic interaction with dApps • AI agent wallets |
| User-controlled | End-user, secured using MPC | • User-controlled (EOA or SCA) | Non-custodial embedded wallets in your app. End user authentication via social login or email. Users can collect NFTs and tokens, and have full control over transactions and signing from their wallets. |
| Passkeys | End-user, secured on user’s device | Modular wallets | Non-custodial embedded wallets that are secured on your users’ devices. End user authentication via passkey, with ability to backup passkey to personal cloud. Users can collect NFTs and tokens, and have full control over transactions and signing from their wallets. |
Developer-controlled wallets
Developer-controlled wallets allow developers to retain control over their own wallets, or their users’ while streamlining user interactions with the Web3 ecosystem. With developer-controlled wallets, developers can programmatically transact on behalf of their users without the need to manually sign or manage private keys. To start building developer-controlled wallets, see Create Your First Developer-Controlled Wallet. For security setup, we use 2-of-2 multi-party computation (MPC) where developers have the choice of hosting one or two of the MPC nodes, or relying on Circle to host and protect them through cryptography to ensure that developers have full control over these wallets. The options include:- Rely on Circle to host the 2 MPC nodes (default): The signing is protected cryptographically by an Entity Secret that you create and store on your server, and is used for every wallet creation and transaction. This option is ideal for getting started quickly with minimum setup effort.
- Rely on Circle to host 1 of the 2 MPC nodes. Shared key management where you and Circle each host one of the MPC nodes. Circle offers a keyguard service that you host on your servers to authorize the MPC signing before every transaction. This splits the management of private keys to two parties across different servers.

- Host both of the MPC nodes: similar to the setting above, but you host both of the MPC nodes with the keyguard service that authorizes the signing for every transaction. Such setup might be required in certain regulatory jurisdictions.