Skip to content
Open StampDEX

Review a PSBT before signing

State
Needs review
Lifecycle
stable
Applies to
continuous deployment, verify with GET /api/version
Last verified
2026-09-01
Chain
bitcoin / mainnet
Source and review
Owning source
src20 marketplace service output layout, service fee constants, wallet adapters
Review window
30 days
View page as Markdown
Full source and verification record
Owning repository
bitcoinuniverseio/stampdex (private application source)
Source path
src20 marketplace service output layout, service fee constants, wallet adapters
Applicable release
continuous deployment, verify with GET /api/version
Chain and network
bitcoin / mainnet
Lifecycle
stable
Last verified
2026-09-01
This page
Edit on GitHub · Bitcoin Universe platform

For: anyone about to sign. Goal: know that what your wallet is asking you to sign is what StampDEX told you it was. Prerequisites: a transaction on screen. Chain and network: Bitcoin mainnet.

Safety: this is the last point at which anything is reversible. After you sign and broadcast, Bitcoin decides.

StampDEX builds transactions. Your wallet displays them and signs them, or refuses. Nothing spends your funds without a signature made in your wallet. So the review screen and the wallet screen must agree, and if they do not, the correct action is to refuse.

Inspect a part

Input: the escrow funding output

The escrow address pays what it holds: the buyer’s payment, locked when the trade started. Only the venue’s escrow key can spend it, which is why neither side can run off with both sides of the trade.

Fixture value: 24,546 sats

Output: seller payout

The seller’s proceeds: the listing total minus the 1.5% seller service fee. This output pays to an address the seller controls.

Fixture value: 12,000 sats

Output: service fee

The venue’s 1.5% service fee for this side of the trade, a separate output so it is visible before you sign rather than hidden inside an exchange rate.

Fixture value: 180 sats

Output: the SRC-20 transfer

A nearly-zero-value output carrying the SRC-20 transfer inscription: the tokens moving from escrow to the buyer. The protocol reads the amount from the inscription, not from the sats.

Fixture value: 546 sats (carrier output)

Output: change to escrow, then to recovery

If the escrow overpaid the fee rate, the change returns to the escrow first and is swept to the buyer in the recovery flow. A change output is normal, not a red flag.

Fixture value: 1,820 sats

PartSide of the tradeFixture value
Escrow inputheld by StampDEX24,546 sats
Seller payoutseller side12,000 sats
Service feeheld by StampDEX180 sats
SRC-20 transfer outputbuyer side546 sats (carrier output)
Changesettled on Bitcoin1,820 sats

A controlled example for orientation, not a live or signable transaction. What the review panel shows before your wallet opens is the real transaction; compare it against the checklist.

The buy review, reproduced as a controlled recorded state with deterministic example numbers. Read the review panel in production before you sign; these numbers are not live.Controlled recorded state, 2026-09-02 · app 38bc2a0 · dark desktop
Check Why
The total amount leaving your wallet It should equal the listing total plus your service fee plus the network fee
The destination address It should match the payment address on the review panel
The fee rate You chose it. A rate you did not choose is a reason to stop
Nothing else is being spent A buy should not touch unrelated outputs
Check Why
Only your one anchor input is signed The listing uses SIGHASH_ALL | ANYONECANPAY on your input alone
The token amount It should match what you typed
The escrow addresses They are the ones the prepare step returned, not addresses that arrived later

If your wallet cannot show you an unfinalized PSBT clearly, that is a wallet limitation, not a reason to sign blind.

Every SRC-20 settlement carries the service fee as its own output to a fixed pay-to-Taproot address:

bc1pl0xdhr5delrk80d6s5h5qa9awsf7qzc45jl8na6ns8vp3e0vv7wqxattxy

It is a constant, not a per-user address, and it is visible on chain in every SRC-20 settlement and in every deploy, mint, or transfer StampDEX builds. You can check it yourself in any explorer. A transaction claiming a StampDEX service fee to a different address is not one of ours.

An SRC-20 transaction has several tiny outputs. They carry the protocol’s data and markers, not value:

Output Value What it is
Recipient marker 330 sats The output the SRC-20 transfer credits
Data chunks 330 sats each The pay-to-witness-script-hash outputs carrying the encoded transfer
Seller anchor 548 sats The marker output the listing flow spends and returns

Seeing a handful of 330 and 548 sat outputs in a token transaction is normal. Seeing them in a plain BTC send is not.

Signing a message is not signing a transaction

Section titled “Signing a message is not signing a transaction”

Cancelling a listing, and every other mutation, asks your wallet to sign a short text message rather than a transaction. That message names the action, your address, a hash of the exact request, a single-use value, and an expiry. It cannot move funds, and it works once. If you are asked to sign the same challenge twice, something failed in between; read the order state before retrying.

No wallet needs your recovery phrase or a private key to work with StampDEX, and StampDEX never asks for either. If any page, in any tab, asks you to type a recovery phrase or import a seed in order to trade, close it.

Was this page helpful?
How can we improve it?
0/500
✓Thank you for helping improve StampDEX documentation!