Skip to main content

Conservation

Every coin operation — mint-from-balance, split, merge, transfer, export, redeem — preserves total plancks by construction, and each enforces it inside its own transaction. conservation is the probe that recomputes the whole thing from the tables, live, on demand.

issuerunissued reserve  +  poolcommons  +  user_heldeveryone else  =  issuedprojected total\underbrace{\text{issuer}}_{\text{unissued reserve}} \;+\; \underbrace{\text{pool}}_{\text{commons}} \;+\; \underbrace{\text{user\_held}}_{\text{everyone else}} \;=\; \underbrace{\text{issued}}_{\text{projected total}}

All of it in exact plancks (1 ZEQ = 1043), all BigInt, no float anywhere on the path.

Check it yourself

Open, unauthenticated, on every node:

curl -s https://zeq.me/api/tally/coins/conservation

Read on 2026-09-03 at Zeqond 2,301,712,305:

{
"ok": true,
"origin": "https://zeq.me",
"zeqond": 2301712305,
"issuer_remaining_plancks": "1813550000000000000000000000000000000000000000000",
"pool_plancks": "4364690000000000000000000000000000000000000000000",
"user_held_plancks": "5740920000000000000000000000000000000000000000000",
"coin_token_plancks": "0",
"coin_token_count": 0,
"integer_plancks": "11919160000000000000000000000000000000000000000000",
"total_plancks": "11919160000000000000000000000000000000000000000000",
"issued_plancks": "11919160000000000000000000000000000000000000000000",
"network_supply_plancks": "6178240000000000000000000000000000000000000000000",
"conserved": true,
"as_zeq": { "issuer": 181355, "pool": 436469, "coins": 0, "total": 1191916 }
}

as_zeq is the same figures divided by 1043 — a convenience for reading, never the thing to reconcile against. Do the arithmetic in plancks.

Every term

FieldWhat it sumsWhere it comes from
issuer_remaining_plancksThe issuer's unissued reservetally_supply row for sm.slug='node': tokens_remaining × 10^43 + bi_accrued_quanta
pool_plancksThe commons / treasury balanceSame expression for sm.slug='pool'
integer_plancksEvery tally_supply row, issuer and pool includedSUM(tokens_remaining × 10^43 + bi_accrued_quanta) over the whole table
coin_token_plancksLive coin bearer tokensSUM(value_plancks) over tally_tokens where kind='coin' and status IN ('active','bearer')
coin_token_countHow many such rows existCOUNT(*) on the same predicate
user_held_plancksEveryone who is not the issuer or the poolinteger_plancks − issuer − pool + coin_token_plancks
total_plancksThe projected totalinteger_plancks + coin_token_plancks
issued_plancksSame numberIn core scope, issued is the projected total
network_supply_plancksissuer + poolThe figure that must be identical across nodes
conservedissuer + pool + user_held == totalBoolean

Two details worth pausing on.

status='bearer' counts. A coin exported to a .ZEQ file is escrowed, not destroyed — its row is still there at status='bearer' and its plancks are still in the total. That is correct: the value went offline, it did not leave the economy. A coin burned for a cross-domain migrate goes to status='migrated' and drops out here, because it has been re-minted on the destination chain.

bi_accrued_quanta is the sub-ZEQ remainder. Fractional pro-rata earnings accumulate there (0 ≤ v < 10^43) and roll into the integer balance as they cross one whole coin. Counting it here is what makes the sum exact rather than approximately exact.

What conserved: true does and does not prove

Be clear about this, because the field name promises more than the check delivers.

Substitute the definition of user_held into the test:

issuer+pool+(integerissuerpool+coins)user_held  =  integer+coins  =  total\text{issuer} + \text{pool} + \underbrace{(\text{integer} - \text{issuer} - \text{pool} + \text{coins})}_{\text{user\_held}} \;=\; \text{integer} + \text{coins} \;=\; \text{total}

It cancels. conserved is an algebraic identity — it is true for any values the queries return, and it would stay true if the issuer minted ten times too fast. What it actually verifies is that the BigInt path did not lose a digit between the four SQL reads and the response. That is worth having, and it is not an inflation check.

The checks that do bite are these two:

1. Per-operation conservation, enforced in-transaction

Every coin handler asserts its own sum before committing. From mint-from-balance:

// Conservation: minted coin plancks MUST equal the debited plancks.
if (sum !== totalPlancks) throw new Error("conservation_violation");

Split refuses with 400 sum_mismatch if the children do not sum to the parent's exact face, and asserts again after minting them. Merge sums the consumed inputs and mints exactly that. These run inside the transaction, so a violation rolls the whole operation back — nothing half-minted.

2. Cross-node parity of network_supply_plancks

issuer + pool is the projection that every node must agree on. This is the real audit, and you can run it in one line:

for h in zeq.me zeqproof.com zeqsdk.com; do
curl -s "https://$h/api/tally/coins/conservation" \
| python3 -c 'import sys,json;d=json.load(sys.stdin);print(d["origin"],d["zeqond"],d["network_supply_plancks"],d["as_zeq"])'
done

Sampled simultaneously on 2026-09-03:

NodeZeqondissuerpooluser_heldcoinsnetwork_supply (ZEQ)total (ZEQ)
zeqproof.com2,301,712,304181,323436,46900617,792617,792
zeq.me2,301,712,305181,355436,469574,0920617,8241,191,916
zeqsdk.com2,301,712,307181,355436,4692140617,824618,038

Read that honestly:

  • The pool is byte-identical on all three. 436,469 ZEQ everywhere. That is the projection working.
  • network_supply matches on zeq.me and zeqsdk.com. zeqproof.com reads 32 ZEQ lower at a Zeqond 1–3 earlier — a projection lag of about 32 Zeqonds, not a divergence. Sample the three within the same tick before calling a difference a fault.
  • total_plancks does not match across nodes, and is not supposed to. user_held differs wildly (574,092 / 214 / 0) because per-user balances and envelopes are home-local by design — they do not federate to peers. Only network_supply_plancks is the cross-node figure.
  • coin_token_count is 0 everywhere. No ZEQ coin bearer token has been minted on any node sampled. The coin machinery is live and its invariants hold; nothing is using it yet.

The unflattering line

The strongest claim this endpoint supports today is: the projection is internally consistent, the commons balance agrees across three nodes, and every coin operation conserves plancks inside its own transaction. It does not yet demonstrate that the total issued matches an independently reconstructed sum of issuance events — issued_plancks is defined as the projected total, not as a replay of the WORM issuance log. Anyone auditing supply should know that the two are the same number by definition here, not by agreement.

  • Issuance — where the issued total comes from, and the one place a cap is declared but not enforced.
  • The ZEQ coin — the operations whose in-transaction assertions are the real guard.
  • Transparency — the wider published supply surface.