Skip to main content
In this guide you’ll deploy a real program to devnet and invoke it, with the entire flow running on Helius infrastructure. You’ll fund a wallet with requestAirdrop, deploy a prebuilt sample program, then call it with sendTransaction and confirm the result with getSignatureStatuses. Using a ready-made program keeps the focus on the deploy-and-invoke loop instead of writing Rust.
Prerequisites: the Solana CLI and Rust (to build the program), Node.js 18+ (to invoke it), and a Helius API key. Devnet works on every Helius plan.

1

Point the Solana CLI at your Helius devnet RPC

Use your Helius endpoint for every CLI command, and create a wallet if you don’t have one:
solana address prints your wallet’s public key, which you’ll fund next.
2

Get devnet SOL

Deploying costs a bit of SOL. Devnet SOL is free and only good for testing, so fund your address with the faucet below or from the CLI:
Devnet faucets are rate-limited, so an airdrop can fail. If it does, wait a moment and retry, or use Solana’s official devnet web faucet as a fallback. Deploying the sample program needs only ~1 SOL.
3

Clone and build the sample program

Grab the “Hello, Solana!” program from Solana’s official program-examples repo. It just logs a greeting when invoked, which is about the smallest program that still proves the full loop works.
program-examples is a Cargo workspace, so cargo build-sbf compiles the program to target/deploy/hello_solana_program.so at the repo root (not inside the program folder). Stay in the program-examples directory for the next step.
4

Deploy to devnet through Helius

The CLI submits the deploy transaction through your Helius RPC and prints the Program Id. Copy it, since you’ll invoke this program next.
5

Invoke the program with sendTransaction

In a fresh folder, set up a small TypeScript client that builds a transaction, sends it, and confirms it.
invoke.ts
Replace YOUR_API_KEY and YOUR_PROGRAM_ID, then run it:
You’ll get a signature and an Explorer link. Open the link and expand Program Instruction Logs to see the program’s Hello, Solana! greeting.

What’s happening

Everything routes through your Helius RPC

solana config set --url points every CLI command (airdrop, deploy, and the balance checks) at your Helius devnet endpoint. The TypeScript client uses the same endpoint, so the whole flow runs on Helius infrastructure.

The invoke loop: send, then confirm

sendRawTransaction calls the sendTransaction RPC method under the hood and returns a signature immediately, before the network has processed the transaction. That’s why you poll getSignatureStatuses until confirmationStatus reaches confirmed, checking err to catch failures. This send-then-confirm pattern is the foundation of every Solana transaction you’ll submit.

Next steps

How to Get Devnet SOL

Every way to fund a devnet wallet, plus rate-limit tips.

sendTransaction

All parameters, including skipPreflight, preflightCommitment, and retries.

Land transactions reliably

When you go to mainnet, use Sender for ultra-low-latency landing.

Build a portfolio tracker

Other track: pull any wallet’s tokens, NFTs, and SOL, with a live activity feed.