putty
API ReferenceArtifacts

The Receipts leaderboard

The Receipts leaderboard (§6.2): the most transparent projects, ranked by verified modules, labelled wallets, and verified burns. **No bearer token is required.** Every number is read from the same projection that serves `GET /trust/receipts/{chain}/{token}` — the same module classification, the same change logs, the same honest warnings — so a token cannot claim one count on its Receipts page and a different one here. "Verified modules" means modules the projector **classified** onchain, not modules a creator claims. "Verified burns" means burns in a module's own public change log, so the board never credits a burn it cannot show a receipt for. The `score` is the plain sum of the three counts, unweighted. The plan names the three inputs and no weights, so inventing weights would be inventing economics; an unweighted sum is a **transparency** score, not a value or quality score. The components travel with the row so a reader — or a later decision about the weights — never has to guess how the rank was reached. Candidates are the tokens named on a **published showcase entry**, so the board ranks projects that shipped through putty and chose to be listed. putty has no indexer and does not enumerate the chain: a token that never passed through putty still has its own Receipts page, but it is not ranked here, and the board does not pretend otherwise. `symbol` is attacker-controlled — a token's symbol is arbitrary bytes its deployer chose — so a client that renders it must escape it. A candidate whose chain read fails is counted in `skipped` and omitted from `rows`, rather than ranked zero: a zero would be indistinguishable from "read it, found nothing", which is the same lie a trust page must not tell.

GET
/growth/leaderboard

The Receipts leaderboard (§6.2): the most transparent projects, ranked by verified modules, labelled wallets, and verified burns. No bearer token is required. Every number is read from the same projection that serves GET /trust/receipts/{chain}/{token} — the same module classification, the same change logs, the same honest warnings — so a token cannot claim one count on its Receipts page and a different one here. "Verified modules" means modules the projector classified onchain, not modules a creator claims. "Verified burns" means burns in a module's own public change log, so the board never credits a burn it cannot show a receipt for. The score is the plain sum of the three counts, unweighted. The plan names the three inputs and no weights, so inventing weights would be inventing economics; an unweighted sum is a transparency score, not a value or quality score. The components travel with the row so a reader — or a later decision about the weights — never has to guess how the rank was reached. Candidates are the tokens named on a published showcase entry, so the board ranks projects that shipped through putty and chose to be listed. putty has no indexer and does not enumerate the chain: a token that never passed through putty still has its own Receipts page, but it is not ranked here, and the board does not pretend otherwise. symbol is attacker-controlled — a token's symbol is arbitrary bytes its deployer chose — so a client that renders it must escape it. A candidate whose chain read fails is counted in skipped and omitted from rows, rather than ranked zero: a zero would be indistinguishable from "read it, found nothing", which is the same lie a trust page must not tell.

Query Parameters

chain?string

Rank only this chain. Omit to rank every chain together, which mixes chain ids only as labels — the score is chain-agnostic.

Value in

  • "ethereum"
  • "base"
  • "robinhood"
  • "base-sepolia"
limit?integer

How many rows to return, best first. Defaults to 50.

Range1 <= value <= 100

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/growth/leaderboard"
{  "rows": [    {      "chain": "ethereum",      "token": "string",      "symbol": "string",      "verifiedModules": 0,      "immutableModules": 0,      "labelledWallets": 0,      "verifiedBurns": 0,      "minTimelockSeconds": 0,      "score": 0    }  ],  "skipped": 0}