Network topology

how the dendritic network is actually put together

There is no single machine holding this site up. Readers reach it through volunteer gateways, content is stored in pieces across a distributed hash table, and every byte a gateway hands you carries a signature you can check yourself. This page explains each part — and if you want to run one, it builds the configuration and hands you the program.

The parts, and how they connect

Click a role to select it. You can pick more than one — a single machine happily runs storage and validation together. What each one asks of your computer is spelled out below, including the awkward part: several of them need an open port.

You, reading an ordinary browser, holding the origin's public key Gateway serves readers under its own hostname needs an open port Origin renders and signs holds the only signing key The DHT every object named by its own hash reached over I2P Probe independently checks gateways are reachable needs an open port Validator re-fetches published pages and checks them outbound only Storage node holds encrypted shards for others no port needed Status monitor checks the site from where you are no port needed Compute node runs work units on spare CPU or GPU in development reads over HTTPS fetches, cannot re-sign publishes snapshots reachability re-fetch & verify shards emergency snapshot work units, by hash dashed = anonymous transport (I2P)

Selected roles are highlighted. Nothing is downloaded until you choose. Install command ↓

storage

Storage node

Store encrypted shards for other people. Reaches the network over I2P, so no router changes are needed.

gateway

Gateway

Serve syndichan to readers under your own hostname. Requires inbound TCP 443 — usually a port-forwarding rule on your router, and not possible behind carrier-grade NAT.

⚠ Needs an inbound port (443)
probe

Verification probe

Independently check that other gateways are reachable. Requires an inbound port so candidates can be answered.

⚠ Needs an inbound port (443)
validator

Validator

Re-fetch published content and confirm it matches what syndichan signed. Outbound only.

mailbox

Tipping mailbox

Hold tip messages for creators who do not run a node, so they can be tipped while offline and collect later. You hold no keys and no money — the mailbox only forwards. Requires an inbound port so tippers can reach you.

⚠ Needs an inbound port — a payment port, not 443
delegate

Delegated signer

Creators may authorise you, on chain, to co-sign incoming tips for them while they are offline. You hold a signing key for that one purpose only: the contract refuses to let you withdraw, close a channel, or be paid, and the creator can revoke you at any moment. More responsibility than a mailbox — choose it deliberately.

⚠ Needs an inbound port — a payment port, not 443
monitor

Status monitor

Check that the site and the network answer from where you are, and publish the result to the public status page at /status. Outbound only — no router changes, and no disk.

Carrying other people’s tips

Readers can tip a creator directly, wallet to wallet, over a payment channel — no transaction fee per tip and nothing passing through this site. The catch is that a channel payment needs the creator to approve it at the moment it happens, which used to mean every creator had to run a node. Almost nobody will.

Two of the roles above fix that by lending creators the one thing they were missing: a machine that is awake. Neither ever holds anyone’s money. Payouts are written into the contract and go to the creator’s own address; a volunteer is not a party to the channel and cannot be made into one.

mailbox

Tipping mailbox

You hold incoming tip messages for creators who are offline, and hand them over when the creator’s browser comes back. You hold no keys, approve nothing, and cannot change a message you are carrying — the software has nowhere to put a key even if it wanted one.

The tip finishes when the creator returns. This is the safe default and needs no trust from anyone.

delegate

Delegated signer

A creator can go further and authorise you on the blockchain to approve their incoming tips, so a tip completes even while they sleep. The contract limits that authority to exactly one thing: agreeing the new balance. You cannot withdraw funds, cannot close a channel, and cannot be paid.

The creator can revoke you at any moment and it takes effect immediately. This asks real trust of you as an operator — a compromised machine could take part in agreements about tips not yet collected — so it is opt-in on both sides and never turned on by accident.

1 · Reader signs the tip in their own wallet 2 · Mailbox holds the message signs nothing 3 · Creator’s node checks it, then signs with the key it holds 4 · Creator’s console review and accept, served by their node the countersigned result is cached back at the mailbox, so a second tip continues from the first accepting costs no transaction fee and touches no blockchain — it is two signatures on a number this site is not in the path: it introduces the two of you and then has nothing to hold reviewing a waiting tip does not consume it, and nothing is accepted until the creator says so

The creator’s key never leaves their machine, so the accepting step can only happen there — not in a web page, and not here.

