PREVIEW — WALLET SDKSOLANA · DROP-IN PROTECTION

Stop your users
blaming you
for failed sends.

Every Solana wallet hits the same three problems: failed transactions cost users SOL, MEV bots drain swap value, and priority fees are guesswork. Users blame the wallet for all three. We sit between your sendRawTransaction and the network, pre-flight every send, and refuse the ones we know will fail or drain.

§ 01 — WHAT YOUR USERS BLAME YOU FOR

Three failure modes. All wallet-fault in the user's mind.

01

Tx failed — fee wasted

User signs, broadcasts, pays the priority fee, lands in a slot, gets reverted by the program. They blame the wallet for the gas waste. Pre-flight simulation would have caught it.

02

Tx never landed

Priority fee was below the congested-slot threshold. Tx times out, user retries, pays more, gets sandwiched. They blame the wallet for "slow Solana". Fee competitiveness vs. recently-landed txs would have told them what to pay.

03

Tokens drained

The program turned out to be a drainer, a honeypot, or routed through a sandwich bot. User loses funds. They blame the wallet for "letting" them sign. Abort gates on active MEV threats / flash-loan / durable-nonce attacks would have refused the send.

§ 02 — WHERE WE FIT

One call between your tx builder and the network.

A · Your wallet
User signs tx
tx.serialize()
B · TxShield
Pre-flight verdict
~50ms · ALLOW / WARN / ABORT
C · Solana RPC
sendRawTransaction
only if verdict.decision === ALLOW
§ 03 — INTEGRATION

3 lines. No tx-builder rewrite.

import { TxShield } from "@txshield/sdk";
const shield = new TxShield({ apiKey: process.env.TXS_KEY });

// Right before connection.sendRawTransaction in your wallet's send flow:
const verdict = await shield.solana.simulate({
  serialized: tx.serialize(),
  policy:     "wallet-default",  // or "strict" for high-value sends
});

if (verdict.decision === "ABORT") {
  // show user: "We detected a drainer / failed tx / active MEV threat".
  // Tx never broadcasts. User keeps their SOL.
  showAbortDialog(verdict.reason);
  return;
}

if (verdict.landing_estimate.fee_percentile_bucket === "low") {
  // fee is below p25 of recently-landed; suggest bump to p75
  suggestFeeBump(verdict.landing_estimate.recommended_fee_for_high_landing);
}

// Otherwise: safe to broadcast.
await connection.sendRawTransaction(tx.serialize());
§ 04 — WHAT YOU GET

Customer-perceived metrics, not infrastructure jargon.

A · Pre-flight
~50ms
added to your send flow
B · Abort gates
3guards
active threat · nonce · flash-loan
C · DEX coverage
8parsers
Raydium · Orca · Meteora · Pump
D · Tickets reduced
est.30-60%
"my tx failed / I lost SOL" category

Embed protection. Keep trust.

The SDK is in private preview. Tell us your wallet, your monthly active users, and which failure mode generates the most support tickets — we'll prioritize integration.

Request integration →