Skip to main content

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:
  • 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:
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

  1. Password security — Use a strong, unique password per wallet. Store it encrypted in a secrets manager.
  2. Store wallet ID — Save wallet.wallet_id in your database. It’s required for delegated signing.
  3. Context manager — Use async with so the underlying HTTP client is properly closed.
  4. 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 May 5, 2026