Overview
This guide walks you through creating Solana (SVM) wallets using Dynamic’s Python SDK. Solana wallets use Ed25519 key pairs and return base58-encoded addresses.
Prerequisites
Step 1: Choose Your Security Model
Dynamic supports two threshold signature schemes for Solana wallets:
TWO_OF_TWO (Recommended)
- Security: Highest — requires both your server and Dynamic’s infrastructure
- Availability: Lower — both parties must be online to sign
- Use case: High-value transactions, maximum security
TWO_OF_THREE (Advanced)
- Security: High — requires 2 of 3 shares
- Availability: Medium — tolerates one party being offline
- Use case: Balanced security and availability
Step 2: Create Your First Solana Wallet
create_wallet_account returns a WalletProperties dataclass — account_address is the base58-encoded Ed25519 public key (the standard Solana address format), and wallet_id is the Dynamic identifier you’ll need for delegated signing.
To opt into the advanced threshold scheme, pass threshold_signature_scheme:
Persist what you need to operate on the wallet later:
In a fresh process, rehydrate the wallet with load_wallet and pass password= on subsequent sign calls so the SDK can auto-recover the local key share:
Step 4: Handle Errors
Best Practices
- Password security — Use a strong, unique password per wallet. Store it encrypted in a secrets manager.
- Store wallet ID — Save
wallet.wallet_id in your database. It’s required for delegated signing.
- Context manager — Use
async with so the underlying HTTP client is properly closed.
- Rehydrate, don’t recreate — In long-lived servers or fresh processes, use
load_wallet(address) plus password= instead of creating a new wallet.
Next Steps
Last modified on September 21, 2026