Where you accept them. Reviewing and accepting tips happens in your own node’s console, not on this site. That is not a stylistic choice: accepting a tip means signing with your channel key, that key lives in your node so tips can arrive while you are asleep, and a web page that could accept on your behalf would be a web page holding your key. This site links you to your own console and otherwise stays out of it.

What a volunteer can see. A tip message names the two people it is between, so a mailbox learns who is tipping whom and roughly how often. That is a real limitation and we are not going to dress it up: running a mailbox is not anonymous relaying, and hiding that relationship needs a further layer that does not exist yet.

About that open port. A gateway and a probe both have to be reachable from the internet, which on a home connection usually means adding a port-forwarding rule on your router. If your provider uses carrier-grade NAT — common on mobile and some fibre plans — inbound connections are not possible at all and neither role will work, however good your connection is. Storage and validation have no such requirement: they reach the network over I2P and make only outbound connections.

What happens when you ask for a page

Five steps, of which only one involves trusting anybody. The gateway is carrying bytes it cannot alter without the reader noticing, which is what makes it safe to let a stranger do it.

1 · Your browser picks a gateway from a signed list 2 · Gateway terminates TLS under its own name 3 · Origin renders and signs path + version + hash 4 · Gateway relays cannot re-sign: it has no key 5 · your browser checks the signature against the origin key it already holds a changed byte fails here — detected by the reader, not reported by a third party the version is signed too, so replaying an old page is refused rather than merely noticed

The gateway never holds the signing key. That is the whole design.

What happens when the origin is down

Step 3 fails. Gateways already hold a signed, read-only snapshot of the site, so the answer is not an error page — it is the site, clearly labelled as a copy, with everything that writes turned off.

Your browser asks as normal Gateway origin unreachable origin — not answering Signed snapshot served read-only, and labelled Posting is disabled, not broken: a form that silently swallows what you typed is worse than one that is absent.

The snapshot carries its own signature and its own version, so an outage cannot be used as cover for serving something older or altered.

How a gateway is judged

A gateway that misbehaves has to be removed, and the power to remove one is the power to remove a competitor. So no single observer has it. A finding counts only when several independent ones agree — and independence is checked, not assumed, because signatures are cheap to manufacture and distinct operators are not.

probe A operator 1 probe B operator 2 probe C operator 2 — same Quorum 4 of 5 agreeing 3 operators, 2 networks Acted on reputation, then removal with the evidence kept Probes B and C are one operator, so they count once. Agreement between machines somebody controls together is one opinion wearing three signatures.

The counts are the network's live thresholds. They are deliberately hard to meet.

Being honest about where this stands. Those thresholds are real and enforced, which means that today — with few independent operators — almost nothing reaches quorum. That is the correct behaviour and not a finished one: a rule that never fires is doing its job only until there are enough participants for it to matter. Running a probe is how that changes.

Why a stranger's machine can serve you safely

A gateway is transport, not authority. It never holds the network's signing key. Every page it serves carries a signature over the exact bytes, and your browser checks it without asking anyone's permission — so a gateway that alters a single byte is caught by the reader it tried to deceive, not by a moderator afterwards.

Signed content

Ed25519 over path + version + SHA-256 of the body. The version is signed too, so serving you an older page is refused rather than merely noticed.

Content addressing

In the DHT a thing's name is its hash. A storage node that returns the wrong bytes is detected by whoever asked, so it never has to be trusted.

Corroboration, not authority

One report about a gateway is one observer's opinion. Findings count only when independent operators agree — signatures are cheap, independence is not.

Emergency copies

Gateways hold a signed read-only snapshot. If the origin goes down the site stays readable, clearly labelled, with posting disabled rather than silently swallowing what you typed.

Lending your spare CPU — without lending your machine In development

Most volunteers have no usable GPU and four to sixteen idle cores, so compute here is CPU-first rather than GPU-first. That is not a consolation prize: two processors running the same code over the same input produce byte-identical output, so correctness can be checked by comparing hashes. Graphics cards do not offer that — different scheduling changes the order of additions, and the answers are all correct without being equal.

The hard problem is not speed. It is that running a stranger's program on your desktop is exactly the thing you should never do. The design assumes every submitted program is hostile and removes what malice needs, rather than trying to detect it:

Your machine your files, your network, your devices — none of it reachable from inside microVM — a real virtual machine, not a container hardware virtualisation: the guest cannot read host memory even if it fully compromises its own kernel; privileged instructions trap to the hypervisor The job reads its input computes writes one output file boots in under a second, destroyed when finished No network absent, not firewalled No devices no camera, mic, USB No keyboard, no screen nothing to capture Read-only disk nothing left behind

Dashed = built and tested, not yet running on volunteer machines.

Nothing to block

A keylogger needs a keyboard stream; screen capture needs a framebuffer. A headless VM has neither, so there is no attack to detect — there is nothing for one to attach to.

No network at all

Not filtered — absent. No interface, no route, no DNS. Inputs are fetched before it boots and results collected after it stops, so there is no botnet to join and no allowlist to leak through.

It stops when told

There is no polite shutdown to ignore. The deadline passes and the machine is destroyed, along with anything it started. A job cannot hold your core by declining to exit.

Wrong answers are caught

The same unit runs on several unrelated machines and the results are compared. Replicas are spread across different operators and networks, so agreement is not just several copies of one bug.

How work turns into payment Design

Paying for each of these things on-chain does not work: a transaction fee dwarfs the value of serving one page. So work produces signed receipts instead, and receipts settle in bulk. The receipt part runs today — every rewarded action already carries provider and witness signatures. What follows is the design for settling them continuously rather than in epoch-sized batches.

Work happens a page served, a shard held, a unit computed Receipt signed provider signs, witnesses co-sign — runs today Balance updated off-chain, instant, costs nothing Settled on-chain once, in bulk, for many receipts A receipt cannot be spent twice: it names the channel it debits and the moment its claim expires. The chain is touched when a tab is closed — not when a page is served.

Why an off-chain payment is still safe

The worry with paying outside a blockchain is obvious: if the payment is not recorded publicly, what stops the other side denying it? The answer is that a payment channel does not ask you to trust anyone. It gives you something you can take to the chain alone, at any time, whether or not the other side cooperates.

This is the design Bitcoin's Lightning Network proved at scale. Dendritic Network is not Lightning — Lightning is Bitcoin, and this settles on Ethereum — but the safety mechanism is the same one, and it is worth understanding because it is what your money actually rests on.

Open one transaction funds locked on-chain Thousands of updates — off-chain each one signed by BOTH sides, each replacing the last instant, free, and invisible to everyone else you always hold the newest signed balance Close one transaction final balances paid out If the other side vanishes or refuses to close honestly: You close alone no cooperation needed Challenge period opens a newer signed state beats an older one Chain pays the honest state cheating costs the cheat Dashed = designed, not yet running. Nothing described here is live today.

You can always leave

Every update is signed by both sides. If the other party disappears, you submit the newest one you hold and the contract pays it out after a waiting period. Their cooperation is convenient, never required — which is the whole reason this is not trust.

Cheating is punished, not merely detected

Submitting an old state — one where you had more — opens a window in which anyone can post a newer signed state and take the cheat's stake. Fraud is not just refused; it is the losing move.

You are not required to be online

The catch in that window is needing to notice. A watchtower watches for you and submits the newer state if someone tries it, and it is built so it can only ever pay you — it can never move your funds anywhere else.

Nobody holds your money in between

Funds sit in the contract, not with an operator. Between opening and closing, what changes hands is signatures — not custody. There is no moment where the site is holding your balance and could freeze or lose it.

And the parts that are not magic

Your funds are only as safe as your keys

The signed states are what protect you. Lose them and lose the device with no backup, and you can still recover what the chain last recorded — but not what you were owed off-chain since. Endpoint compromise defeats all of this.

Opening and closing are public

What happens inside a channel is private; that a channel exists is not. Deposits, withdrawals and timing are on a public chain, and no amount of off-chain privacy changes that.

Money in a channel is committed

Funds locked in a channel are not spendable elsewhere until it closes, and closing costs a transaction fee. Channels suit repeated small payments; for one large payment they are usually not worth opening.

None of this is live yet

This section describes a design, not a running system. When it ships it will say so here, and the page will state plainly which protections are in force and which are still on paper.

One channel with the network, not one per creator

The obvious way to do this is the wrong way: if every viewer had to open a payment channel with every streamer, storage node and gateway they ever touched, nobody would get past the first tip. Each channel costs a transaction to open and locks funds that then sit idle.

So a reader opens one channel — with the network — and tops it up like a prepaid card. Payments to everyone else are routed through it.

You deposit once, say 100 ANON one channel, one signature The network, as a router forwards locked payments onward holds channels with providers cannot keep what it forwards Streamers per minute watched Storage per byte-hour Gateways per request Compute nodes per CPU-second one deposit

A router, not a wallet — see below for why that distinction is the whole design.

It forwards; it does not hold

Each hop is locked to a secret that only completes the whole path at once. The network either delivers your payment to the streamer or it never leaves your channel — there is no in-between state where someone else is holding your money. That is what makes this a router rather than a custodian.

You can always leave

Your channel is still yours. If the network stops responding you close it yourself and the chain returns your remaining balance after a waiting period, whether or not anyone cooperates.

The cost is liquidity, not trust

For this to work the network must already hold funded channels with every provider you might pay. That capital is the real price of the convenience, and it is why the hub is run by the treasury rather than by a volunteer.

The honest catch

A router sees what it routes. Paying everyone through one hub tells that hub which reader paid which streamer — on a network built for anonymity that is a real cost, and it is being designed against rather than ignored.

Who watches while you are asleep In development

A payment channel protects you by letting you post a newer signed state than the one a cheat submitted. That protection has a deadline. If someone closes your channel on a stale state at three in the morning and the challenge window expires before you wake up, the stale state becomes final and the difference is theirs.

So a watchtower holds your newest signed states and posts one if it ever sees an older one hit the chain. The important design decision is what it is not allowed to do.

Cheat closes on an old state Watchtower notices it is holding a newer one Newer state posted you keep your balance What it cannot do send funds anywhere but to you It holds evidence, not authority.

A watchtower can only ever replace a stale state with a newer one you already signed.

It never holds a key that can move your money. Everything it stores is a state you already signed, and the only action it can take is handing one of those to the contract. A compromised watchtower can fail to defend you; it cannot rob you.

The waiting period is a measurement, not a guess

How long should the challenge window be? Too short and an honest person cannot react in time. Too long and everyone's money is slow to withdraw. The number is fixed permanently when the contract is deployed, so it was worked out by measuring every step of getting a newer state onto the chain, rather than by picking a round figure.

Noticing a stale closemeasured over 200,000 channels
Getting a transaction minedmeasured on Ethereum mainnet, 30 real transactions
Re-sending it if the fee was too lowmeasured, 30 full recovery cycles
A chain reorganisationstill being observed — see below
Somebody being unavailablea stated commitment, not a measurement

Each step has a generous budget, and each budget has to be backed by an actual measurement against real Ethereum before the contract can be deployed. Four are done. One is not, and the reason is worth being precise about: a reorganisation is a rare event, and watching for a long time without seeing one does not prove they are shallow. An absence of events cannot bound the size of one, so that budget stays unproven until a real reorganisation is observed and measured.

If your device dies In development

The signed states are what protect you, so losing them matters. Your latest states are backed up encrypted, split into pieces, and spread across the same distributed storage that holds the site's content — so recovering them does not depend on any one machine still being alive, including ours.

Your latest states signed by both sides Encrypted locally with a key only you hold Split into shards any 6 of 9 rebuild it Spread wide across the network Three of the nine holders can vanish and your backup is still intact. None of them can read it, and none of them can tell it is yours.

Storage is not trust

The nodes holding your backup hold ciphertext. They cannot read a state, cannot forge one, and cannot use one — a state is only worth anything to the person it pays.

Losing pieces is expected

The backup is split so that any six of nine pieces rebuild it. Nodes going offline is normal operation, not an incident.

What a backup cannot fix

If your signing key is stolen, backups do not help — whoever holds the key is you, as far as the contract is concerned. Backups protect against loss, not against compromise.

How we know the blockchain is telling the truth In development

Almost every application that talks to Ethereum asks a company's server what the chain says and believes the answer. That is a strange thing to do with a system whose entire point is not needing to trust anyone — and here it would be worse than strange, because a watchtower shown a fabricated chain would sit quietly while your channel was stolen.

It is worth being blunt about why the obvious defences do not work. Since Ethereum stopped using proof-of-work, fabricating a convincing chain of block headers costs nothing. An attacker who controls the server you ask can invent blocks that link together perfectly, contain any balances they like, and produce proofs that verify correctly against their own invented state. Checking that the blocks fit together proves nothing at all.

