Skip to main content

Overview

The Solana connection allows you to interact with the Solana blockchain, query data, and prepare transactions.

Prerequisites

  • Dynamic SDK initialized (see Quickstart)
  • User authenticated (see Authentication)
  • Solana wallets enabled in your Dynamic dashboard

Create Connection

import DynamicSDKSwift

let sdk = DynamicSDK.instance()

func createConnection() throws {
    let connection = try sdk.solana.createConnection()
    print("Solana connection created")
}

Get Latest Blockhash

Required for building transactions:
import DynamicSDKSwift

let sdk = DynamicSDK.instance()

func getBlockhash() async throws -> String {
    let connection = try sdk.solana.createConnection()
    let result = try await connection.getLatestBlockhash()
    print("Latest blockhash: \(result.blockhash)")
    return result.blockhash
}

Query Account Balance

import DynamicSDKSwift
import SolanaWeb3

let sdk = DynamicSDK.instance()

func getBalance(address: String) async throws -> UInt64 {
    let connection = try sdk.solana.createConnection()

    guard let pubkey = try? PublicKey(string: address) else {
        throw SolanaError.invalidAddress
    }

    let balance = try await connection.getBalance(publicKey: pubkey)
    return balance
}

enum SolanaError: LocalizedError {
    case invalidAddress

    var errorDescription: String? {
        "Invalid Solana address"
    }
}

Get Solana Wallets

import DynamicSDKSwift

let sdk = DynamicSDK.instance()

let solanaWallets = sdk.wallets.userWallets.filter {
    $0.chain.uppercased() == "SOL"
}

for wallet in solanaWallets {
    print("Address: \(wallet.address)")
}

Solana Networks

Access configured Solana networks:
let sdk = DynamicSDK.instance()

let solanaNetworks = sdk.networks.solana

for network in solanaNetworks {
    print("Network: \(network.name)")
}

Connection Methods

MethodDescription
createConnection()Create a Solana connection instance
getLatestBlockhash()Get the latest blockhash for transactions
getBalance(publicKey:)Get account balance in lamports
getAccountInfo(publicKey:)Get detailed account information

Dependencies

To build Solana transactions, add the SolanaWeb3 package:
// Package.swift
dependencies: [
    .package(url: "https://github.com/solana-mobile/SolanaSwift", from: "1.0.0")
]

Next Steps