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:
Step 3: Store Wallet Information
Persist what you need to operate on the wallet later: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_idin your database. It’s required for delegated signing. - Context manager — Use
async withso the underlying HTTP client is properly closed. - Rehydrate, don’t recreate — In long-lived servers or fresh processes, use
load_wallet(address)pluspassword=instead of creating a new wallet.