Starting point from 3 unrelated groups Validator signatures checked by us, not taken A block we can prove is real and the balances underneath it If we cannot verify it we refuse — we do not fall back to trusting The three starting points must agree exactly. If they disagree, that is a stop, not a vote.

The only thing that makes a block real is signatures from Ethereum's validators — so those are what we check.

So the node checks the validator signatures itself. It starts from a reference point obtained from three unrelated organisations who must agree exactly, then follows Ethereum's own signature chain forward from there. The server we read blocks from is never allowed to supply that starting point, because using a provider to vouch for itself is not a check.

It fails closed

If the signatures cannot be verified, the answer is refused. There is no best-effort mode that quietly falls back to believing the server, because that mode would be the one running on the day it mattered.

Agreement is not the security

Asking several providers and taking the majority raises the cost of an attack; it does not prove anything. It is used to obtain a starting point, and it is never described as verification.

Verified against the real chain

This is not a diagram of an intention. It has been run against live Ethereum mainnet: real validator signatures checked, real balances proven underneath a block the node confirmed for itself.

Giving an award without a transaction fee Design

Awards are the visible face of all of this. Sending one on-chain means paying a transaction fee that can exceed the award itself, which is why small tips do not work on most chains. Over a channel an award is a signed message: instant, free, and settled later in bulk with everything else.

One deliberate constraint shapes the design: clicking the award button does not decide that you paid. The click starts a payment; the payment completes only when both sides have signed a new channel state. If anything fails in between, the award does not silently exist. The awards you see and the money that moved are kept as separate machinery precisely so that a bug in one cannot invent the other.

Three outcomes, not two

A payment completes, is refused, or is unknown — the last when a reply is lost. Unknown is treated as its own case rather than guessed at, because guessing wrong either double-pays or loses a payment.

Retrying cannot double-pay

Each award carries an identifier the channel remembers. Sending the same one twice updates nothing the second time, so a flaky connection costs you a retry, not a second award.

Splitting one payment across several routes Not enabled

A larger payment can be cut into pieces that travel different routes and reassemble at the recipient. It helps when no single route has enough capacity, and it means no single intermediary sees the whole amount.

The planning half of this is built — fragments are sized unevenly on purpose, since three identical thirds arriving together reassemble on sight, and the routes chosen must share no operator, because splitting across two paths run by the same party gives that party two views and a partial sum rather than any privacy at all.

It is switched off, and it should be. What is missing is the half that coordinates the pieces once they are in flight: what happens when two of three arrive, how partial refunds reconcile, how a payment resumes if your machine restarts midway. Until that exists, splitting a payment would place real locks on real channels with no coordinated way to settle or unwind them — worse than not splitting. The security properties it must satisfy have been written down first, and the gaps are recorded as gaps rather than quietly designed around.

Pooled tipping — many people, one recipient Design

Splitting, above, takes one person's payment down several routes. Pooled tipping is the opposite direction: many independent people contributing toward one recipient, aggregated so a streamer draws down a single total rather than settling hundreds of separate tips.

Alice signs +0.25 Bob signs +1.00 Carol signs +5.00 Dave signs +0.50 Pool aggregates the authorisations it does not hold a balance of its own Recipient draws down 6.75

Each contribution stays backed by its contributor's signature. The pool adds them up; it never invents them.

The line this design will not cross is the obvious shortcut: a pool must never become a database that records Alice owes 1, Bob owes 5 and then promises to pay the streamer. That is a custodian with extra steps, and it would put every contributor's money behind one operator's honesty and solvency. Every contribution stays backed by cryptographic authorisation from the person who made it, so the pool is adding up things that are already true rather than asserting new ones.

The recipient chooses

Pooling is a per-recipient setting, off by default. Ordinary one-to-one tipping stays exactly as it is and stays the default — a tip is never forced through a pool just because one exists.

It sits above channels, not instead of them

The underlying channels stay two-party. This is an aggregation layer on top of the same signed states, not a redesign into multi-party channels.

A retry is not a second tip

If your connection drops at the wrong moment you will retry — that is the normal case, not an edge case. The same contribution sent twice must leave the pool at plus twenty-five, never plus fifty.

