Skip to main content

Overview

DynamicSvmWalletClient::signTransaction signs the serialized message of a Solana transaction (i.e. bytes(transaction.message), not the full wire envelope) and returns the Ed25519 signature as a lowercase hex string. For most apps you’ll want sendTransaction which signs and broadcasts in one call. Reach for signTransaction when you need the raw signature out-of-band — co-signing, batched broadcast, or programs that pre-assemble the wire envelope themselves.

Prerequisites

Build the Message

Build the unsigned Solana transaction with your Solana library of choice — sava-core is the canonical JVM option — then serialize just the message portion (everything after the signature section):
If you use a different SDK, the equivalent is bytes(transaction.message) in solana-py / solana-web3.js’s tx.compileMessage().serialize().

Sign the Message

signatureHex is a lowercase 128-char hex string (64-byte Ed25519 signature). To assemble the wire envelope, prepend the signature in the slot matching the wallet’s index in the message’s accountKeys array.

Assembling the Wire Envelope

For a single-signer transaction:
Send signedTxWire to any Solana RPC via sendTransaction.

Next Steps

Last modified on May 25, 2026