Overview
Dynamic’s Python SDK exposes two transaction methods on DynamicSvmWalletClient:
send_transaction — signs a serialized message and broadcasts it via JSON-RPC. Returns the base58-encoded transaction signature. This is the path most apps want.
sign_transaction — signs only. Returns a hex-encoded Ed25519 signature you assemble into a transaction yourself. Note that this is asymmetric with sign_message, which returns a base58 signature — the SDK uses different encodings on purpose.
Both methods sign the transaction message (not the full transaction). Pass bytes(tx.message) or tx.serialize_message().
Prerequisites
Quick Start: Send a Transaction
send_transaction builds the wire transaction, signs the message, and broadcasts it for you:
rpc_url resolution: explicit argument → DynamicSvmWalletClient(default_rpc_url=...) → falls back to https://api.devnet.solana.com.
Signing with a Password-Protected Wallet
Pass sponsor=True to have Dynamic pay network fees for the transaction:
Gas sponsorship requires the feature to be enabled for your environment in the Dynamic developer console.
Manual Signing and Broadcasting
When you need to inspect, log, or relay the signed transaction yourself, use sign_transaction to get the raw signature and assemble the wire transaction by hand.
sign_transaction returns the signature as hex (64 bytes / 128 hex chars). Convert to bytes with bytes.fromhex(sig_hex) before inserting into the transaction. If a downstream consumer expects base58:
Verifying a Signature
Error Handling
Next Steps
Last modified on September 21, 2026