Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion STYLE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ AI-first, supercharge, intelligent (as a product claim).
| wallet | account, Citrate Keyring (UI may read "Wallet" where users expect it) |
| mining / miner | validating / node operator |
| decentralized | distributed, peer-operated, on-premise |
| tokenomics | network economics, marketplace economics |
| tokenomics | network economics, marketplace economics (one exception: the owner-mandated status sentence "Tokenomics are not yet determined", see [/start/tokenomics](/start/tokenomics)) |
| AI-powered, intelligent | describe what it does |
| DeFi, NFT | (avoid entirely) |

Expand Down
2 changes: 2 additions & 0 deletions components/doc-view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { Icon } from "./icons";
import { findNavBySlug } from "@/lib/nav-util";
import { cn } from "@/lib/cn";
import { FreshnessBadge } from "./freshness-badge";
import { TokenomicsNotice } from "./tokenomics-notice";

/** The tier-aware document reader — renders every DocResponse state (DESIGN_BRIEF §7, §15). */
export function DocView({ slug }: { slug: string }) {
Expand Down Expand Up @@ -146,6 +147,7 @@ export function DocView({ slug }: { slug: string }) {
)}
</div>
</header>
{doc.tokenomicsNotice && <TokenomicsNotice />}
{doc.body != null
? <Markdown source={doc.body} />
: doc.sourceKind === "gated" || doc.tier !== "public"
Expand Down
38 changes: 38 additions & 0 deletions components/tokenomics-notice.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import React from "react";
import Link from "next/link";
import { Icon } from "./icons";

/** Route of the single page that states the status of network economics. */
export const TOKENOMICS_STATUS_SLUG = "/start/tokenomics";

/** The notice text, shared by every page so the wording stays identical everywhere. */
export const TOKENOMICS_NOTICE_TEXT =
"Tokenomics are not yet determined. Figures on this page describe the current testnet and may change " +
"before mainnet. Nothing here is an offer or a promise of value.";

/**
* Network-economics notice (owner decision 2026-10-27). Rendered by the doc reader at the top of every page
* whose frontmatter sets `tokenomics_notice: true`; test/tokenomics-notice.test.ts requires that flag on
* every page whose prose mentions SALT, rewards, staking, supply, fees, or related terms.
*/
export function TokenomicsNotice() {
return (
<aside
role="note"
aria-label="Tokenomics status"
data-tokenomics-notice=""
className="mb-6 flex items-start gap-2 rounded-xl border border-[color-mix(in_oklab,var(--color-amber)_45%,transparent)] bg-[color-mix(in_oklab,var(--color-amber)_8%,transparent)] px-3 py-2 text-sm"
>
<span className="mt-0.5 shrink-0 text-[var(--color-amber)]">
<Icon name="info" size={15} />
</span>
<p className="m-0">
{TOKENOMICS_NOTICE_TEXT}{" "}
<Link href={TOKENOMICS_STATUS_SLUG} className="underline">
Read the tokenomics status
</Link>
.
</p>
</aside>
);
}
4 changes: 2 additions & 2 deletions content/_generated/content.ts

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions content/aa/paymaster.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: 9d5959e
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

A paymaster sponsors the gas for an operation so a person can transact with no SALT in hand, which is what
Expand Down
1 change: 1 addition & 0 deletions content/apps/buyer.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: 7d44b29
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

The buyer side of Citrate Market, where you find a model provider, post a job, and pay for each
Expand Down
1 change: 1 addition & 0 deletions content/apps/chatbot.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e3827c3
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

A gasless chat app that runs inference on Citrate and signs in with a Citrate Keyring account, so you
Expand Down
1 change: 1 addition & 0 deletions content/apps/explorer.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: 6faab8a
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

CitrateScan is the public explorer for the Citrate Network. It reads the BlockDAG, transactions,
Expand Down
1 change: 1 addition & 0 deletions content/apps/native.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: bc0e8ba
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

The Citrate Keyring desktop app is a native desktop application that holds a Citrate Keyring account and,
Expand Down
1 change: 1 addition & 0 deletions content/apps/wallet-extension.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: 930594c
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

The Citrate Keyring extension is a Manifest V3 browser extension that holds a Citrate Keyring account,
Expand Down
1 change: 1 addition & 0 deletions content/chain/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

The `citrate` command-line tool that ships with `citrate-chain`. It manages accounts, deploys and calls
Expand Down
1 change: 1 addition & 0 deletions content/chain/consensus.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

Consensus is how Citrate Network turns many blocks into one agreed history. The ledger is a BlockDAG, so a block may name several parents, and the GhostDAG protocol reads that graph and produces a single order that every honest node computes the same way. This page is for developers and operators who want the mental model first and the audited surface after.
Expand Down
39 changes: 22 additions & 17 deletions content/chain/economics.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,44 +10,47 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

This is the unit of account on the Citrate Network and the rules that move it. SALT settles the work the
network performs, fees, block rewards, and staking; it is not a product to hold, and this page does not
treat it as one. It is for builders and operators who need to reason about what the network charges, what
it pays, and how supply behaves over the long view.
it pays, and how supply behaves in the current testnet code. These are proposed values: the
[tokenomics are not yet determined](/start/tokenomics).

## What it is

SALT is the credit the network counts in. When a transaction pays a fee, when a node earns a reward for
sealing a block, or when stake is placed and returned, the amount is denominated in SALT. The supply is
fixed at genesis: one trillion SALT, never more. The smallest unit is wei-style, so one SALT divides into
sealing a block, or when stake is placed and returned, the amount is denominated in SALT. On the current
testnet, the code caps supply at one trillion SALT; the mainnet supply is not yet determined. The smallest unit is wei-style, so one SALT divides into
10^18 base units, the same granularity a developer already expects from an account balance.

The economics live in one crate, `core/economics/`. It holds the token itself (`token.rs`), the per-block
reward schedule (`enhanced_rewards.rs`), and the constants that bound the whole system (`lib.rs`). The
reward schedule is the part worth understanding early, because it is what gives a node a reason to keep the
network running, and it shrinks on a fixed cadence so that early seasons are more generous than late ones.
network running. In the current code it shrinks on a fixed cadence, so early seasons pay more than late ones.

A block reward is built from a base reward plus four bonus pools, each expressed as a percentage of that
base reward. The four pools recognise four kinds of contribution: validator performance, AI contribution,
network health, and long-term staking. A node that does more of the work the network values earns a larger
share of the pools. The base reward halves every 2,100,000 blocks, about 24 days at the one-second
testnet cadence, so issuance tapers toward zero over the network's life rather than running flat forever.
network health, and long-term staking. A node that does more of the work the network values receives a
larger share of the pools. On the current testnet, the base reward halves every 2,100,000 blocks, about 24
days at the one-second testnet cadence, so issuance tapers toward zero rather than running flat. The mainnet
schedule is not yet determined.

## How to use it

You rarely set these values yourself; you read them, so you can price work and project earnings.
You rarely set these values yourself; you read them, so you can price work on the current testnet.

1. **Price a transaction.** Estimate the fee the way you would on any account-based ledger: gas used times
the prevailing price. SALT carries 18 decimals, so amounts and balances behave like the smallest units
you are used to.
2. **Read the live economic state.** Call `citrate_getEconomicState` for current network metrics and
`citrate_getToken` for token fundamentals over JSON-RPC. Both are documented in the
[chain RPC reference](/chain/rpc).
3. **Reason about rewards.** If you operate a node, the reward you can expect for a sealed block is the base
reward plus your earned share of the four bonus pools, adjusted for where the chain sits in its halving
schedule. See [run a node](/operators/run-a-node) for the operator path.
3. **Reason about rewards.** If you operate a node on the current testnet, the code computes the reward for a
sealed block as the base reward plus your share of the four bonus pools, adjusted for where the chain sits
in its halving schedule. These are testnet values, not a promise of future rewards. See [run a node](/operators/run-a-node) for the operator path.

## Reference

Expand Down Expand Up @@ -75,8 +78,9 @@ Block reward schedule, verified in `core/economics/src/enhanced_rewards.rs`:
| Halving interval | 2,100,000 blocks (~24 days at the 1 s testnet cadence) | `enhanced_rewards.rs` (`halving_interval`) |

The base reward and the four pool percentages are defaults in the source; we describe the base as a
configurable base reward rather than asserting a fixed number, since governance can move it. What does not
move is the halving cadence and the fixed supply.
configurable base reward rather than asserting a fixed number, since governance can move it. The halving
cadence and the supply cap are constants in the current testnet code; they are proposed values and may change
before mainnet.

```rust
use citrate_economics::*;
Expand All @@ -88,9 +92,9 @@ assert_eq!(TOTAL_SUPPLY, 1_000_000_000_000); // 18 decimals; base units = value

## Design rationale

A fixed supply with a halving base reward keeps the accounting honest: the network can settle the work it
The proposed design, a capped supply with a halving base reward, is meant to keep the accounting honest: the network can settle the work it
performs without an open-ended issuance that quietly dilutes everyone who came before. Splitting the reward
into four pools, rather than paying a flat amount per block, lets the network pay for the behaviours it
into four pools, rather than paying a flat amount per block, is meant to let the network pay for the behaviours it
actually depends on, uptime, useful compute, a healthy peer set, and committed stake, instead of paying
the same for a block whether or not the node contributed anything beyond sealing it. The trade is more
moving parts to reason about; the benefit is that incentives point at the work rather than at the clock.
Expand All @@ -107,8 +111,9 @@ guarantee.
## Access and canon

Public. SALT settles the work the network performs; it is not an investment instrument, and Almanac does not
describe it as one. The token fundamentals, the reward structure, and the halving cadence are exactly what a
builder or operator needs to reason about the economy. No keys, balances, or private allocations appear
describe it as one. Testnet SALT has no cash value. The token fundamentals, the reward structure, and the
halving cadence are documented as they stand in the current testnet code; the final parameters will be
published before mainnet. No keys, balances, or private allocations appear
here.

## Source and verification
Expand Down
6 changes: 4 additions & 2 deletions content/chain/genesis.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

These are the chain identity and genesis parameters you need to point an account or a node at the Citrate
Expand Down Expand Up @@ -82,8 +83,9 @@ Genesis block, built deterministically from the shared genesis path
| Base fee per gas | 1 Gwei (1e9 wei) | `core/economics/src/genesis.rs` (`base_fee_per_gas`) |
| Gas limit | 30,000,000 | `core/economics/src/genesis.rs` (`gas_limit`) |

The genesis allocation categories sum to the one trillion SALT supply cap; the allocation structure is
covered under [network economics](/chain/economics). No private keys or mnemonics appear in any
In the current testnet code, the genesis allocation categories sum to the one trillion SALT supply cap; the
allocation structure is covered under [network economics](/chain/economics). The mainnet supply and
distribution are [not yet determined](/start/tokenomics). No private keys or mnemonics appear in any
configuration in the repository, and we do not enumerate specific genesis account addresses in public docs.

## Design rationale
Expand Down
1 change: 1 addition & 0 deletions content/chain/rpc.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

The JSON-RPC interface a Citrate Node serves over HTTP and WebSocket. It speaks the Ethereum-compatible
Expand Down
1 change: 1 addition & 0 deletions content/chain/sequencer.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

The sequencer is the path a transaction takes between arriving at a node and landing in a block. It validates each transaction, holds the valid ones in a priority mempool, and assembles candidate blocks for proposers. This page is for developers who submit transactions and operators who want to understand how a block is put together.
Expand Down
1 change: 1 addition & 0 deletions content/chain/storage.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

Storage is where Citrate Network keeps what it has agreed on: the BlockDAG, account and AI state, and large model artifacts. This page gives developers and operators the mental model first, then the audited surface. It is the soil under the orchard; everything else grows on it.
Expand Down
5 changes: 4 additions & 1 deletion content/chain/tutorials/call-citrate-rpc.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

A short, copy-paste walkthrough of the JSON-RPC surface. You will confirm you are on Citrate, read the
Expand Down Expand Up @@ -99,7 +100,9 @@ rpc citrate_getToken | jq
# { "name": "Citrate", "symbol": "SALT", "decimals": 18, "totalSupply": "0x...", "totalMinted": "0x..." }
```

SALT has 18 decimals and a one-trillion cap. It is the unit fees and rewards are counted in, not a product. For
SALT has 18 decimals, and the current testnet code caps supply at one trillion; the
[tokenomics are not yet determined](/start/tokenomics). It is the unit fees and rewards are counted in, not a
product. For
the live economic snapshot, blocks height, gas price, staked amount, and treasury, call
`citrate_getEconomicState`:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

A copy-paste walkthrough of deploying compiled bytecode with the `citrate` command-line tool. You will
Expand Down
1 change: 1 addition & 0 deletions content/chain/tutorials/read-the-dag.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

A copy-paste walkthrough that lets you see the BlockDAG instead of reading about it. You will read the whole
Expand Down
1 change: 1 addition & 0 deletions content/compute/gateway.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ audited_against_sha: 603fe92
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

This is the operator's side of the Citrate Inference Gateway: how you deploy it on your own hardware, how
Expand Down
1 change: 1 addition & 0 deletions content/compute/node-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: 0e63363
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

Citrate Node is the daemon an operator runs to sell compute on Citrate Market from their own hardware.
Expand Down
1 change: 1 addition & 0 deletions content/compute/pool.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e5b7280
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

The compute pool is how several machines act as one provider on Citrate Market. It is two
Expand Down
1 change: 1 addition & 0 deletions content/contracts/compute.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

These are the contracts that let a machine operator sell compute on Citrate Market and let a buyer pay
Expand Down
8 changes: 5 additions & 3 deletions content/contracts/economics.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

These are the on-premise economic primitives that settle work on the Citrate Network: a wrapped form of
Expand All @@ -22,8 +23,9 @@ developers and integrators building against those contracts on chain id 40204.

SALT is the unit the Citrate Network counts in. It settles the work the network performs; it is not a
product to hold. The contracts here are the on-chain machinery that records that work and pays it out, and
nothing on this page treats SALT as an instrument to speculate on. For the base facts about SALT, supply,
and gas, read [network economics](/chain/economics).
nothing on this page treats SALT as an instrument to speculate on. The rates and caps below are the values
in the current testnet contracts; the [tokenomics are not yet determined](/start/tokenomics). For the base
facts about SALT, supply, and gas, read [network economics](/chain/economics).

Each contract does one job:

Expand Down Expand Up @@ -91,7 +93,7 @@ error `InvalidFeeAuthorization` reverts a fee transfer whose signature does not
`contracts/src/LiquidStakingPool.sol`, `is ReentrancyGuard, Governable`. A shares-based staking pool,
`name="Staked SALT"`, `symbol="stSALT"`, `decimals=18`. You deposit SALT and receive stSALT shares; rewards
reported to the pool raise the value each share is worth, so the staked SALT stays usable as a share token
while it earns. Withdrawals wait out `WITHDRAWAL_DELAY` blocks before they can be claimed.
while reported rewards accrue to it. Withdrawals wait out `WITHDRAWAL_DELAY` blocks before they can be claimed.

| Function | Access | Purpose |
|---|---|---|
Expand Down
1 change: 1 addition & 0 deletions content/contracts/governance.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

The governance surface is four contracts that decide how the network spends its treasury, how it settles a
Expand Down
1 change: 1 addition & 0 deletions content/contracts/models.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ created: 2026-06-17T00:00:00Z
author: Citrate team; precompile section Larry Klosowski + Claude Opus 5.5
branch: hup/n7-chain-precompile-followups
updated: 2026-10-04
tokenomics_notice: true
---

These are the contracts that register a model on the public ledger, sell access to it, route inference
Expand Down
1 change: 1 addition & 0 deletions content/contracts/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

The contracts that run on the Citrate Network, where to find their addresses, where to get their ABIs, and how to confirm an address is real before you call it. This page is for anyone integrating against the on-chain surface.
Expand Down
1 change: 1 addition & 0 deletions content/contracts/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ audited_against_sha: e68af83
status: Implemented
created: 2026-06-17T00:00:00Z
author: Citrate team
tokenomics_notice: true
---

The security surface is where the network enforces who may participate and what happens when a participant
Expand Down
Loading
Loading