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
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
solana config set --url https://rpc.saturn.cx
solana balance
solana transfer <ADDRESS> 0.5 --allow-unfunded-recipientFund 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:
cargo build-sbf
solana program deploy target/deploy/my_program.soAnchor 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.