ERC-4337 Smart Accounts
Users can deploy a smart wallet for individual use, and app developers can issue smart wallets to their users programmatically.
thirdweb's smart wallets have the following features by default:
- Have multiple owners
- Execute transactions (single and batched).
- Send and receive native tokens.
- Send and receive ERC-721 and ERC-1155 NFTs.
- Store contract metadata.
Choose the right smart wallet setup for your app. thirdweb offers the following three different kinds of smart wallets:
Simple smart wallets
Account smart wallet is a simple smart wallet that comes with all the basic benefits of account abstraction, along with the mentioned default features.
Account smart contract is non-upgradeable. Developers should use this wallet if they do not anticipate making any future upgrades to their users’ wallets.
Managed Smart Wallets
ManagedAccount smart wallet is an upgradeable smart contract written in the dynamic contract pattern.
App developers can issue
ManagedAccount smart wallets programmatically by deploying a
ManagedAccountFactory smart contract.
The admin of the
ManagedAccountFactory contract can push upgrades to all
ManagedAccount that it creates. This admin does not require any permissions on the
ManagedAccount smart wallets to do so. An upgrade to the features of
ManagedAccount applies to all
ManagedAccount smart wallets created by the factory. This is the right wallet for developers who anticipate pushing upgrades to their users’ wallets.
Example use case of push upgrades:
An app wants its user wallets to only be able to own NFTs within its ecosystem. This would be an upgrade to the smart wallet contract's
onERC1155Received transfer hooks.
The app can enforce this behaviour by pushing this upgrade to its user wallets.