Skip to main content
On Solana, unsignedTransaction is a serialized transaction, hex or base64 encoded depending on the yield, and either a legacy Transaction or a versioned (v0) VersionedTransaction. Detect both before signing; a single client that only handles one combination will fail on yields built the other way.

Prerequisites

  • An action’s transactions[]; see Transaction signing for decoding by chain family and Enter and exit flows for the request and poll loop.
  • A Solana keypair, or a connected wallet such as Phantom for browser signing.

Decode, sign, and submit

Solana transactions carry a recent blockhash that is only valid for a short window (about 150 blocks). If signing takes longer than that, the broadcast fails; request a new action rather than reusing the stale unsignedTransaction.

Browser wallets (Phantom)

window.phantom.solana accepts a deserialized transaction directly and signs and sends it in one call, returning { signature } rather than a separate broadcast step:
This is unrelated to EVM browser signing; a Solana-connected Phantom exposes window.phantom.solana, not the window.phantom.ethereum provider used for EVM networks.

Submit the signed transaction instead

To hand yield.xyz the signed bytes rather than broadcasting yourself, call POST /v1/transactions/{tx.id}/submit with { "signedTransaction": ... } instead of submit-hash. Use one path per transaction, never both. See Transaction signing for when each fits.

Next steps

Transaction signing

The shared contract across chain families: decode, validate, sign, submit.

Enter and exit flows

Build the request, branch on executionPattern, and poll to a terminal status.