Skip to content

Local Setup

This page walks through installing every tool you need for Zink program development and configuring your environment to talk to Zink clusters. Because Zink runs an unmodified SVM, the toolchain is identical to Solana development.

Rust

Install the Rust toolchain via rustup:

bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Starframe currently requires Rust 1.84.1+. Some programs pin a specific toolchain for reproducible builds — check the project's rust-toolchain.toml if one exists.

Verify:

bash
rustc --version
cargo --version

Solana CLI

Install the Solana CLI tools. The recommended method uses the official Anza install script:

bash
sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"

This installs solana, solana-keygen, solana-test-validator, cargo build-sbf, and related binaries into ~/.local/share/solana/install/active_release/bin/. Make sure that directory is on your PATH.

Verify:

bash
solana --version
cargo build-sbf --version

Upstream-compatible

The Solana CLI distributed by Anza is the same binary used for Zink. No fork or custom build is required — just point it at a Zink RPC endpoint.

Configure the CLI for Zink

bash
# Current public Zink Testnet endpoint
solana config set --url https://testnet-rpc.z.ink

# For unpublished or operator-only environments, use the URL supplied by the Zink team
solana config set --url https://your-operator-provided-zink-rpc.example

Zink-specific

https://testnet-rpc.z.ink is the currently published public Zink Testnet endpoint. For any unpublished environment, use the onboarding URL the Zink team gives you. You can also pass --url per command if you work across multiple clusters.

Confirm the connection:

bash
solana config get          # shows current config
solana cluster-version     # should return the Zink cluster's validator version
solana block-height        # confirms you can fetch ledger data

Starframe CLI

Install the Starframe CLI and verify the sf binary:

bash
cargo install star_frame_cli
sf --help

If you need the latest source version instead of the registry release:

bash
cargo install --git https://github.com/staratlasmeta/star_frame star_frame_cli --locked

Create a scaffolded program:

bash
sf new hello_zink
cd hello_zink
cargo build
cargo build-sbf
cargo test

Starframe projects use the standard Solana CLI configuration for deployment. Point solana config at the intended Zink cluster, build with cargo build-sbf, and deploy with solana program deploy.

Node.js

Node.js is optional for on-chain program development, but useful if you generate TypeScript clients from Codama IDLs or build browser/server clients against Zink RPC endpoints. Install Node.js 20+ from nodejs.org or via a version manager like nvm:

bash
nvm install 20
nvm use 20

Verify:

bash
node --version
npm --version

Wallet and keypair setup

Generate a new keypair

bash
solana-keygen new -o ~/.config/solana/id.json

This creates a file-system wallet at the default path the Solana CLI and most client tooling look for.

Import an existing keypair

If you have an existing private key (for example, from a hardware wallet export or another environment):

bash
solana-keygen recover -o ~/.config/solana/id.json

Fund your wallet

For local validator work, you can use a local airdrop:

bash
solana config set --url http://127.0.0.1:8899
solana airdrop 2

For Zink Testnet, do not assume a public faucet exists. Switch back to the intended cluster and fund the wallet through the operator or environment-specific workflow you were given:

bash
solana config set --url https://testnet-rpc.z.ink
solana balance

Zink-specific

The current public docs publish the Zink Testnet RPC endpoint, not a universal faucet flow. If you need testnet funds, use the onboarding path or funding workflow provided for your environment.

Verify your balance

bash
solana balance

Verifying your full setup

Run through this checklist to confirm everything is ready:

bash
# Toolchain versions
rustc --version          # should be 1.84.1+
solana --version         # should match the target cluster's Solana line
cargo build-sbf --version
sf --help
node --version           # optional, should be 20+ for generated clients

# CLI configuration
solana config get        # should show Zink RPC URL and your keypair path
solana cluster-version   # should return the cluster's Solana version
solana balance           # should show funds on the selected cluster

# Build test
mkdir -p /tmp/zink-test && cd /tmp/zink-test
sf new hello_zink
cd hello_zink
cargo build
cargo build-sbf
cargo test

If those commands succeed, your environment is ready for Zink program development.

Editor setup (optional)

For Rust development, rust-analyzer provides IDE support in VS Code, Neovim, and other editors. The star_frame crate works with rust-analyzer like a normal Rust dependency.

If rust-analyzer shows errors related to SBF target resolution, add this to .cargo/config.toml in your project root:

toml
[build]
target = "sbf-solana-solana"

This is only for IDE ergonomics — cargo build-sbf handles target resolution for on-chain builds.

Next steps

Zink is a general-purpose SVM network for programs, operators, and bridge integrations.