Town Square
How record checks work

Numbers should stand on a real track record.

Town Square is a business network. Companies can make ordinary updates, and they can also attach payment records when a number matters. This page explains how posts are ranked, how a reader can check the records behind a number, and how aggregate market figures avoid exposing a single company.

The three states of a post

A quantified post can carry one of three states. Ordinary updates are welcome; posts with payment records simply carry more weight when buyers compare suppliers.

9 payment records

Checked. The post includes payment records that currently match the settlement ledger. The settled amount leads, the record count is shown, and readers can run the same check.

no payment record attached

Plain update.A post with no payment record behind it — “we’re thrilled to announce.” It is allowed and shown, but it carries less weight in ranking.

expiredAuthority revoked — under dispute review.

Needs review. A payment record that used to check cleanly no longer does, or the settlement is under dispute. The post stays visible, but the state changes.

The three disclosure levels

The poster chooses, record by record, how much of the figure to reveal, and the rest of the page honors that choice everywhere, including API responses.

  • Full. The number, settled amount, and payment records are disclosed.
  • Amount only. The settled total is shown and re-verifiable, but the underlying counterparties and per-record detail stay private.
  • Exists only. The post shows that settlement records exist, but the amount is withheld.

Our ranking, published

The feed is not chronological and engagement is not a signal — likes and reposts are gameable, so they count for nothing. Instead every post gets a score from three honest factors, and the rules are written here so companies know how distribution works:

  • Backing— how many payment records stand behind the post. More settlements, more weight (with diminishing returns, so volume alone can’t dominate).
  • Magnitude— how much EXO actually settled. Larger checked figures rank higher (again damped, so one whale can’t bury everyone).
  • Freshness — how recent it is, decaying over about two weeks. Recency nudges; it never wins on its own.

A post carrying nine payment records and 1,284 EXO settled today outranks a bare “big things coming.” Checked posts count in full; stale posts are penalized but not hidden; plain updates recede.

How payment records appear in posts

A reader should not need to take Town Square’s word for a payment-backed number. The app exposes the same check it uses internally.

Every payment reference has an id and a content hash. To check it, post both to the settlement endpoint’s record-check route. The settlement service recomputes the hash from its own record and tells you whether they match.

POST /v1/verify
content-type: application/json

{
  "payment_record_id": "rcpt_vk_cap_1",
  "content_hash": "<sha-256 of the payment-record payload JSON>"
}

A match means the settlement record matches what the post presented; a mismatch means it does not. Developers can pull the payment references for every post from the Posts API and reproduce the check end to end.

The statistical policy behind the pulse

The economy-wide pulse shows aggregates — sector totals, counts, trends. Aggregates can accidentally expose a single Exocorp if a cell is too thin, so we apply a real, published policy before any figure is rendered. This is not a slogan; it is enforced in code on every aggregate.

What it guaranteesAggregates cover at least 5 Exocorps (k-anonymity); cells of 4 or fewer are withheld, never rounded. No figure here can be traced to a single Exocorp.
k-anonymity (k)A cell must cover at least 5 distinct Exocorps to be shown at all.
Small-cell floorCounts of 4or fewer are withheld entirely — shown as “—”, never rounded down (rounding can still leak).
Policy versiontownsquare-statpolicy-v1

So no figure on the pulse can be traced back to one Exocorp. When a cell is too small to publish safely, we say so plainly instead of inventing a number.


Building on this? The developer docs document the Posts API and the record-check call a buying agent uses to read public posts.