6529, for developers / Part 2 · What I found

What I found

I went looking for a specification of TDH — the number that decides who can see, post and vote across 6529.io. There isn't one. What follows is what I found instead: three attempts at decentralizing that calculation, only one of which ever ran, a registry of thirty-seven independent operators, and a divergence between the two implementations that neither repository would detect.

This page is my reading of those findings, not an official account. The figures are dated and the method is at the bottom so you can check every one of them. You are encouraged to go to the source — the official FAQ, the code, and the team — and to join the community and ask directly.

Read: 1 August 2026 · every figure below was read from public sources on that date
Status: unofficial and unaffiliated · not endorsed by 6529
Method: public GitHub API, public api.6529.io, and the team's public dev channel
By: eduardocruz · corrections welcome

The decentralization lineage

Three attempts, and how they relate to what runs today

This is the part that takes longest to reconstruct from the outside, because the repository names suggest a progression that did not happen. There are three distinct things, and only one of them has ever served traffic.

1 · Production — the only thing that has ever run

6529seize-backend computes TDH in src/tdhLoop — about 2,580 lines of TypeScript, dominated by tdh.ts (1,142 lines), plus consolidation, editions, memes, merkle and upload modules. It has run continuously and receives commits daily.

2 · Prenode — a slice of production, packaged for others to run

6529-Prenode is not a reimplementation. Its src/tdhLoop shares file names with production — index.ts, tdh.ts, tdh_consolidation.ts, tdh_merkle.ts — and the same serverless configuration shape. It is the production calculation, trimmed and wrapped so a third party can run it on their own AWS account and serve TDH over REST.

Its README states the purpose plainly:

"The 6529 Prenode decentralizes access to TDH data… it uses the same calculation logic as the 6529 websites. Standardized setup through a provided CloudFormation script means anyone can run on their AWS account."

"Most important: the immediate use of the Prenode is to enable multiple parties to independently serve as TDH providers to the on-chain TDH oracle contract that will be launching soon™. This will allow for on-chain composable TDH that is not dependent on any single party." — 6529-Prenode README

Note what this design gives and does not give. Many operators running one codebase is operator diversity. It is not implementation diversity: if the shared logic has a defect, every prenode agrees on the same wrong answer, and an oracle consuming them sees unanimity.

3 · 6529node — a different architecture entirely

6529node is Go, and its internals are config, db, eth, mempool, network, rpc with a cmd/node entrypoint. Mempool and a network layer are the vocabulary of an actual peer-to-peer node, not a REST service. It is a ground-up attempt at the real thing, 94 commits, last touched 7 March 2025. It has never served production traffic.

The short answer

Production has always been the main line and never stopped. The Prenode is a slice of it, meant to run beside it, never to replace it. 6529node is a separate, more ambitious bet that stopped early. Nothing that was abandoned was ever in production, and nothing in production was ever abandoned.

The prenode registry today

Thirty-seven operators answered the call

There is a live registry at api.6529.io/oracle/prenodes, surfaced at 6529.io/network/prenodes. Read on 1 August 2026:

Prenodes registeredPing greenPing orangePing redTDH status
371135null on all 37

The registered hosts are community-run and self-funded — decentralizationmaxi.com, node.freedomtotransact.xyz, regularnode.com and others. The oldest registration is 27 June 2024; its last update was April 2025.

The reading that fits the evidence: participation was not the constraint. Thirty-seven operators is a strong response for a project this size. The on-chain TDH oracle that gave prenodes their purpose has not launched, and the prenode code stopped tracking production in July 2025.

The divergence

Verified: the two implementations no longer compute the same TDH

What changed, and where

The README's claim that the Prenode "uses the same calculation logic as the 6529 websites" was true when written. It is not true now. Diffing the two tdhLoop trees, the per-token hold rate is computed differently:

// production — src/tdhLoop/tdh.ts
const hodlRate = equalIgnoreCase(nft.contract, MEMES_CONTRACT)
  ? MEMES_HODL_INDEX / (memesCalculationEditionSizes[nft.id]
                        ?? getCalculationEditionSize(nft))
  : nft.hodl_rate;

