Skip to main content
Solana is a high-performance blockchain known for fast transaction speeds and low costs. This guide covers Solana-specific features when using Dfns wallets.

Transaction structure

Solana transactions can include multiple instructions in a single transaction. The Transfer API creates one instruction per transaction, while the Broadcast API allows you to combine multiple instructions. Each transaction is identified by its signature (the transaction ID is the signature itself).

Receiving SPL tokens

Before a wallet can receive an SPL token, it needs an Associated Token Account (ATA) for that specific token. This is a Solana network requirement.
  • Automatic: When using the Transfer Asset endpoint, set createDestinationAccount: true to automatically create the recipient’s ATA.
  • Manual: To create an ATA using the Broadcast API with the @solana/spl-token library, see the Solana SDK examples for complete implementation details.
Creating an ATA costs a small amount of SOL (rent). When using createDestinationAccount: true, the sender pays this fee.

Recent blockhash and transaction timing

Solana transactions require a recent blockhash that must be within the last ~100 blocks (approximately 10 seconds). This short window can cause issues when:
  • Policies require approval before broadcast
  • Network latency is high
  • Multiple signatures are needed
If the blockhash expires before broadcast, the transaction will fail. Durable nonce accounts: For transactions that need more time (such as those requiring policy approval), use a durable nonce account. This replaces the recent blockhash with a nonce that doesn’t expire. See the Solana SDK examples for a complete implementation of durable nonce account creation and usage.
Store the nonce account address securely. You’ll need it for any transaction that should use the durable nonce instead of a recent blockhash.

Transfers

Use the Transfer Asset endpoint for all Solana transfers:
  • Native SOL: Use kind: Native with amount in lamports (1 SOL = 1,000,000,000 lamports)
  • SPL tokens: Use kind: Spl with the token’s mint address in contract
  • Token Extensions (SPL 2022): Use kind: Spl2022 with the token’s mint address

Compute budget and fees

Solana fees are based on compute units consumed by the transaction. The fee is calculated by simulating the transaction and converting compute units to SOL. For complex transactions, you may need to set a higher compute budget using the Compute Budget Program.

SDK integration

For full transaction control, use the Dfns SDK with @solana/web3.js. See complete examples: