Network explorer

Live readings of the public testnet dendra-testnet, taken at the block height shown and refreshed every 30 s.

reading the chain

The essentials, in plain words.Every counter, diagram and parameter, with how to read them.

The essentials

reading

Is the chain moving?

on-chain

reading the chain…

Each block adds the network's latest transactions to the chain.

How many miners?

on-chain

Present means the miner proved it is online in the current or the previous availability window, or registered during them; a window is avail_epoch_blocks blocks.

The chain picks who serves each request among present miners, by stake up to assignment_stake_cap_multiple × min_stake, and draws juries from them too.

Join with a GPU or a CPU: pick a role

Are answers checked?

on-chain

reading the proof feed…

Some answers are drawn at random for a check by a jury of other present miners; a verdict needs votes the same way from at least two thirds of the jury seats, and never from fewer than audit_min_quorum jurors.

An answer the draw passes over is final, and its miner is paid. If a drawn answer has no verdict audit_unwind_blocks blocks after settlement, or its draw is still waiting then, the fee goes back to the client and the chain neither pays nor slashes the miner (0 turns this refund off).

Every counter, and the life of a job

Who judges?

declared

The chain can draw any present miner onto a jury, but only an active judge posts a verdict. It judges on its CPU with the model the kit reads from the registry (audit_judge_model, which no consensus code enforces), and needs at least MOE_CPU_MIN_RAM_MB of RAM (deploy/hw_probe.sh). A mute seat is drawn and says nothing.

Roles come from the miners' signed reports to the capacity registry: declared by operators, not proven on chain.

Final Testnet Season

Season day: reading…

    Your reward is what the season pays you each week: transfers from the season's payout account, with a memo starting dendra-final-season-week-. Anyone can write that memo, so the reference is the paid amount of your rows in the published rankings (paid_udndr). Each DNDR the season pays becomes one mainnet DNDR, at the address that received it. Your wallet balance is not your reward: faucet drops, your stake and the chain's own pay per job do not count.

    Rules, rates and how to take part

    ? means a reading failed: the value is unknown, not zero. Everything here is read live and refreshed every 30 s. Advanced shows every counter, the diagrams, held payments, credits per miner and the live parameters.

    How to read this page

    A job is one AI request: a client pays a fee and a community miner answers. The chain keeps a hash of the prompt (a fingerprint of it) and an embedding of the answer (a list of numbers that sums up its meaning, readable by anyone), never their text. Once the miner answers, the job is settled and the chain holds the fee (settlement). A later draw picks some jobs for a check (an audit) by a jury of other miners. A job the draw passes over is final and its miner is paid (finality). An audited miner is paid if the jury upholds its answer; if the jury convicts, the client is refunded and the miner loses part of the bond it posted, its stake (a slash).

    The panels read the chain, the proof feed and the operators' capacity registry live. Whether answers are being checked is the first row of Jobs and audits.

    • 0A measured zero: the chain answered. It started from a fresh genesis (its starting state), so every counter started at zero.
    • n/aNot measurable on this build.
    • ?The query failed. The value is unknown, not zero; the reason shows under the panel.
    • greenA healthy reading.
    • amberWaiting, or worth watching.
    • redA penalty or a failure.
    • provenFrom on-chain records. Some panels come through the project's proof feed, whose code is public.
    • declaredReported by operators.
    • bpsBasis points: 10000 bps = 100 %.

    Terms, and the endpoint behind every panel, are in the docs reference.

    Chain and validators

    on-chain, proven

    reading

    Is the chain moving? block height and last block say so. catching up says whether the node that answered is still syncing.

    Total supply started at 10,000,000 DNDR (the network's token) and can only fall. The binary has no mint module, and a small burn retires part of each fee once its job is final.

    Validators are the nodes that order blocks, each weighted by its voting power. Read the set with the command below.

    Read the validator setread-only, no key
    $ curl -s https://testnet-api.dendranetwork.com/rpc/validators

    Randomness for every draw

    on-chain, proven

    reading

    Every work assignment, audit draw and jury draw needs a random seed. Validators build it in each block from their VRF outputs (verifiable random function: randomness anyone can check). While committee_seed_source is 1, work and audit draws use it only on a block that clears the two bars below; the commit power is the voting power of the validators that signed the block. At 0 they use a seed derived from block data, and no bar applies.

    How a block's seed is accepted while committee_seed_source is 1: in each block, validators add their VRF outputs. Two bars are checked on that block: how many contributed must reach committee_min_vrf_contributors, and their share of the commit power must reach two thirds, a chain constant. If both are met, the seed assigns work and draws audits and juries. Below either bar, work assignment and audit draws wait for a later block. One block validators add their VRF outputs Two bars, both required 1. how many contributed: ≥ committee_min_vrf_contributors 2. their share of the commit power: ≥ two thirds (a chain constant) both met Seed accepted assigns work, draws audits and juries not met Below either bar work assignment and audit draws wait for a later block How a block's seed is accepted while committee_seed_source is 1: in each block, validators add their VRF outputs. Two bars are checked on that block: how many contributed must reach committee_min_vrf_contributors, and their share of the commit power must reach two thirds, a chain constant. If both are met, the seed assigns work and draws audits and juries. Below either bar, work assignment and audit draws wait for a later block. One block validators add their VRF outputs Two bars, both required 1. how many contributed: ≥ committee_min_vrf_contributors 2. their share of the commit power: ≥ two thirds (a chain constant) both met Seed accepted assigns work, draws audits and draws juries not met Below either bar work assignment and audit draws wait for a later block
    1. While committee_seed_source is 1, in each block, validators add their VRF outputs.
    2. Two bars are checked on that block: how many contributed must reach committee_min_vrf_contributors, and their share of the commit power must reach two thirds, a constant of the chain code.
    3. Both met: the seed is accepted. It assigns work and draws audits and juries.
    4. Below either bar: work assignment and audit draws wait for a later block.

    The seed cells read one block, so they are a sample, not a state: reload and they can change. seed block is the block they describe; measured at height is only when the query ran. A seed can exist below either bar, so committee seed names the bar it misses.

    Jobs and audits

    on-chain, proven

    reading

    Are answers being checked? draws ever run (challenger disputes included) and verdicts returned count from genesis, so they say whether audits run at all. blocked by names what is missing at the height read, from those counters and the seed block above.

    The diagram follows one job from settlement to its outcome; a dispute opened by a challenger takes another path, not drawn here. Each dot in the diagram names the counter below, or the marker written into the job's state, that records the step.

    Life of a job, with the counter or state marker that records each step. The payment is held at settlement (hold_bps; counter: payments held). The draw after settlement decides whether the job is audited (audit_sample_bps). Not drawn: released at finality, the miner is paid and the held total falls. Drawn: counter audits opened. Below the floor of audit_min_quorum + 1 present, eligible miners, no jury can sit yet: the job stays selected and the jury draw is retried (counter: deferred, no jury). Otherwise a jury of other miners is seated, the audited miner excluded (counters: committee anchored, audit pending). Upheld: the miner is paid (state marker: vindicated). Convicted: the miner is slashed (slash_leak_bps) and the client refunded (counters: clawed back, slash events). Together these two outcomes are counted in conducted (quorum), the only proof of a verification. With no jury or no verdict within audit_unwind_blocks, the client is refunded and the miner is neither paid nor slashed (state marker: unwound). hold_bps Held at settlement the payment waits for the draw payments held audit_sample_bps The draw after settlement is this job audited? not drawn Released at finality the miner is paid held total falls; no audit drawn Drawn for audit Floor: audit_min_quorum + 1 present, eligible miners audits opened below the floor: no jury yet deferred (no jury) retried until a jury can sit floor met Jury seated other miners judge the answer; the audited miner is excluded committee anchored audit pending (open) no verdict in time audit_unwind_blocks Client refunded no jury, or no verdict in time; the miner is neither paid nor slashed state marker: unwound Upheld the miner is paid state marker: vindicated slash_leak_bps Convicted slashed; client refunded clawed back · slash events conducted (quorum) counts both: the only proof of a verification Life of a job, with the counter or state marker that records each step. The payment is held at settlement (hold_bps; counter: payments held). The draw after settlement decides whether the job is audited (audit_sample_bps). Not drawn: released at finality, the miner is paid and the held total falls. Drawn: counter audits opened. Below the floor of audit_min_quorum + 1 present, eligible miners, no jury can sit yet: the job stays selected and the jury draw is retried (counter: deferred, no jury). Otherwise a jury of other miners is seated, the audited miner excluded (counters: committee anchored, audit pending). Upheld: the miner is paid (state marker: vindicated). Convicted: the miner is slashed (slash_leak_bps) and the client refunded (counters: clawed back, slash events). Together these two outcomes are counted in conducted (quorum), the only proof of a verification. With no jury or no verdict within audit_unwind_blocks, the client is refunded and the miner is neither paid nor slashed (state marker: unwound). hold_bps Held at settlement the payment waits for the draw payments held audit_sample_bps The draw after settlement is this job audited? not drawn Released at finality the miner is paid held total falls; no audit drawn Drawn for audit Floor: audit_min_quorum + 1 present, eligible miners audits opened no jury yet: retried deferred (no jury) floor met Jury seated other miners judge the answer; the audited miner is excluded committee anchored audit pending (open) Upheld the miner is paid state marker: vindicated slash_leak_bps Convicted slashed; client refunded clawed back · slash events conducted (quorum) counts these two outcomes: the only proof of a verification audit_unwind_blocks Client refunded no jury, or no verdict in time; the miner is neither paid nor slashed state marker: unwound
    1. The payment is held at settlement (hold_bps). Counter: payments held.
    2. The draw after settlement decides whether the job is audited (audit_sample_bps).
    3. Not drawn: released at finality, the miner is paid and the held total falls. No audit happens.
    4. Drawn for audit, or disputed. Counter: audits opened.
    5. Below audit_min_quorum + 1 present, eligible miners, no jury can sit yet: the job stays selected and the jury draw is retried. Counter: deferred (no jury).
    6. Otherwise a jury of other miners is seated, the audited miner excluded. Counters: committee anchored, and audit pending while it is open.
    7. Upheld: the miner is paid. State marker: vindicated.
    8. Convicted: the miner is slashed (slash_leak_bps) and the client refunded. Counters: clawed back, slash events.
    9. Upheld and convicted audits together are counted in conducted (quorum), the only proof of a verification.
    10. No jury, or no verdict, within audit_unwind_blocks: the client is refunded and the miner is neither paid nor slashed. State marker: unwound.

    To convict, a jury needs “invalid” verdicts at the jury bar, the larger of audit_min_quorum jurors and two thirds of the anchored seats (those fixed when it was drawn), rounded up (antievasion.go::auditRelativeBar), and a strict majority of the voting stake. Upholding takes the same bar with “valid” verdicts; short of both, the audit waits. Present, eligible miners are those registered before the job opened and recently active. The refund counts audit_unwind_blocks from settlement and returns everything still held, the protocol's cut included; at 0 it is off and the payment waits.

    closed without a clawback also counts seated audits refunded with no verdict, so it is not a count of verdicts.

    How the opened audits ended

    on-chain, through the proof feed

    verified means a jury concluded the audit, by quorum or by a re-hearing, whichever way it ruled; it says nothing about how strong that jury was. refunded, no verdict audits checked nothing: the fee went back to the client. no quorum audits expired with too few votes, in progress ones are still open or waiting for a jury, and unknown ones closed with no marker that says how. The five cells add up to audits opened, the chain's own counter; when they do not, or when the counter or an origin could not be read, every cell reads n/a and the reason is printed.

    How the counters add up

    audits opened is the chain's own counter of opened audits, disputes opened by a challenger included. It equals committee anchored plus deferred (no jury), except that a deferred audit later refunded leaves both classes and stays counted in audits opened.

    deferred (no jury) counts drawn jobs still waiting for enough eligible jurors. A job whose draw waits for a usable seed is not drawn yet: among these counters it shows only in jobs total and settled, its payment stays held, and past audit_unwind_blocks it is refunded like a drawn job.

    audit pending counts seated audits still open. clawed back counts payments reclaimed on a conviction.

    Payments held

    on-chain, proven

    reading

    While hold_bps reads 10000 (100 %), a miner's whole net pay is held at settlement, and the protocol's cut waits beside it. held total is the miners' held share. Each held amount is dated on chain.

    A drop in held total is not a verification: a held payment also leaves when its job is not drawn, or when it is refunded. Read it yourself with the command below.

    Read the held paymentsread-only, no key
    $ curl -s https://testnet-api.dendranetwork.com/rest/dendra/jobs/v1/held_summary

    bond escrowed is the collateral posted by challengers who dispute a settled job. jurors locked counts jurors whose stake cannot leave while an audit they sit on is open.

    Miners

    What the chain credited each miner and, separately, the hardware operators say they run. Anyone who wants to take part starts at Pick a role: a GPU mines; a machine without one judges on its CPU if it has at least MOE_CPU_MIN_RAM_MB of RAM, and serves its share of requests too. From kit v0.2.1, a machine without a GPU joins only that way, and serves its requests with the judge model.

    Credited by the chain

    derived from on-chain records

    reading

    Credits are derived for the optimistic path only: one miner answers and is credited at settlement, and a drawn audit can still reverse it. Jobs settled other ways are counted, not credited.

    Credits, not payments received: the figures are derived from the current parameters, exact only while fee_burn_bps, protocol_fee_bps and hold_bps have not changed since the oldest settlement shown. The sums are withheld when the chain's own total does not match the list it returned.

    On-chain job pay and the subsidy are not Final Testnet Season points. Season rewards are paid by a published formula and are not shown here: see the Final Testnet Season.

    How each column is read
    jobs (optimistic)
    Jobs the miner settled on the optimistic path and that no audit reversed, unwound or left undetermined.
    reversed
    The payment was clawed back, or an adjudication's slash record names the miner. Nothing is credited.
    unwound
    The held part went back to the client. The part paid at once stays credited; there is none while the whole net share is held.
    undetermined
    Adjudicated with no slash record against the miner. The marker alone does not say how the job ended, so these jobs stay outside every sum.
    credited
    The miner's net share of those fees: the fee minus the burn and the protocol cut.
    held part
    The share of the credit held at settlement (hold_bps).
    subsidy cap / claimed
    The cap is work_gate_bps of the miner's demand: the treasury and team share of the fees its paid jobs brought in, credited at finality and dropped on a refund. claimed is what the miner has drawn from the emission work pool; the miner software claims it by itself.

    Hardware is not joined to these rows: the capacity registry publishes each machine under a pseudonym. The full fee split is in the docs.

    Hardware declared by operators

    operator-declared

    reading

    Reported by operators. The headline cells count only nodes whose identity exists in the on-chain miner registry; the raw declared total stays beside them. identity says the id is registered.

    This table follows the chain with a delay. A miner on kit v0.2.1 sends a signed report every hour, and an earlier kit sent one report when it joined, so its row can be old. A new miner appears after its first report. miners on chain is the chain's own count, and the Miners panel above lists every registered miner.

    can judge says the machine has the RAM to judge, not that anything judges there. judge role is what the miner kit reads inside its container and reports: active (its judge runs and holds the model the kit reads from audit_judge_model, a parameter no consensus code reads), mute (the role is asked for but the judge or its model is missing: it is drawn and says nothing), off (not asked for) or unknown (not readable). A report without the field reads not reported yet, never off.

    Adoption and transparency

    declared and on-chain

    reading

    Which kit version the miners run and who judges, as the miners report it; then where the jobs come from and how the work and the verdicts are spread, counted from the chain. Each part says the height it was read at. ? is a failed read, and not reported means the source carries no such field: neither is a zero.

    Adoption

    operator-declared

    The kit version and the judge role are what a miner's report says, under its operator's signature when the report is signed. A report without kit_version comes from a kit older than the field: it reads not reported, never current. A declared role is not proof that anything judges; what a judge produced is the verdicts below.

    Where the jobs come from

    on-chain, through the proof feed

    The chat gateway pays for every job sent from the public chat, so its figure is a number of chat jobs. No figure on this page counts the people who use the chat.

    How work and verdicts are spread

    on-chain, through the proof feed

    Largest miners, operators, judges and models

    A share is in basis points of its own total: the jobs a miner served, the verdict commits a miner posted, or the jobs that name a model. An operator is the one the miner registry records for the miner. A request counts under the model its miner named in the commit for that job. The time from an audit's opening to its resolution is counted in blocks, over the audits whose two heights were read (the cell says how many): the interval between blocks emerges from the network and varies, so no duration is stated. The fewest-operators cells are a Nakamoto coefficient: the smallest number of operator addresses whose counts together exceed half of the total. An address is not a person, since one entity can run several, so the figure is an upper bound on how many parties it takes.

    Live protocol parameters

    on-chain, proven

    reading

    The rules in force, read from the chain. Every value is governable; this panel is the reference for any number quoted on the site.

    What each parameter does
    held at settlement
    hold_bps: the share of a miner's net pay held until its job is final or judged.
    audit sample
    audit_sample_bps: the share of settled jobs drawn for an audit; governance can change it.
    audit quorum
    audit_min_quorum: the floor of the jury bar. A verdict needs the larger of this and two thirds of the anchored seats voting the same way; 0 selects the compiled 4.
    VRF contributors floor
    committee_min_vrf_contributors: the fewest validator VRF outputs a block needs before it can seed a draw.
    wrong answer slash
    slash_leak_bps: the share of stake cut from a convicted miner.
    silence penalty
    silence_slash_bps: has no effect. The only code that reads it, antievasion.go::clawbackPayment, is not called anywhere in production, so nothing is taken for silence by this parameter. A drawn job with no verdict is refunded to its client after audit_unwind_blocks.
    protocol cut
    protocol_fee_bps: the share of each fee that goes to validators, the treasury and the team.
    fee burn
    fee_burn_bps: the share of each final fee that is burned.
    minimum miner stake
    min_stake: the smallest stake a miner can bond.
    dispute bond
    dispute_bond: what a challenger escrows to dispute a settled job.
    dispute window
    dispute_window: how many blocks a re-adjudication waits after a dispute opens, so the fresh jury can answer; 0 turns disputes off.
    audit unwind
    audit_unwind_blocks: how many blocks from settlement a held payment can wait for its audit to conclude before it goes back to the client; 0 turns that refund off.
    availability window
    avail_epoch_blocks: the length, in blocks, of the window in which a miner proves it is online; a miner that proved the current or the previous window, or registered during them, is present and can be drawn. 0 turns the online check off and every miner counts as present.
    work draw stake cap
    assignment_stake_cap_multiple: the work draw weighs each present miner by its stake, capped at this multiple of min_stake, so stake above the cap buys no more work (committee.go::capAssignmentWeights); 0 selects the chain's compiled default.

    Read them yourself with the command below; a field missing from that output holds zero.

    Read the parametersread-only, no key
    $ curl -s https://testnet-api.dendranetwork.com/rest/dendra/jobs/v1/params

    Sources

    Sources, read-only and without a key. The paths below are on https://testnet-api.dendranetwork.com; the last one is the proof feed.

    • /rpc/status
    • /rpc/validators
    • /rest/cosmos/bank/v1beta1/supply
    • /rest/dendra/jobs/v1/params
    • /rest/dendra/jobs/v1/job
    • /rest/dendra/jobs/v1/miner
    • /rpc/tx_search
    • /rest/dendra/modelregistry/v1/params
    • /capacity
    • /final-season/v1/status
    • /final-season/v1/ranking/
    • https://testnet-proof.dendranetwork.com/proof