What is on the blockchain, and what is not
Cabdell has three layers. The blockchain holds the record: who did what, when, and the fingerprint of every text. IPFS holds the texts themselves, which can be checked against those fingerprints. Everything else, from the feed and profiles to search and the Peer-reviewed seal, is computed from the first two by services that anyone could build again from the published rules. This page says what belongs to each layer.
you, in the browser | v +-----------+ prepares a transaction +-------------+ | web app | -------------------------> | your wallet | holds your key and signs +-----------+ +-------------+ ^ | | reads (API) | signed transaction | v +-----------+ reads events +-------------------------------+ | indexer | <------------------------- | Algorand: Cabdell contract | +-----------+ | boxes: the current records | | | | events: the whole history | | +--> ORCID, Zenodo, DataCite, +-------------------------------+ | OpenAlex: checks, cached v +----------------------------------------------+ | IPFS: article folders, review and comment | | texts; pinned by their authors, with a | | second copy on the indexer's own node | +----------------------------------------------+On the blockchain
Section titled “On the blockchain”The contract
Section titled “The contract”The Cabdell contract is a program on Algorand (an “application”, in Algorand’s terms). It checks every rule of the protocol: who may vote, what each status allows, how reputation is computed, what each deposit must be.
- It cannot be modified or deleted. It has no update path, and the account that deployed it has no privileges left. A new version of the contract is a new application, with its own records: contract v4 (D-163), the candidate for MainNet, restarts TestNet with a new application.
- One application per network. On TestNet it is application
773893388(contract v4), live since 8 October 2026. The previous TestNet applications (772983107and772965337) stay on the blockchain, but they are no longer listed. MainNet opens later, after an independent audit of the contract; the two networks never mix. Current values are in Networks and addresses.
What it records
Section titled “What it records”For every article, the contract stores its number, its author (the publishing address), its primary and secondary fields, its type, the article it amends (if any), its status, its version number, the fingerprints of its current and previous versions, its dates, the total weight of the votes it received and how many, its declared co-authors and who confirmed, its reviews, comments, votes and flags. It also stores each address’s reputation per field, the list of fields and the governance address.
These records live in boxes: small named records in the application’s storage, each paid for by a deposit from the person whose action created it (see Costs and deposits).
| Box | One per | Holds |
|---|---|---|
| field | registered field | its name |
| article | article | the article record described above |
| co-author | author of an article, the submitter included | whether they confirmed, and how much reputation they claimed |
| review | review | reviewer, fingerprint of the text, recommendation, date, weight of its “useful” votes |
| reviewer index | reviewer of an article | makes sure each person reviews an article only once |
| comment | comment | author, fingerprint of the text, the comment it replies to, date, votes, whether resolved |
| vote | vote for an article, a review or a comment | its weight, the reputation it granted, its date |
| flag | flag in a round, until it is settled | reason, weight, date, the bond held |
| dispute outcome | round that became a dispute | how it ended: pending, cleared, retracted or expired |
| damping counter | pair of addresses, giver and receiver | how many times the giver has given to the receiver, so that repeated votes count less |
| reputation | address and field | reputation, how much was received today, and the day the record was created |
A flag’s record is the only one ever deleted: its settlement deletes it once its round is over, returns its deposit and returns, pays out or keeps its bond (see Flags, disputes and governance).
Events: the whole history
Section titled “Events: the whole history”Every action also writes an event: a short log entry on the blockchain that says what happened, such as
Published, Versioned, Reviewed, Voted, Flagged or ReputationChanged. Boxes hold the current state; events
hold the history. The list of earlier versions of an article, for example, is rebuilt from its events. The events
contain enough to rebuild every record without reading the boxes, a settled flag’s included. Each event carries a
number, 1 for the first and one more for each event after it, so a reader can tell when it has missed one.
Some actions are events only, with no box and no deposit:
- linking an ORCID iD, declaring a DOI, and following someone;
- (outside the contract) changes to public lists, which are notes on payments of 0 ALGO to oneself.
The full list of methods and events is in Contract methods and events.
Not on the blockchain
Section titled “Not on the blockchain”| What | Where it lives | Why |
|---|---|---|
| article texts and figures | IPFS, as a folder; the blockchain holds its 36-byte fingerprint | texts are too large for a blockchain, and the fingerprint proves they were not changed |
| review and comment texts | IPFS, as one file each; the blockchain holds the fingerprint | same reason |
| feed, profiles, inbox, search, citations, Thread Score, the Peer-reviewed seal | the Cabdell indexer | computed from the blockchain and IPFS; anyone can compute them again |
| whether an ORCID iD or a DOI is verified, OpenAlex counts | the indexer, as cached checks | they depend on outside services |
names ending in .algo |
NFD, a naming service on Algorand, asked by Cabdell’s server | a convenience chosen by each address’s owner |
| private lists, your pinning-service key, theme, recent searches | your browser only | they concern only you |
| browser notification subscriptions | Cabdell’s web server | to send notifications when your browser is closed |
| the permission to create Zenodo drafts | a sealed cookie in your browser, for at most an hour | it is only needed while preparing a draft |
| your private key | your wallet only | Cabdell never sees it |
How the texts are stored, and who keeps copies, is explained in Storage: IPFS, pins and copies. What becomes public and permanent when you act is summarised in Privacy and permanence.
The indexer: a view anyone can rebuild
Section titled “The indexer: a view anyone can rebuild”The Cabdell indexer reads every Cabdell transaction from the blockchain, starting at the round in which the application was created, and builds a database from the events. Its API, at https://api.cabdell.press/testnet, is what the website shows. It also:
- downloads each article from IPFS, checks that the folder is complete and that its header matches what was declared on the blockchain, and marks the result (valid, mismatch, malformed, unavailable or oversized). A problem is shown as a warning, never hidden; the article stays valid on the blockchain;
- keeps a second copy of every article it validated, and of every review and comment text;
- computes the ranking, citations, Thread Score and the seal.
The indexer is never an authority. It can drop its tables and rebuild them from the stored events, or start from zero and read the chain again, and it must arrive at the same records. If the chain ever contradicted the indexer’s rules, the indexer would stop at that round and report it rather than guess. Every API response names its network and application id, and the indexer refuses to start if the Algorand node it reads reports a different network. To check Cabdell without trusting cabdell.press, see Verify without trusting cabdell.press and Run an indexer.
Checks cached from outside services
Section titled “Checks cached from outside services”Some facts cannot be proven on the blockchain. Linking an ORCID iD or declaring a DOI is recorded there; whether it is true is checked outside it, and the result is cached by the indexer.
| Check | Service | Verified when | Checked again |
|---|---|---|---|
| ORCID iD | the public ORCID record | the record lists your Cabdell profile among its websites | about every ten minutes for two days after you link it, then weekly |
| DOI | the Zenodo record (or DataCite on MainNet) | the record is published and says it is identical to the article page and, for one version, to that version’s content | weekly, and more often in the two days after a declaration not verified yet |
| citation counts and works per field | OpenAlex, an open index of scholarly works | for verified ORCID iDs | with the ORCID record |
| works in common of a reviewer and an author | OpenAlex | for the seal’s conflict-of-interest rule | every 30 days |
Readers see an ORCID iD only once it is verified, and a DOI once it is verified or, when its registry cannot be checked, as declared by an author; none of these checks ever changes anyone’s reputation. When the indexer is rebuilt, the declarations come back from the blockchain and the checks are asked again from those services.
The web app: an interface that never holds keys
Section titled “The web app: an interface that never holds keys”The website is one window onto the blockchain. It prepares each transaction, shows its exact cost, and hands it to your wallet, which signs it; Cabdell never sees your key (see Wallets and your address). Before enabling any button that signs, it checks that your wallet is on the same network as the page.
Its server does a few things for convenience, never for authority: it looks up .algo names so that your browser
never contacts NFD, prepares Zenodo drafts with the permission you give, sends browser notifications, and reports the
state of each part on the status page. Your pinning-service key goes from your browser straight to that service, never
to Cabdell’s servers.
Anyone can build another window from the same data. See Host the full stack.