You cannot hand it a total

A contributor asks to tip a recipient an amount. They never submit a balance, an aggregate or a pool state — those are constructed and checked by the node, because a caller who can choose the state can choose a flattering one.

This is a design, not a running feature. It is scheduled after the economic testing phase, and the questions that decide whether it can be built non-custodially — how a contribution is bound to its contributor, recipient, pool and amount at once — are still open questions rather than settled answers. They are written down as questions on purpose: guessing at them is precisely how a pool turns into the trusted database above.

What happens if the domain or the server is taken

An outage is the easy case — gateways serve their snapshot and the site stays readable. The hard cases are a seized domain and a dead server, because both break the thing everything else is looked up through. Neither is hypothetical, and the network is built so that neither ends it.

DNS is not the authority

Where the network lives is a document signed by the operator's wallet. Nodes keep the last one they verified and prefer it over anything a name resolves to — because a name is exactly what gets taken away.

Your node checks it itself

Against a wallet address written into your config when you downloaded it, never fetched. Asking the origin who is allowed to replace the origin would be asking the thing being replaced.

Old instructions cannot be replayed

Every directive carries a number that only moves forward, and your node remembers the highest it has seen — across restarts. A message captured today is worthless tomorrow.

A move waits, on purpose

An ordinary move takes effect after a delay. That gap is the window in which a directive nobody meant to issue can be frozen. A genuine emergency skips it and is announced loudly instead — speed is paid for with visibility.

Backups nobody can read

The site can be rebuilt elsewhere from an encrypted backup held by gateways. Holding one reveals nothing: it is opaque to its custodian, and opening it needs a passphrase no server has. Copies are spread across distinct operators, since five copies with one person is one copy.

The way in is not one address

A joining node finds the network through several gateways discovered in DNS, so one being offline costs nothing. What it is told is signed, and when it cannot verify a signature it requires independent gateways to agree before believing anything.

A joining node no peers yet, so it cannot ask the network gateway A signed answer gateway B same answer gateway C offline — skipped Checked, then joined signature first, agreement second A gateway that answers differently from the signed document is named, not merely ignored.

Two forgers do not outvote one signature — which is why agreement is the second layer and never the first.

What none of this fixes. One wallet signs those directives, so whoever holds it can move the network. The delay, the freeze and the forward-only numbering narrow that window; they do not close it. The real answer is a second independent signer, and that needs a second operator to exist — which is one more reason to run something here.

Build your configuration

Everything below goes into a config.json packaged beside the program. Nothing here is permanent — every value can be edited afterwards, and the node has a management page for exactly that.

Donated: 0 GB Already used Free

Set your disk size so the bar means something. Your browser is not allowed to read it, so these two numbers are yours to fill in — nothing is measured or sent.

The payout address is where ANONCoins are sent. Leave it blank and the node still works — it simply earns nothing, which the node's own dashboard will nag you about.

Download

The program is identical for everyone on a platform. Only the configuration differs, which is why the hash below is of the binary — a hash of your personal archive would match nobody else's and could not be checked against anything.

No binaries are published yet. Everything below works — you can pick roles and build a configuration — but the download itself will not be available until an operator uploads the builds. Nothing here is broken; there is simply nothing to hand you.

Guessed from your browser. Guessed, not known — a browser will not tell a site which processor it has, so check this is right before downloading.

Expected SHA-256 of the binary

Select a platform…

Nothing selected yet.

After it is running

It earns ANONCoins

Storage, bandwidth and verification are paid from the same treasury everything else on the site draws from. Rewards are claimed, not pushed — when an epoch settles, your share becomes provable against a Merkle root and you send one transaction to collect it. Claim rewards → · How the economy works →

It has its own dashboard

Served on 127.0.0.1:9090 — local only, so nothing about your node is exposed by running it. Capacity, peers and earnings live there, and every setting in config.json can be changed afterwards.

Stopping is not a betrayal

Shards are erasure-coded across many nodes, so leaving costs the network redundancy it will rebuild, not data. Run it for as long as it suits you.

It needs I2P

Storage and validation reach the network over I2P. The node speaks to a local router on 127.0.0.1:7656; if you do not have one, the node's dashboard will say so rather than failing quietly.

Run it — one line

