We refreshed our doc site!
Bookmarked links may have changed
Read release notesIn addition to the wallet type (infrastructure model), the account type you choose also determines the capabilities supported in the wallets you create. Circle offers two account types:
The following table shows the account types supported by product:
Account Type | Programmable Wallets | Wallet Signing Service |
---|---|---|
Externally Owned Accounts (EOA) | ✅ | ✅ |
Smart Contract Accounts (SCA) | ✅ | ❌ |
The following table shows which blockchains support EOAs or SCAs:
Blockchain Network | Externally Owned Account (EOA) | Smart Contract Account (SCA) |
---|---|---|
Avalanche Fuji Testnet | ✅ | ❌ |
Avalanche Mainnet | ✅ | ❌ |
Arbitrum Mainnet | ✅ | ✅ |
Arbitrum Sepolia Testnet | ✅ | ✅ |
Ethereum Sepolia Testnet | ✅ | ✅ |
Ethereum Mainnet | ✅ | ✅ |
Polygon Amoy Testnet | ✅ | ✅ |
Polygon Mainnet | ✅ | ✅ |
Solana | ✅ | ❌ |
Solana Devnet | ✅ | ❌ |
EOAs are Ethereum's most commonly used account type and Solana's only supported account type. They consist of a private and public key, with the public key representing the account address. EOAs require secure management of the private key and always require gas tokens to initiate transactions. While EOAs offer the flexibility to initiate any transaction, they have certain limitations, such as the need for a private key and the inability to control them programmatically onchain.
Benefits:
Limitations:
feePayer
, which means developers can sponsor gas fees on behalf of users.SCA is another type of Ethereum account that replaces an EOA with a smart contract. SCAs do not have private keys but are controlled by an EOA that interacts with the deployed smart contract. SCAs allow developers to write customized logic within the smart contract, enabling advanced functionalities.SCAs have been in the Ethereum ecosystem for many years but recently gained popularity thanks to a new standard called ERC-4337 (account abstraction). ERC 4337 went live on Mainnet in March 2023, enabling a trustless standard the community could build SCAs around. ERC-4337 also introduced the concept of paymaster, which enables simplified gas abstraction, enabling anyone to sponsor gas fees for the end user or let the end user pay for gas in any ERC-20 token.
Modular Smart Contract Accounts (MSCA)
SCAs can have different version types. The default version for all SCAs are modular in nature, that is, Modular Smart Contract Accounts (MSCAs). MSCAs are smart accounts that can be extended with different modules to enhance their functionality (similar to how one can install apps on iPhones and Android to give the smartphone more functionality). Circle's MSCA adhere to ERC6900- a ERC standard that Circle engineers are co-authoring. While we enable the creation of MSCAs by default, we will roll out support for different modules in the next couple of months!
The following are the versions of SCAs supported by Programmable Wallets today. The exact version type is displayed in the successful response when creating a wallet.
SCA Version | Description | Available |
---|---|---|
circle_6900_singleowner_v1 | Modular Smart Contract Account compliant with ERC6900 and ERC4337. The version has the following features: - Assign a single address as the owner - Batch multiple userOps in one transaction - [coming soon] Add modules to extend the functionality of the account (e.g., addressBook, Session Keys etc) | ✅ |
circle_6900_v1 | Modular Smart Contract Account compliant with ERC6900 and ERC4337. The version has the following features: - Assign any type of ownership (single owner, multiple owners, passkeys, multi-sig) - Batch multiple userOps in one transaction - [coming soon] Add modules to extend the functionality of the account (e.g., addressBook, Session Keys etc) | Coming soon |
When considering wallet infrastructure models, choosing the most suitable combination of infrastructure model (user-controlled or developer-controlled) and account type (EOA or SCA) empowers developers to create powerful and user-friendly applications tailored to their needs.
Benefits:
Limitations:
Solana only supports EOAs.
To choose between an EOA or SCA, set the accountType
to SCA
or EOA
when creating a wallet.
Applicable APIs:
POST /user/initialize
.POST /user/wallets
.POST /developer/wallets
// EXAMPLE REQUEST BODY IN JSON
// For deveveloper-controlled wallets
// entityentitySecretCiphertext and walletSetId are also required in the request.
// SCA
{
"idempotencyKey": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
"accountType": "SCA", // HERE
"blockchains": [
"MATIC-AMOY"
]
}
// EOA
{
"idempotencyKey": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
"accountType": "EOA", // HERE
"blockchains": [
"MATIC-AMOY"
]
}
Based on our experience, SCAs generally provide a more straightforward user experience for most use cases. They allow developers to focus on creating innovative functionalities within the smart contract. However, the specific needs of each project should be carefully considered when choosing between EOA and SCA account types.
We recommend using EOAs if you are building on Ethereum
Creating an SCA wallet might become expensive. We strongly recommend using SCAs if you are using any Polygon or any L2s.
Externally Owned Account (EOA) | Smart Contract Account (SCA) | |
---|---|---|
Fees for account creation | No fees. | Yes, creating a wallet incurs gas fees. Note: With our process of lazy deployment, you won't have to pay the gas fee at the time of wallet creation. Instead, the fee will be charged when you initiate your first outbound transaction. |
Gas abstraction | Yes, supported on Solana only. | Yes, it is supported via Gas Station. |
Modules | No | Yes, modules that extend the functionality of the base wallet are coming soon. |
Where it makes sense | If you are building on Ethereum (since gas costs on Ethereum can be expensive), or Solana | If you want a web2-type user experience that makes blockchain invisible or want advanced control of your wallets e.g. embedded wallets, payments wallets, developer wallets, and vault type wallet. |