Appearance
SDKs
Zink speaks the standard Solana JSON-RPC, transaction, and account interfaces. Existing SDKs work with Zink when configured with a Zink RPC endpoint — no forks, patches, or wrappers required.
Upstream-compatible
All network-facing SDKs listed below are upstream Solana SDKs or generated clients that target the standard Solana RPC surface. Use package versions that match the Solana version running on the Zink cluster.
TypeScript / JavaScript
The TypeScript ecosystem is the most widely used for client-side Solana/Zink interaction.
@solana/kit (recommended)
The modern, modular SDK for Solana. Tree-shakeable, type-safe, and designed for both browser and server environments.
bash
npm install @solana/kittypescript
import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://testnet-rpc.z.ink");
const balance = await rpc.getBalance(address("YOUR_ADDRESS")).send();Related packages in the @solana/kit family:
| Package | Purpose |
|---|---|
@solana/client | Low-level RPC client — HTTP and WebSocket transports |
@solana/react-hooks | React hooks for connections, wallets, and account subscriptions |
@solana/web3.js (v2) | Re-export of @solana/kit under the legacy package name |
@solana/web3-compat | Compatibility shim for migrating v1 code to the v2 API surface |
@solana/web3.js v1 (legacy)
Still widely used in existing projects and tutorials. In maintenance mode — new projects should prefer @solana/kit.
bash
npm install @solana/web3.js@1typescript
import { Connection, PublicKey } from "@solana/web3.js";
const connection = new Connection("https://testnet-rpc.z.ink", "confirmed");
const balance = await connection.getBalance(new PublicKey("YOUR_ADDRESS"));Generated clients from Starframe IDLs
Starframe can emit a Codama-compatible IDL from a test-only feature:
bash
cargo test --features idl -- generate_idlThat writes JSON under target/idl/. Feed the IDL into your preferred Codama client generator, then configure the generated client with a Zink RPC endpoint such as https://testnet-rpc.z.ink.
Rust
solana-sdk and solana-client
For building Rust clients, bots, or off-chain services that interact with Zink:
toml
# Cargo.toml
[dependencies]
solana-sdk = "1.18"
solana-client = "1.18"rust
use solana_client::rpc_client::RpcClient;
use solana_sdk::pubkey::Pubkey;
use std::str::FromStr;
let client = RpcClient::new("https://testnet-rpc.z.ink");
let pubkey = Pubkey::from_str("YOUR_ADDRESS").unwrap();
let balance = client.get_balance(&pubkey).unwrap();
println!("Balance: {} lamports", balance);On-chain program crates
For writing on-chain programs (as opposed to clients), these crates are commonly used:
| Crate | Purpose |
|---|---|
star_frame | Starframe framework — accounts, instructions, typed seeds, validation, and IDL generation |
star_frame_spl | Typed CPI helpers for SPL Token workflows |
solana-program | Core types and entrypoint for native programs |
spl-token | SPL Token Program interface for CPI |
spl-associated-token-account | ATA derivation and creation |
borsh | Deterministic binary serialization |
bytemuck | Zero-copy account data layout helpers |
Python
solana-py
A community-maintained Python SDK:
bash
pip install solanapython
from solana.rpc.api import Client
client = Client("https://testnet-rpc.z.ink")
response = client.get_balance("YOUR_ADDRESS")
print(f"Balance: {response['result']['value']} lamports")Go
gagliardetto/solana-go
A community Go client:
bash
go get github.com/gagliardetto/solana-gogo
import "github.com/gagliardetto/solana-go/rpc"
client := rpc.New("https://testnet-rpc.z.ink")
balance, err := client.GetBalance(ctx, pubkey, rpc.CommitmentConfirmed)Connecting any SDK to Zink
The pattern is the same for every language and library:
- Find where the SDK accepts an RPC endpoint URL.
- Replace the Solana mainnet URL with a Zink cluster URL.
- Everything else — transaction construction, signing, account queries — works identically.
Zink-specific
The currently published public endpoint is https://testnet-rpc.z.ink. Refer to Clusters & Environments for unpublished environments. SDK version compatibility follows Solana's release cadence — ensure your SDK version matches the Solana version running on the Zink cluster by checking solana cluster-version.
SDK version compatibility
The Zink cluster runs a specific Solana validator version. Match your SDK versions accordingly:
bash
# Check the Solana version running on Zink
solana cluster-version --url https://testnet-rpc.z.ink| Cluster Solana version | Recommended SDK range |
|---|---|
| 1.18.x | solana-sdk 1.18.x, @solana/web3.js ^1.91 or @solana/kit latest |
| 2.x | solana-sdk 2.x, @solana/kit latest |
Zink-specific
The exact Solana version running on Zink clusters is documented in Clusters & Environments. The cluster version may differ from Solana mainnet — always check before upgrading SDK dependencies.
Next steps
- Frontend Integration — wallet adapters, transactions from the browser
- Testing & Localnet — testing your client code against a local validator
- Clusters & Environments — Zink endpoint URLs and configuration