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
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.Replace You’ll get a signature and an Explorer link. Open the link and expand Program Instruction Logs to see the program’s
invoke.ts
YOUR_API_KEY and YOUR_PROGRAM_ID, then run it: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.