Grow the world’s AI.
Verifiable AI inference, checked on chain.
Ask an open model. A community miner answers, and the chain pays it. A random sample of answers is checked again by a jury of other miners, and a convicted cheater loses part of its stake.
$ curl -fsSLO https://raw.githubusercontent.com/DendraNetwork/dendra-network/main/deploy/install.sh $ less install.sh $ bash install.sh --yes
Run less on its own and quit it with q. Without --yes, bash install.sh only prints its plan: nothing changes until you pass it. No curl … | sh, since a script piped from a URL runs unread. Windows: install.ps1, step by step.
reading the miners present on chain
Each green dot on the miners' root is one miner present on chain, read from /capacity every minute. Until the count is read, the tips stay hollow.
How an answer is checked
Each miner posts a deposit (stake) before it can answer. When a jury of other miners convicts one of cheating, it loses part of that deposit: it is slashed.
The request
You send a prompt to the Dendra gateway over HTTPS. The gateway runs its content filter, then encrypts the prompt to the serving miner; the relay that carries it reads ciphertext only. At launch, the whole fee is held first; then it is paid out, or refunded to the client.
The commitment
The miner decrypts the prompt in memory and answers with an open model. On chain, the job keeps a hash of the prompt and an embedding of the answer, never the text. They travel in a transaction, and every block header carries the Merkle root of its transactions.
The draw
A later block draws at random whether the job is audited. Not drawn: the job is final and the miner is paid, with no verdict.
The jury
Drawn: a jury of other miners is seated, if enough are present, and judges the answer. Upheld, the miner is paid. Convicted, the miner is slashed and the client refunded. With no jury, or no verdict in time, the client is refunded and the miner is neither paid nor slashed.
What it takes to convict a miner
A conviction needs “invalid” verdicts at the jury bar, the larger of audit_min_quorum jurors and two thirds of the anchored seats (the jury seats drawn and recorded on chain before anyone votes; antievasion.go::auditRelativeBar), and from a strict majority of the voting stake. The jury excludes the miner under audit.
The jury floor is audit_min_quorum + 1 present, eligible miners. Below it, or with no verdict within audit_unwind_blocks blocks, a drawn job is refunded to its client and nobody is slashed. At launch, no drawn job is paid without a verdict, and no fee is held for ever.
Why sampling is enough to deter cheating: the litepaper
The network, right now
dendra-testnet is a public testnet: it runs the protocol in public, from a fresh genesis. Read the chain yourself; these figures come from it.
reading the chain
...
latest block (/rpc/status)
...
seconds between blocks, measured on the latest blocks
...
validators in the set (/rpc/validators)
...
miners present on chain (/capacity)
Jobs and audits
reading the proof feed
...
jobs opened
...
audits opened
...
audits concluded (jury quorum or re-hearing)
...
refunded, no verdict
...
slash events
From the chain's audit feed (testnet-proof.dendranetwork.com/proof), refreshed every 20 seconds. An audit opens when a job is drawn or disputed, and checks something once a jury concludes it. An audit refunded with no verdict checked nothing: the fee went back to the client. A clawback is a payment taken back after a conviction.
Every slash listed here is a real, replayable on-chain event, read live from the network.
Latest blocks
| block | hash | time (UTC) | transactions |
|---|---|---|---|
| reading the chain | |||
From /rpc/blockchain on testnet-api.dendranetwork.com, refreshed every 30 seconds.
Change one URL
Any chat-completions client works (/v1/chat/completions): point base_url at the gateway and your client works unchanged. The keyless demo tier is rate-limited.
An answer served by a miner also carries a dendra block: its job id, the miner, whether the chain accepted the settlement, and the command that finds the job on chain. settled is true, false, or null when the gateway does not know; audit_state stays "pending", since a drawn audit lands later.
$ curl -s https://testnet-api.dendranetwork.com/demo/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"dendra-network","messages":[{"role":"user","content":"Capital of Australia?"}]}'
"choices": [ … ], "dendra": { "job_id": "job…", "miner_id": "…", "committee": [ "…" ], "beacon": "…", "settled": true, "audit_state": "pending", "cost_udndr": …, "escrow_udndr": …, "verify": { "proof_endpoint": "…/proof", "query": "dendrad query jobs get-job job…" } }
Where a fee goes
$DNDR pays for inference and pays miners. Its supply is capped at 10,000,000 DNDR, with no mint, by construction: the standard mint module is absent from the chain binary, so no code path can create a coin. Rewards come from a Reserve set aside at launch.
- miner 80
- validators 7.5
- treasury 4.5
- team 3
- burned 5
Shares of every 100 DNDR of a fee paid out. Validators, treasury and team together take the protocol cut of 15. Launch values; governance can change them. A refunded job burns nothing. Allocation at launch and the Reserve's release rule: tokenomics in the litepaper
Run your machine
Join with a GPU or with a CPU. A miner answers prompts with an open model on its own hardware. It is paid its share of each fee when the job is not drawn for audit, or when a jury upholds its answer.
GPU (NVIDIA): mine
The hardware probe, deploy/hw_probe.sh, picks the open model your card can serve.
CPU: judge, for now
The network's judge model, a mixture-of-experts, runs on the CPU. It needs at least MOE_CPU_MIN_RAM_MB of system RAM, with or without a GPU (bash deploy/hw_probe.sh --judge-floor-mb prints that floor; under Windows, the RAM of WSL 2). A juror is a registered miner, so the machine also serves requests, on its GPU if it has one. From kit v0.2.1, a machine without a GPU joins only this way, and answers its requests with the judge's model.
Full node or validator
No GPU. Run a node or validator · Pick a role
More roles and technologies for CPU-only machines are planned.
Three steps
Check your machine
deploy/hw_probe.shsays which roles it can take. Before you install, see what your machine can run.Install
One script sets up the machine and joins the network.
It runs by itself
The miner gets free testnet DNDR from the faucet, locks its stake and starts serving. It only opens outbound connections, to the relay, the chain and the faucet: no inbound port to open, and a miner behind a home router is fine.
You need no wallet to mine. A wallet is only an optional address for Final Testnet Season rewards. Manual path: deploy/join.sh, in the miner guide.
From one seed to the world’s AI
More power, more privacy, more builders.
01 seed
The protocol
Fees held until a random audit draw, audits judged by AI models, and slashing on chain. Slashing was exercised by the test suite and on a development network, against a miner run to cheat.
02 roots
Final Testnet Season
The season ends on 7 November 2026 at 23:59 UTC, by the chain's own block times. Until then, miners earn testnet DNDR, paid every seven season days (17 280 blocks each, the last one cut at the end); the last payment follows once the last day is final. A formula published in advance reads chain records and the published grades of sampled answers, so anyone can recompute it. The season
03 trunk
Mainnet
Mainnet launches after the Final Testnet Season. The season's rewards count as points: each testnet DNDR the season paid you becomes one mainnet DNDR, credited in the mainnet genesis.
Your wallet balance is not your reward: only the DNDR the season pays you counts. Faucet grants, your stake, transfers and ordinary job pay do not. What counts
What the crown aims to grow next. The roadmap gives each item its status.
branch / power
More AI, more power
The aim: more models on the network, GPU pools and data centers, then images, audio and video.
branch / privacy
Confidential AI
The aim: prompts split into shares across miners of different operators so that none sees them, then enclave hardware and sealing from your own device. Until then, the public gateway and the miner that answers read a prompt, and so do the jurors of a job drawn for audit (see “Is my prompt private?” below).
branch / ecosystem
The world builds on Dendra
The aim: an SDK that checks each answer's proof for you, integrations, and autonomous agents and smart contracts that call verified AI.
Questions
Can I use my existing chat client?
/v1/chat/completions). Point base_url at the gateway and your client works unchanged. An answer served by a miner also carries a dendra block: its job id, its audit state and a command to check it on chain. API quickstartIs there a token sale?
How do I get testnet DNDR?
Is the chat free?
Can my gaming GPU mine?
deploy/hw_probe.sh, picks the open model your card can serve. Judging does not use the card: the judge model runs on the CPU, so a machine with a GPU and at least MOE_CPU_MIN_RAM_MB of system RAM mines on the GPU and judges on the CPU at the same time. Miner guideCan I join without a GPU?
MOE_CPU_MIN_RAM_MB of system RAM (bash deploy/hw_probe.sh --judge-floor-mb prints that floor). Under Windows, that is the RAM of WSL 2, about half of the PC's by default; the memory= line of the [wsl2] section of %UserProfile%\.wslconfig raises it. A juror is a registered miner, so the machine also serves requests. Kit v0.2.2 keeps the rule that kit v0.2.1 set for machines without a GPU: they join only as judges, from MOE_CPU_MIN_RAM_MB of system RAM, and answer the requests drawn for them with the judge's model; with less RAM, the kit refuses to join. A full node or a validator needs no GPU. More roles and technologies for CPU-only machines are planned. Pick a roleIs my prompt private?
It is encrypted from the gateway to the miner. The public gateway and the miner that answers read it, and so do the jurors if the job is drawn for audit (a miner on a kit before v0.2.1 also seals it for the other registered miners). The relay and the chain never get the text: on chain, a job keeps a hash of the prompt, a fingerprint that does not contain its text, and an embedding of the answer, a list of numbers that sums up its meaning. A gateway you run yourself keeps the prompt off the public one.
While the model answers, the miner software keeps the prompt out of crash dumps and blocks writing it to disk or sending it anywhere but the model, where the host allows it. If the job is drawn for audit, the miner re-seals the prompt and answer to its jurors: from kit v0.2.1, to the jurors the chain anchored for that audit and to no other miner. How to check an answer