Fireblocks Boosts Solana with Native Calls and Gasless Tx.

Okay, so you're knee deep in coding a Solana app, right? Need to send some SOL or call a program, but handling keys and signing feels like a nightmare. Especially if you're using Fireblocks for that secure vault setup. That's where Fireblocks' boost for Solana comes in - native program calls and those sweet gasless tx vibes. Wait, gasless? Kinda. It means no upfront gas from your end; Fireblocks handles the heavy lifting behind the scenes. I usually start with their Solana Web3 adapter because it plugs right into your existing @solana/web3.js code. Super straightforward.

Why does this matter? Solana's fast as hell, but tx fees are tiny anyway - like ~0.000005 SOL per signature. But with Fireblocks, you skip the wallet juggling. No more exporting privkeys or dealing with seed phrases. It's all API driven signing. In my experience, this saves hours on auth flows.

Get your Fireblocks workspace ready first

Don't skip this. Log into your Fireblocks dashboard. If you're on testnet, spin up a sandbox workspace - it's free and quick. Head to the API users section. Create a new API user. Grab your API and secret. The secret? Download it as a file; you'll point to its path later.

Next, make a vault account. Call it something like "Solana Playground." Note the vaultAccountId - it's a number like 0 or 1. Fund it with some devnet SOL if you're testing. Use their faucet or transfer from another wallet. Pro tip: Enable the Program Call API. It's early access, so ping your CSM if it's not lit up. That's the magic for native calls.

API Co Signer pairing? Do it now

  1. Download the API co signer app on your phone or desktop.
  2. Pair it with your API user. Scan QR, approve. Done.
  3. Test it: Try a raw transfer via the SDK to confirm.

Sound familiar? If you've done EVM chains with Fireblocks, this is the same drill. But Solana's program calls? That's the boost.

Installing the Solana Web3 Adapter - five minutes tops

  • Clone the repo: git clone https://github.com/fireblocks/solana web3-adapter.git
  • cd solana web3-adapter
  • Install globals if needed: npm install -g typescript ts node
  • npm install
  • Copy .env.example to .env and fill it: API, secret path, vault ID.

That's it. No bloat. Runs on TypeScript, 100% of the code. Stars are low cuz it's beta, but it works solid. I forked it once to tweak polling - you'll see why later.

Your first connection - let's send some SOL

Look, open a new file, say send sol.ts. Import the goods:

import { FireblocksConnectionAdapter } from './build'; // adjust path
import { Connection, PublicKey, Transaction, SystemProgram, LAMPORTSPERSOL } from '@solana/web3.js'; const solanaEndpoint = 'https://api.devnet.solana.com'; // mainnet beta for real const config = { apiKey: process.env.FIREBLOCKSAPIKEY, apiSecretPath: process.env.FIREBLOCKSSECRETKEY_PATH, vaultAccountId: 0, // your number devnet: true, // flip for prod pollingInterval: 2000, // ms, tweak if slow feeLevel: 'MEDIUM', // LOW/MEDIUM/HIGH waitForFireblocksConfirmation: true // waits for COMPLETED status
}; async function main() { const connection = await FireblocksConnectionAdapter.create(solanaEndpoint, config); const fromAccount = new PublicKey(await connection.getAccount()); // your vault's SOL address console.log('Your address:', fromAccount.toBase58()); const tx = new Transaction().add( SystemProgram.transfer({ fromPubkey: fromAccount, toPubkey: new PublicKey(' recipient devnet address here '), lamports: LAMPORTSPERSOL * 0.001 // 0.001 SOL }) ); const txHash = await connection.sendTransaction(tx); console.log('Tx hash:', txHash);
} main();

Run ts node send sol.ts. Boom. Tx flies off. Fireblocks signs it via their Program Call API. No gas from you - they estimate and cover the ~0.000005 SOL fee internally. If it hangs, check pollingInterval. I usually bump it to 5000ms on mainnet.

What's next? Add a note before sending: connection.setTxNote('Test transfer from adapter');. Or tag an external ID for tracking: connection.setExternalTxId('my order-123');. Handy for dashboards.

Native program calls - this is the real boost

Okay, transfers are baby steps. The juice is calling Solana programs. Like swapping on Jupiter or staking. Fireblocks' createTransaction endpoint eats raw instructions. But the adapter makes it web3.js native.

Here's a swap example. Say you wanna swap 0.1 SOL for USDC on Raydium. Grab a Jupiter quote first (use their API). Then build the tx:

