SignLens

Warnings › A swap paying someone else

A swap that pays someone else

Published

A swap instruction names the account its output goes to. A dapp that wants to pay someone on your behalf sets it to theirs; a compromised or malicious front end can do the same without telling you. A balance preview shows your tokens leaving and nothing arriving.

What SignLens shows

Where the router says where its output goes, SignLens checks that it is one of your accounts and warns when it is not. In this example the signer receives the USDT first and swaps it for another account, which may well be a payment it meant to make; SignLens cannot know that, so it says where the output goes:

Warning

2 actions

  1. Transfer 83.838802 USDT from 5Xwc…YDxc to Ha2P…zHKY
  2. Swap 83.838802 USDT for ≥ 83.290054 USDG via Titan

What SignLens found

What this does

Full text, as the engine prints it
2 actions: Transfer 83.838802 USDT from 5Xwc…YDxc to Ha2P…zHKY; Swap 83.838802 USDT for ≥ 83.290054 USDG via Titan
WARNING: review the findings before approving

Findings:
  [HIGH] The swap's output goes to an account that is not yours (instruction 7)

== Transfer tokens | Token program
  Amount: 83.838802 USDT
  From: 5XwccWFyzuFMZcqHSCeo4pM3JRQpZ4SrD3ZPsGmxYDxc
  To: Your USDT account (Ha2P…zHKY)
  Authorized by: CLtnbMrwAAKLKujmh8aQcsQz5SKHVyvHCG8PLL1PmJkN
  Mint: USDT mint (Es9v…wNYB)

== Swap | Titan swap aggregator (layout read from mainnet transactions, descriptor reviewed 2026-10-15, upgradeable by H92m…4SbB)
  Send: 83.838802 USDT
  Receive: ≥ 83.290054 USDG
  Quoted: 83.708597 USDG
  Max slippage: 0.5%
  Fee: 0.03%
  Fee account (sent token): 2U5Z…JTkW's USDT account (6DvM…2JgD)
  Route:
    - Deriverse: USDT → USDC (86.04% of what remains)
    - program HpNf…jxFq: USDT → SOL
    - Tessera V: SOL → USDC
    - Riptide: USDC → USDG
  From account: Your token account (Ha2P…zHKY)
  To account: HeLhJeWqkBcngp2uK1xcAnim6bEHMEi5oKxbZDC6sg94
  Instruction: swap_route

== Also [collapsed]
  Compute unit limit: 1400000
  Compute unit price: 5,000 micro-lamports per compute unit
  Create token account if missing: Token account: Your USDT account (Ha2P…zHKY)
  Create token account if missing: Owner: Your wallet (pay6…g1d2)
  Create token account if missing: Mint: USDT mint (Es9v…wNYB)
  Create token account if missing: Rent paid by: Your wallet (pay6…g1d2)
  Create token account if missing: Token program: Token program (Toke…Q5DA)
  Create token account if missing: Token account: 2U5Z…JTkW's USDT account (6DvM…2JgD)
  Create token account if missing: Owner: 2U5ZmdtVLSkAiceviwBnvE2vD2MLvqAMekSjqYuKJTkW
  Create token account if missing: Mint: USDT mint (Es9v…wNYB)
  Create token account if missing: Rent paid by: Your wallet (pay6…g1d2)
  Create token account if missing: Token program: Token program (Toke…Q5DA)
  Create token account: Token account: BS31…1SRE's USDT account (E6fR…YgJd)
  Create token account: Owner: BS31gingTECkXEj3E16axqeQAbin4r4sZhgkJovz1SRE
  Create token account: Mint: USDT mint (Es9v…wNYB)
  Create token account: Rent paid by: Your wallet (pay6…g1d2)
  Create token account: Token program: Token program (Toke…Q5DA)

== Signers
  Fee payer: Your wallet (pay6…g1d2)
  Signer: CLtnbMrwAAKLKujmh8aQcsQz5SKHVyvHCG8PLL1PmJkN

== Fee
  Total: 0.000017 SOL
  Base: 0.00001 SOL
  Priority: 0.000007 SOL
  Priority basis: 5,000 micro-lamports per compute unit × 1,400,000 compute units requested
  Rent deposits: 0.00148844 SOL, or 0.00446532 SOL in all if the accounts this transaction creates when missing do not exist yet; refunded to whoever closes the accounts

== Validity
  Expires: in about a minute (recent blockhash)

Effects:
  - You receive 83.838802 USDT into Your USDT account (Ha2P…zHKY) from 5XwccWFyzuFMZcqHSCeo4pM3JRQpZ4SrD3ZPsGmxYDxc
  - You send 83.838802 USDT from Your wallet (pay6…g1d2) to Titan swap aggregator (T1TA…XvGT)
  - Transfer ≥ 83.290054 USDG from Titan swap aggregator (T1TA…XvGT) to HeLhJeWqkBcngp2uK1xcAnim6bEHMEi5oKxbZDC6sg94
  - Create Your USDT account (Ha2P…zHKY), managed by Token program (Toke…Q5DA), depositing 0.00148844 SOL unless it already exists
  - Create 2U5Z…JTkW's USDT account (6DvM…2JgD), managed by Token program (Toke…Q5DA), depositing 0.00148844 SOL unless it already exists
  - Create BS31…1SRE's USDT account (E6fR…YgJd), managed by Token program (Toke…Q5DA), depositing 0.00148844 SOL
  - You pay a fee of 0.000017 SOL
  - Valid for about a minute (recent blockhash)

Raw: solana v0 (1016 bytes)
  digest: 05babedb7513cf0b2b4e9ca6ff2bed7999f64873df5f23958c9f6fefbab2e576
Mainnet transaction 21rP…ztv5, slot 457,270,482. Explained for pay6…g1d2 as the signer, by the SignLens engine 0.3.0, on 2026-11-01. How to read this.

What to do

Reject a swap that pays someone else unless paying them is what you asked for.

Other warnings: accounts given away, spending rights, signatures that never expire, lookalike addresses, programs it does not know, multisig approvals you cannot see.

Try it: install SignLens for Chrome or Firefox.