This fetches the installer, picks the right binary for the machine you run it on, writes a config.json for the roles you selected on the diagram, and starts the node. It changes as you change your selection. It is an ordinary shell script and you are welcome to read it first — open it in a browser before piping it into a shell.

Paste this into a terminal

curl -fsSL https://dendritic.network/install.sh | sh

Nothing selected yet — this installs the node with the installer's defaults. Pick roles on the diagram at the top and this line updates to match.

Node reputation

How the network rates the machines that keep it running. Scores are derived from evidence anyone can fetch — the receipts nodes signed and the epochs that settled them — so this page can be recomputed by anybody who doubts it.

No nodes registered yet.

A node appears here once it is on-chain, and earns a rating by proving its work and by auditing other nodes. How to run one →

How a score moves
Proof accepted+1.0 proved it holds what it claims
Challenge verified+5.0 audited another node and confirmed the result
Proof failed-0.3 could not prove what it advertised
Fraud-20.0 a fabricated or duplicated receipt
Caught cheating-100.0 attestations from witnesses nobody drew

Every node starts at 50 — neither trusted nor suspect. Gains are slow and penalties are not, because a reputation that is cheap to rebuild is not worth protecting. Being unreachable is never counted as dishonesty: an offline node earns nothing, which is punishment enough for downtime.

Dendritic ANONCoins

How the economy works

ANONCoins are the network's fuel. You earn them by running real infrastructure that others independently verify, and you spend them on the platform's services. Everything flows in a closed loop that no single party owns — here's the whole picture, simply.

Wondering why a blockchain is involved at all, and how the verification actually works? Start here →

A closed loop, not a faucet

ANONCoins aren't printed for each action. They circulate: people who provide infrastructure earn ANONCoins; people who use the platform buy and spend them; the Treasury sits in the middle, funding rewards and recycling fees. The same ANONCoins go around and around.

Infrastructure DHT · gateways · storage · compute Treasury funds rewards · sells ANONCoins Consumers members · viewers · builders Services videos · labs · uploads · perks earn buy spend rewards

earn → sell → buy → spend → fund rewards → earn …

Three independent layers

The economy is deliberately split into three parts that don't depend on each other's internals — so each can be audited and evolved on its own. Humans set the rules; the protocol runs them.

Monetary-Policy DAO sets the bounds: inflation range, targets, reserve ratio, reward weights Treasury within those bounds: mint · burn · buy back · sell · fund each epoch Proof-of-Facilitation ledger measures verified work → each node's share of the epoch's rewards bounds budget

who sets the rules · where ANONCoins come from · who earns them

Earning: proof, not promises

You never earn by claiming "I'm online." Work is assigned, an unpredictable challenge is issued, you produce the correct result, and independently-chosen witnesses confirm it — only then does it count. Each epoch has a fixed reward budget, split across the services the network needs, so faking work only shrinks the faker's slice.

Storage

Hold shards

Prove you still hold assigned, erasure-coded data and serve it back.

Gateway

Bridge traffic

Accept external requests and route them into the network, reachably.

DHT

Route lookups

Answer routing challenges quickly and honestly across the network.

Compute

Run workloads

Execute assigned containers; results are replicated + spot-checked.

Supply, managed like a central bank

New ANONCoins aren't minted per reward — they come from the Treasury, which has four tools and must keep a reserve. If reserves run low, emissions taper automatically, even when demand is high, so the currency can't over-inflate.

Treasury keeps a reserve Mint Burn Sell Buy back rewards fees in to users off market

mint within the cap · burn fees · sell to users · buy back when demand is weak

Difficulty

Rewards follow need

Where the network is short on capacity, that service's reward multiplier rises — like mining difficulty, but for infrastructure. When enough joins, it falls.

Health

Expand only when useful

A Network Health Index (storage, gateways, compute, coverage, success rate, reserves) decides the overall budget, so supply grows only when more infrastructure is genuinely needed.

Spending & who decides

Spend

Priced in dollars

Subscriptions and services are priced in USD; the exact ANONCoins are computed at the moment you pay, so you never speculate just to keep a membership. Fees are split: some burned, some to the Treasury, some to providers.

Govern

Contribution, not wealth

Voting weight comes mostly from verified contribution and reputation, only a little from holdings — so buying ANONCoins can't buy control. Constitutional limits (max inflation, minimum reserve) are enforced in code, not votes.