// Assume you have Jupiter swap tx from their API
const swapTx = // VersionedTransaction from Jupiter // Adapter handles it
const signed = await connection.sendTransaction(swapTx.transaction, [/ signers if needed /]);
console.log('Swapped! Hash:', signed);

But honestly, for complex stuff, use their direct API. POST to /v1/transactions with operation: 'RAW' and solanaProgramCall payload. Include instructions array. Fees? Still ~0.000005 SOL per sig, but Fireblocks batches if possible.

Potential issue: Program ID mismatches. Double check your instruction data. I hit this once - hex encoded wrong. Fix? Use solana program library tools to serialize.

Staking SOL with this setup

  1. Get a validator pubkey, like a good one: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU (Blockdaemon example).
  2. Build stake instruction via StakeProgram.
  3. Send via adapter. Unbonding? ~2 days, as always.
  4. Track rewards in Fireblocks dashboard.

In my experience, staking via Blockdaemon + Fireblocks is clutch for institutions. Connect wallet, input amount, sign. Fees negligible.

Troubleshooting the gotchas

Sometimes it flakes. Connection times out? Your RPC endpoint's clogged. Switch to Helius or QuickNode - free tiers rock for devnet. API secret path wrong? Node can't read it - chmod 600 the file.

Tx stuck in BROADCASTING? Set waitForFireblocksConfirmation: false. Grab hash early. Or crank silent: false for logs. Vault underfunded? Check balance via getAccount().

IssueQuick Fix
Auth fail 401Regen API secret, re pair co signer
Program call rejectedVerify instruction discriminator
High feesfeeLevel: 'LOW', ~0.000002 SOL
Polling slowpollingInterval: 1000
Devnet vs mainnet mixupDouble check devnet: true/false

See? Most are config tweaks. Test on devnet always.

Gasless tx - how it actually works

"Gasless" here means relayer style, but Fireblocks does it custodial. You build tx, they sign and submit, deducting from your vault balance post facto. No meta tx needed. For EVM equiv, it's their Web3Provider. Solana adapter mirrors that.

Cost breakdown:

  • SOL tx: 0.000005 SOL base + priority if hot.
  • Program call: +0.000005 per extra sig.
  • Fireblocks fee: 0.3% on transfer value? Nah, check your contract - raw tx no markup.

Why care? Scales for high volume apps. No user gas prompts.

WalletConnect for dApps - plug and play

Building a frontend? Connect Fireblocks via WalletConnect. In your React/Vue app:

import { WalletConnectProvider } from '@fireblocks/solana walletconnect'; // conceptual // QR pops, scan with Fireblocks app
const provider = new WalletConnectProvider();
await provider.connect();
const txid = await provider.send(transaction);

Real talk: For Definitive.fi trades, they whitelist your address first. Email support, get approved, scan QR, sign. Disconnects clean too - toggle switch.

Issue: Interferes with Phantom? Yeah, disable one at a time. I usually test isolated.

Token mints and SPL fun

Want Token-2022? Fireblocks SDK: POST /v1/tokenization/tokens. Deploy mint, set authorities. Interact via programs. Adapter sends the txs.

Example: Mint 1000 USDC like tokens.

// Use TokenProgram.createMint etc.
const mintTx = new Transaction().add(/ instructions /);
await connection.sendTransaction(mintTx);

Authorities? Fireblocks holds mint/freeze. Revoke later if needed.

Scaling it - production tips

Multiple vaults? Pass array to vaultAccountIds. Webhooks for tx events - set endpoint in dashboard. Catch COMPLETED/FAILED.

Rate limits? Fireblocks generous, but batch txs. I run 100/min fine.

Custom fees? Override in config. Medium's safe - avoids mempool drops.

Examples that stick

Dig the repo's examples dir. Transfer, airdrop, program invoke. Fork it, tweak.

Me? I built a batch sender: Loop txs, set notes like "Batch #3/50". Ran 200 SOL dust sweeps. Zero fails.

Questions? Hit Fireblocks devs Discord. They're quick.

One more: EVM vs Solana comparison

Solana AdapterEVM Web3Provider
SetupWeb3.js drop inEthers drop in
Fees~0.000005 SOLDynamic GWEI
ProgramsNative callsContract calls
ConfirmPoll to COMPLETEDWait blocks

Solana wins on speed. 400ms blocks vs ETH 12s.

Honestly, if you're Solana only, this adapter's your best friend. Go build something cool.