SATURN®DOCS

DOCS / BUILD / 10

Developer quickstart

If your stack runs against a Solana endpoint, it runs against Saturn. Same SDKs, same CLI, same program toolchain — different chain.

Hello, Saturn

WEB3.JS
import { Connection, LAMPORTS_PER_SOL, PublicKey } from "@solana/web3.js";

const saturn = new Connection("https://rpc.saturn.cx", "confirmed");
console.log("slot", await saturn.getSlot());

const balance = await saturn.getBalance(new PublicKey("<YOUR_ADDRESS>"));
console.log("SATURN", balance / LAMPORTS_PER_SOL);

LAMPORTS_PER_SOL works because SATURN uses the same nine decimals — see the token page.

The Solana CLI

TERMINAL
solana config set --url https://rpc.saturn.cx
solana balance
solana transfer <ADDRESS> 0.5 --allow-unfunded-recipient

Fund the paying keypair through the bridge first — mainnet has no faucet.

Deploying programs

Saturn ships the standard BPF loaders — including the upgradeable loader and loader-v4 — so the normal deploy flow applies:

TERMINAL
cargo build-sbf
solana program deploy target/deploy/my_program.so

Anchor projects work the same way: point the provider at the Saturn endpoint and deploy. Program caching behaves like vanilla Solana, and the compute budget program is available.

Live data

WebSocket subscriptions run alongside the HTTP endpoint: slotSubscribe, signatureSubscribe, and accountSubscribe. Connection objects from web3.js use them transparently for confirmations.

Building on the pool

Shield, private transfer, and unshield are chain instructions, not a contract API. The TypeScript SDK in the Saturn repository provides buildShield, buildTransfer, and buildUnshield, plus note encryption and Groth16 proving. Wire formats live in builtin programs if you're composing instructions directly.