How Soldeck.fun works
What follows is written for traders, with enough protocol detail that you can check every step on your own. If you are building a client that talks to this desk, the full specification is in docs/otc-protocol.md in the repository.
OTC orders are signed messages
When you post an ask or a bid, your wallet signs a plain-text message rather than a transaction. Every term of the deal is spelled out in it: which side you are on, the token mint, the raw amount and its decimals, the total price in lamports, who may take it, whether partial fills are allowed, the platform fee, when it expires, a random nonce and salt, and the network and domain it belongs to. The final line is the order hash, a SHA-256 digest of the order in canonical JSON.
The message is built from the order in a fixed way, so anyone can rebuild it from the order and check the signature against it. Each order page does exactly that in your browser and tells you whether the maker's signature holds up.
Counteroffers
Countering never edits an order. A counter is a fresh signed order on the other side, addressed to the other party and tied to the hash of the order it answers. Only the latest order in a negotiation can be accepted or countered again.
Cancelling
A cancel is also a signed message. Once it is in, the app will not gather signatures for that order or submit it. Keep in mind that a settlement transaction you have already signed is still valid on Solana until its blockhash expires, which normally takes a minute or two.
Atomic settlement
Once terms are agreed, the server checks both wallets again: the seller must still hold the tokens, the buyer must still have the SOL, and the token must carry no unsafe Token-2022 extensions. It then builds a single Solana transaction that holds, in this order:
- the compute budget instructions,
- creation of the buyer's token account when one is missing, paid for by the buyer,
- a memo reading
otc-settlement:v1:<order hash>:<settlement id>, - the token transfer from seller to buyer (
TransferChecked, orTransferCheckedWithFeewhen the token charges a transfer fee), - the SOL transfers from the buyer to the seller, to the platform treasury, and to a referrer when there is one.
Solana runs a transaction completely or not at all, so one leg can never land without the other. The buyer covers the network fee and signs first, the seller signs second, and then the transaction is sent.
What your browser checks before you sign
- Only the System, Token, Token-2022, Associated Token Account, Memo and Compute Budget programs appear, and no address lookup tables are used.
- There are exactly two signers, buyer first and seller second, and they match the signed order.
- The mint, token program, decimals and amount match the order and the fill. The seller's SOL equals the signed price minus the disclosed fee, and the fee goes to the published treasury without ever exceeding the signed rate.
- The bytes are identical to the settlement you get by rebuilding it from those terms.
The server keeps the exact message bytes and only accepts signatures made over them. If a wallet or anyone else changes the transaction, the signatures stop matching and both sides have to sign again.
If time runs out
When the blockhash expires before both signatures are in, the settlement is retired only after it can no longer land, and a new one is built. Both sides sign again; old signatures cannot be reused.
Verifying a trade
Each receipt at /trade/<signature> is rebuilt straight from the chain. We decode the transaction that landed, compare its message hash with the agreed one, and take balances from the transaction itself. Any block explorer lets you do the same.
Pump.fun integration
Launches go through Pump's create_v2 instruction and produce Token-2022 mints. Buys on the bonding curve use buy_exact_quote_in_v2, which takes an exact SOL amount and a minimum token output; sells use sell_v2. Tokens that have graduated trade on PumpSwap. The venue is read from on-chain state automatically, and only markets quoted in SOL are supported.
Fees
See Fees. OTC settlements carry a 0.5% platform fee; Pump trades carry none from us.