verification
use it
# add to stunt.yaml
services:
helius:
adapter: embedded:helius-style
# then
$ stunt upThe embedded: source extracts this adapter from the binary — no git clone, fully offline.
how to mock the Helius Solana RPC + Enhanced API locally
Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of Helius Solana RPC + Enhanced API. It works offline, keeps state across requests and restarts, and every response is synthetic: the route shapes, status codes, pagination, and webhook delivery follow the real Helius Solana RPC + Enhanced API v0 surface — the data is fake, the behavior is real.
api surface (11)
generated from the adapter manifest — exactly what boots, nothing more
11 routes
POST/
POST/v0/transactions
GET/v0/addresses/{address}/transactions
GET/v0/addresses/{address}/balances
GET/v0/addresses/{address}/nfts
POST/v0/names
POST/v0/webhooks
GET/v0/webhooks
GET/v0/webhooks/{webhookId}
PUT/v0/webhooks/{webhookId}
DELETE/v0/webhooks/{webhookId}
VM-verified behaviors (10)
- ✓the api-key query gate rejects both surfaces
- ✓the JSON-RPC reads answer deterministic values; an unknown method is a -32601 envelope
- ✓sendTransaction walks null → processed → confirmed → finalized, firing the enhanced webhook exactly once at first confirmation
- ✓simulate_fail lands an on-chain InstructionError while confirmation still proceeds
- ✓the enhanced history seeds once per address, newest first, in the Helius parsed shape
- ✓type/source filters and before/until/limit paging narrow the history
- ✓a sent transaction joins its address's history; other addresses do not see it
- ✓the parse-transactions contract holds and the balances/nfts/names lookups are deterministic
- ✓webhook registration round-trips the Helius config shape with 404s for unknown ids
- ✓deliveries are unsigned, carry authHeader as Authorization, honor transactionTypes and fire exactly once
Not implemented (3)
- RPC covers 6 methods; no getAccountInfo, getSlot, getSignaturesForAddress
- No DAS API (getAsset, searchAssets) or /v0/tokens metadata endpoints
- No getPriorityFeeEstimate, requestAirdrop, or WebSocket subscriptions
Differs from the real API (6)
- Webhook payloads carry one transaction each; real Helius batches an array
- Confirmation milestones fixed by clock: processed 1-2s, confirmed 2-3s, final 3s+
- sendTransaction config takes simulate_fail/simulate_type/simulate_address
- Enhanced transactions limit capped at 100 (real API max 1000)
- A crossed before/until cursor pair silently ignores the until signature
- The confirmation webhook fires only when a read lands inside the 2-3s confirmed window
want more of the Helius Solana RPC + Enhanced API surface? adapters are YAML + Starlark — the authoring guide covers adding routes, fixtures, and state machines. Open an issue for anything big first, or just file a PR — merged routes ship in the next release.