Zum Hauptinhalt springen

What a public read returns

getSettlement, getSettlements, getReservation, getReservations, getDispute and getDisputes are open, unauthenticated reads and they no longer return party identity. A party reads its own records in full through the wallet-proof methods.

Why redaction rather than authentication

An explorer showing settlement volume, states and timing is a legitimate public view of a public network. Putting a signature in front of it would break that while pushing anyone determined back to raw gossip, which achieves nothing. What the explorer never needed is who — so the public read keeps everything except identity.

The thing identity assembles is the trade graph, and the case against handing it out is made in full on the wallet-proof reads page: in a peer-to-peer fiat market, knowing which merchant a wallet always returns to and who a busy merchant's regulars are is a physical-safety question rather than a preference. One unauthenticated call used to reconstruct it.

What this is honestly worth

These records are gossiped to every node. Anyone running one reads them all, and redaction does not change that. What is protected is the ease of the query — the difference between curl-ing somebody else's public access node and standing up a node to index the network. That difference is most of what casual harvesting is made of.

Stating that plainly matters more than it might seem: an integrator who believes these records are confidential will build something that leans on a guarantee the protocol does not make.

The shapes

Settlement

KeptRemoved
id, reservation_id, amount, statebuyer, buyer_public_key
escrow_release_signatureseller, seller_public_key
payment_submitted_at, merchant_responded_atpayment_reference
payment_discrepancy, created_at, updated_at

escrow_release_signature stays because it names an on-chain transaction anyone can already read on Solana, and it is what makes a settlement independently checkable.

payment_reference is arguably the worse of the two removals: it is free text a buyer puts their own bank reference in, so it routinely carries a real name or an account number.

Reservation

KeptRemoved
id, advertisement_id, amount, staterequester
requested_at, updated_at, expires_atrequester_public_key

advertisement_id is kept deliberately. An advertisement is a public offer and already carries its merchant's peer id on every order-book row, so it discloses one end of an edge that was never private. What it does not disclose is the other end — which is what makes it an edge.

Dispute

KeptRemoved
id, settlement_id, status, resolutionbuyer, seller, opener and their keys
required_arbitrators, arbitrators_seatedreason
commitments, reveals (counts)arbitrators, arbitrator_keys
onchain_execution_signaturethe individual commitments and reveals
opened_at, updated_atthe mutual-settlement agreement flags

Note that commitments and reveals are counts here, not lists — enough for an explorer to show a case progressing, with nobody's vote attached to their name.

Three separate reasons for what is dropped. The parties, because a dispute is the case where knowing who fell out with whom is most obviously worth misusing. reason, because it is free text about a real disagreement over real money and names people, banks and references as a matter of course. The arbitrator lists, because an arbitrator is a registered provider whose identity is not itself a secret — but which arbitrator drew which case, and how they voted is exactly the pairing that makes pressuring one worthwhile. The mutual-settlement flags go with them: "the seller has agreed and the buyer has not" is a negotiating position, and publishing it to onlookers changes a negotiation between two people.

If you are adding a field

A field belongs in a public view only if it says something about the trade rather than about the people. When in doubt it stays out: adding one later is a release note, and removing one is a disclosure that already happened.