Skip to main content

Overview

This guide walks you through creating EVM wallets using Dynamic’s Python SDK. You’ll learn how to choose a threshold signature scheme, back up key shares, and handle errors.

Prerequisites

Step 1: Choose Your Security Model

Dynamic supports two threshold signature schemes:
  • Security: Highest — requires both your server and Dynamic’s infrastructure
  • Availability: Lower — both parties must be online to sign
  • Use case: Default for all server-side wallets

TWO_OF_THREE (Advanced)

  • Security: High — requires 2 of 3 shares
  • Availability: Medium — tolerates one party being offline
  • Use case: Setups that need to tolerate one share being offline

Step 2: Create Your First Wallet

create_wallet_account returns a WalletProperties object — the user-facing fields are account_address and wallet_id.
The password parameter encrypts your key shares and backs them up to Dynamic at keygen time. Keep this password — you’ll need it to sign and to recover shares. threshold_signature_scheme defaults to TWO_OF_TWO if omitted.

Step 3: Store Wallet Information

After creating a wallet, store the address and wallet ID for later use:
To rehydrate a wallet in a fresh process, call load_wallet(address) and pass password= to subsequent sign calls — the SDK transparently recovers the encrypted key shares from Dynamic’s backup:

Step 4: Handle Errors

All SDK exceptions inherit from DynamicSDKError. The most relevant subclasses for wallet creation and lookup are AuthenticationError (bad or expired API token) and WalletNotFoundError (raised by load_wallet and get_wallet_from_map when the address is unknown).

Best Practices

  1. Password security — Use a strong, unique password per wallet. Consider storing it encrypted in a secrets manager.
  2. Store wallet ID — Save the wallet_id alongside the address in your database. It’s needed for delegated signing.
  3. Error handling — Always handle DynamicSDKError and its subclasses.
  4. Context manager — Use async with so the HTTP client is properly closed.

Next Steps

Last modified on May 5, 2026