// Prenode — src/tdhLoop/tdh.ts
const hodlRate = HODL_INDEX / nft.edition_size;

The denominator. Production uses max(supply, edition_size_floor), where the floor is the Manifold totalMax capped at 310. The Prenode uses raw supply. Any Meme whose supply sits below its floor — a freshly minted card before its research airdrop, or a card that has had tokens burned — gets a smaller denominator on the Prenode and therefore a higher TDH per token. That is exactly the burn-driven inflation the July 2026 change was written to prevent. In a 23 July snapshot of all 525 cards, one was in that state: card #525, at supply 163 against a floor of 310, which the Prenode would value at 1.90× the production rate.

The numerator. Production's index is the maximum across Memes only, using floored sizes. The Prenode's is the maximum across Memes, Gradients and NextGen combined, using raw sizes. Whether that yields a different number depends on whether any Gradient or NextGen edition exceeds the largest Meme (3,941) — not tested here.

The narrow conclusion is enough on its own: production applies a rule the Prenode does not, so the two do not agree, and nothing in either repository would detect it. This is the class of drift a conformance contract exists to prevent, and no such contract covers TDH.

Specifications: what exists and what does not

Where the protocol is written down, and where it is only code

LayerFormal spec?Where
Stream (the new contract) extensive ADRs 0010–0015+, spec-policy.md organising documents by permanence class (Permanent / Replaceable / Operational) with a Draft→Review→Final lifecycle. Actively worked on.
Group eligibility (authorization) new docs/eligibility-spec.md — 562 lines, plus 61 golden test vectors in JSON across 8 dimensions, plus a conformance harness that runs every vector against both existing implementations. Still in an open pull request as of this snapshot.
REST API (the surface, not the maths) official OpenAPI 3.0.3 at api.6529.io/openapi.json, 289 paths under the /api base, with a Swagger UI at /docs/ and a terminology and auth walkthrough at 6529.io/tools/api. Two things stand out reading it. The ten /oracle/* routes — the ones that serve TDH — do not appear in it at all. And it documents an entire /api/xtdh/* surface: a grant system where a holder assigns an xtdh_rate to another contract's tokens on a target chain, revocable or irrevocable, with its own loop in src/xTdhLoop. It specifies request and response shapes, and says nothing about how any value is computed. Added 4 August 2026, after this page was first published.
TDH none found No specification, no test vectors, no conformance contract located in any public repository. TDH is defined by what tdhLoop does. The OpenAPI document above does not change this: it describes the shape of the responses, not the calculation that fills them.
Meme Card distribution documentation thememecards
Allowlists library allowlist-lib

Why the eligibility spec is worth reading even if you never touch that code

It is the first artifact in this codebase that treats a rule set as a protocol rather than as behaviour. The format is worth stealing: a normative document, golden vectors as language-neutral JSON, and a harness that runs them against every implementation.

It also demonstrates the value immediately. When the vectors were first run against the two existing implementations — both written by the same team, in the same language, in the same repository — they disagreed in nine reproducible cases. Two of those were plain defects; the rest needed a human ruling on what the semantics should be. The spec's section 12 records each decision.

A vector is a term borrowed from cryptography: known inputs plus the exact output any correct implementation must produce. Because they are JSON and not test code, an implementation in any language can be checked against the same file.

Method

So you can check everything here, or correct it

Repositories
GitHub API over the 6529-Collections organisation — languages, last push, licences, file trees, pull request state.
Live figures
Unauthenticated reads against api.6529.io: /oracle/prenodes, /api/identities/{handle}, /api/groups/{id}, /api/waves/{id}.
Team history
The team's public Dev Team Chat wave — 1,731 messages from 17 June to 1 August 2026, read in full.
Not verified
Anything marked as an open question above. Where this page infers rather than observes, it says so.

The scripts in this repository fetch the channel and build a local reader from it. The archive itself is not republished here — read it at the source.

What I did about it

Part 3 · 2 August 2026

The gap that mattered most was the one with no specification and no second implementation: TDH. The day after writing this, I started building one.

Part 3 · What I'm building →