
What are Solana Smart Wallets? Comparison & Implementation Guide
Embedded smart wallets (also known as Account Abstraction wallets) are now available to developers on Solana. This means that apps can offer users simpler onboarding and user experience.
At the same time, developers benefit from better flexibility, security, and compliance — ultimately leading us to safer and more user-friendly onchain experiences.
BIG: Solana Smart Wallets have arrived. This isn't your typical embedded wallet — think fully programmable with zero gas fees and no seed phrases, built for scale. Meet millions of users where they are. h/t to Crossmint, Squads, and Helius for shipping.
Solana Smart Wallets are here. The next-generation of programmable, gasless wallets, built for mass adoption. Deploy in 10 lines of code and scale to millions of users. Why they change everything 👇
Unlike non-executable accounts (data accounts) and traditional embedded wallets, smart wallets are programmable, which unlocks a whole new generation of features: gas sponsorship, having multiple signers per wallet, spend limits, etc.
In this article, you will learn the key differences between embedded smart wallets on Solana and other wallet solutions.
You’ll also understand how smart wallets work on Solana, and how to implement embedded smart wallets into your application.
What is a smart wallet?
Smart wallets are executable program accounts which contain executable code. Unlike traditional wallets which are simple keypairs controlled by a single private key, smart wallets on Solana are implemented as programs, with special logic and features.
What are the benefits of smart wallets?
Smart wallets eliminate the need for seed phrases and their associated risk of loss. Instead, they allow users to designate one or more "signers" or keys to control the wallet.
This flexibility enables more user-friendly key management options like biometrics (e.g., Face ID, Touch ID, or passkeys), as well as advanced security schemes (e.g., multisig) or enterprise-level controls (e.g., a server-side admin key).
Smart wallets make feeless transactions possible by enabling developers to sponsor fees with SOL or other SPL tokens like USDC and easily abstract them away from the end user — leading to a more familiar web2-like user experience.
This means you can build apps without transaction approval prompts, without seed or private keys to lose, and with programmable security enforced by programs (smart contracts).
Embedded Smart Wallets vs. Embedded Wallets vs. Non-Executable Accounts
Embedded Smart Wallets | Embedded Wallets | Non-Executable | |
---|---|---|---|
Implementation | Smart contract with custom logic | Non-smart contract account embedded in app | Standalone application or browser extension |
Account Control | Flexible - users can designate one or multiple signers (ranging from EOAs like Phantom to passkeys and social login wallets) with optional programmatic rules | Keypair guarded by social log-in (usually in TEE or MPC cluster) | Controlled directly by user-owned keypair |
Custody Model | Flexible. They can be set to be self-custodial by the user, custodial by the developer, and even hybrid, with both modes in one | Typically non-custodial - but some recovery methods can convert them into becoming custodial | Self-custody by the end user |
Key Management | Multiple authorization methods (MPC, social recovery, etc.) | Typically managed by the application | User-managed seed phrase/private key |
Transaction Authorization | Custom verification logic (multisig, time-locks, limits) | Application signs with embedded private key | User explicitly approves each transaction |
Fee Payment | Supports fee abstraction and sponsorship, allowing payments in other SPL tokens like USDC or USDT | User pays all transaction fees. Requires onramp on every app | User pays all transaction fees |
Security Model | Security enforced in open-source smart contract code, with optional programmable constraints | Security dependent on closed source code by the embedded wallet provider | Security dependent on client-side, closed source code |
Recovery Options | Programmable recovery (social, guardian keys) | Application-provided recovery methods | Seed phrase-based recovery only |
Spending Controls | Programmable spending limits, approval workflows | Some embedded wallets support server-side transaction policies (caution - if improperly implemented, it can create a custodial architecture) | None |
Regulatory Considerations | Flexible - custody can be programmed and allows to adapt wallets to evolving regulatory changes | Consult with specific wallet provider | Lower scrutiny - user-controlled |
Enterprise Features | Role-based access control, approval workflows | Some embedded wallets have limited server-side controls | None |
Vendor lock-in | Low. Smart wallets are based on open source programs. It is possible to migrate users from an infrastructure provider without changing their address. | High. The only way to leave embedded wallets is to have each user do a private key recovery - which can be insecure and may require users to perform manual steps | Low. User dependent |
Typical Smart Wallet Use Cases
Solana Smart Wallets are useful when you require flexible custodial architectures, such as:
- Company treasury wallets managed by multiple employees
- AI agent wallets in agentic finance use cases, where the agent owner needs a key, and the agent itself needs another one
- Neobanks and financial apps where the user is self-custodial but opts to allow the bank to pull funds (e.g. recurring payments)
A key characteristic of delegated signers is that they can be scoped to limit their permissions over the wallet, such as with spend or asset class restrictions.
How do smart wallets work specifically on Solana?
Smart wallets on Solana operate through a combination of onchain programs and offchain infrastructure with some unique Solana-specific characteristics:
Program-based Architecture
Unlike non-executable accounts (data accounts), Solana smart wallets (or executable program accounts) are typically implemented as on-chain programs that control one or more accounts (PDAs).
Transaction Authorization
Instead of a single private key, smart wallets use custom auth logic:
- Multiple signers can be required (multisig functionality)
- Various auth methods can be supported (keys, biometrics, social)
- Time locks and spending limits can be enforced programmatically
Account Delegation
Users can delegate specific permissions to different addresses, allowing for more granular control over what each key/device can do.
Work with Versioned Transactions
Smart wallets use Solana's standard versioned transaction format.
What is account abstraction?
Account Abstraction (AA) enables developers to create customizable smart contract accounts that go beyond Non-Executable Accounts tied to a single keypair, allowing for more flexible user experiences.
AA allows for custom validation logic, meaning accounts can implement security features such as social recovery, multisig requirements, or spending limits without relying on the blockchain's default rules.
The primary goal of AA is to make blockchain technology invisible to users by removing technical barriers (like transaction fees and seed phrases) while maintaining self-custody benefits.
How do feeless transactions work on Solana?
The key advantage of smart wallets for feeless transactions is that the abstraction happens at the account level rather than requiring dApp-specific implementations, creating a more seamless experience where users may not even realize transaction fees exist.
This means developers can implement:
Built-in Fee Abstraction
Smart wallets can incorporate fee sponsorship directly into their architecture. The wallet contract itself can define rules about who pays for fees and under what circumstances.
Flexible Fee Currency
If you don’t wish to sponsor a user’s transaction fees, they can pay with SOL or tokens such as USDC or USDT.
Approval Mechanisms
Smart wallets can implement custom verification logic to determine when sponsored transactions are allowed, such as rate limiting or restricting to specific apps.
How to Add Solana Smart Wallets to your App with Crossmint
There are many ways to integrate Smart Wallets into your app: client side, server side, or with dual key architectures for AI agents.
In the tutorial below, you will learn how to deploy your first smart wallet server-side.
Prerequisites
First, create a developer account in the Crossmint Staging Console.
Then, navigate to project Settings > General and change the wallet type to “Smart Wallets”.
You can get an API Key by going to Integrate > API Keys and selecting “Create new key” in the “Server-side keys” section.
Under the Wallets API category, select the following scopes:
wallets.create
wallets.read
wallets:signatures.create
wallets:transactions.create
wallets:transactions.read
wallets:transactions.sign
Click “Create server key” to save the key for the next step.
Create Your First Smart Wallet
Create a file (e.g., createWallet.ts
) and enter this code:
const apiKey = "YOUR_API_KEY";
const walletType = "solana-smart-wallet";
const adminSigner = {
// In production, you may want to use an MPC solution, like
// crossmint-managed MPC keys
type: "solana-keypair",
};
async function createWallet() {
const response = await fetch("https://staging.crossmint.com/api/2022-06-09/wallets", {
method: "POST",
headers: {
"X-API-KEY": apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify({
type: walletType,
config: {
adminSigner,
},
}),
});
return await response.json();
}
createWallet()
.then((json) => console.log(json))
.catch((err) => console.error(`error: ${err}`));
Before running it, fill in YOUR_API_KEY
with the key obtained in the previous step.
Now, run the script:
npx tsx createWallet.ts
The API will return a response with your new wallet details.
Save the wallet address, as you’ll use it in the next step.
Interact with Your Wallet
Now that we have wallets set up on your server, let’s interact with them.
Start by visiting Crossmint Testnet USDXM Faucet and paste your wallet address from the step above to receive test USDXM on Solana.
Now that you have some tokens, let’s check the wallet’s balance (checkBalance.ts
):
const apiKey = "YOUR_API_KEY";
const walletAddress = "YOUR_WALLET_ADDRESS"; // From previous step
const tokens = ["sol", "usdc", "usdxm"]; // Tokens to fetch balances for
const chains = ["solana"]; // Chains to query balances from
async function getWalletBalance() {
const url = new URL(`https://staging.crossmint.com/api/v1-alpha2/wallets/${walletAddress}/balances`);
url.search = new URLSearchParams({
tokens: tokens.join(','),
chains: chains.join(',')
}).toString();
const response = await fetch(url, {
method: "GET",
headers: {
"X-API-KEY": apiKey,
"Content-Type": "application/json",
},
});
return await response.json();
}
getWalletBalance()
.then((json) => console.log(json))
.catch((err) => console.error(`error: ${err}`));
Congratulations, you now have smart wallets deployed on your server!
You can explore the documentation from here to learn how to make your first transaction, add delegated signers, and more.
Conclusion
Smart Wallets will usher in a new generation of apps built on Solana that improve onboarding, user experience, security, and compliance.
At Crossmint, we’re excited to power a wide array of use cases from IP to loyalty programs to AI agents with our simple API and no-code tools for wallets, payments, and tokenization that can scale reliably to millions of users, and now, powering fintechs and AI agent apps with the launch of Solana Embedded Smart Wallets.
If you want to learn more about how Solana Smart Wallets can be implemented within your project, contact us, and we’ll be happy to help.
Additional Resources
- Wallets Documentation — Crossmint
- Payments Documentation — Crossmint
- Tokenization Documentation — Crossmint
Related Articles
Subscribe to Helius
Stay up-to-date with the latest in Solana development and receive updates when we post