Protocol specification

The full normative specification of chain 2800, and where to read it.

Docs / Reference / Protocol specification

Chain 2800 has a normative protocol specification. It is the authority; every other page in this documentation is the readable form of part of it.

Where it is

It ships inside the public node package as SPEC.md:

git clone https://git.aere.network/aere-network/aere-node.git
less aere-node/SPEC.md

What is in it

SectionSubject
0Conventions, and how every statement in the document is grounded
1Chain parameters: identity, genesis header fields, EVM fork schedule, block period
2Consensus: QBFT engine, quorum, the extraData structure with the AERE sixth element, decoder strictness, what header validation checks and one thing it does not
3The post-quantum certificate anchor: the claim stated exactly, activation, the two pre-images and the certificate encoding, the validation rules, the Falcon registries
4Precompiles: the five on mainnet, Falcon input framing, testnet-only ones, verification against the live chain
5Fee rules: EIP-1559 with the AERE floor, what a follower must and must not enforce
6Sync requirements: what a third-party client must implement to follow the chain
7Formal models: what is proven, where, and the limits
8Known divergences, historical windows and corrections. Normative.
9What this specification cannot state from the published sources

Two sections worth reading even if you read nothing else

Section 8, known divergences. It is normative and it records the windows where the chain did not behave the way the rest of the document describes, including the ones caused by our own mistakes. A specification without that section is a specification you cannot use to write a second client.

Section 9, what it cannot state. It lists the questions the published sources do not answer. We would rather publish the boundary of what we can ground than let a reader assume the document is complete.

How claims are grounded

Every factual statement in the specification carries its ground: either a source reference to a file in the package, or a MEASURED tag with a date and the method. A statement with neither is a statement the document does not make.

That convention is the reason the specification is useful to someone implementing a second client: you can tell, per sentence, whether you are reading code, a measurement, or an intention.

If you are writing a client

Read section 6 first. It is written for exactly that, and it includes the facts a syncing client will observe so that they are expectations rather than surprises.