SKIP TO CONTENT
STRATA
01 · THE MACHINE
ONE PRIMITIVE · ONE EDGE PER BLOCK

A 16-bit
machine
that lives
on-chain.

STRATA is a deterministic 16-bit processor composed from a single computational primitive. It advances one step per block, and every state transition is committed to the chain.

The contract does not emulate the processor. It executes the machine. Every cycle is a real state transition, and nothing is inferred between cycles.

No contract is deployed. Every figure on this page is read from the machine running in this browser, and the figures that describe a deployed instance are marked.

// DIE FLOORPLANREAD FROM THE NETLIST
REGISTER FILE16×16 FFREAD PORTS1,920 NANDABSTACK POINTER8 FF0x80MEMORY PORT242 NANDADRDATINSTRUCTION REG32 FFDECODER 5→32261 NANDARITHMETIC752 NANDADDLOGICSHIFTSELFLAGS4 FFZNCVCONTROL MATRIX241 NANDPROGRAM COUNTER12 FFPHASEONE PASSFETCHDECODEEXECUTESKIPWRITEBACKCOMMITNETLIST3,912 NANDADDERLOGIC UNITBARREL SHIFTERRESULT SELECTFLAG UNITREAD PORT AREAD PORT BREGISTER FILECOUNTER INCREMENTCOUNTER SOURCEOPCODE DECODERMEMORY PORTSTACK POINTERINSTRUCTION REGISTERCONTROL MATRIXONE PRIMITIVE312 FLIP-FLOPS3,912 NAND CELLSONE EDGE PER BLOCKSTRATA-16 R0 · PLAN VIEW · CELLS ARE STATEFETCH
DETERMINISTICVERIFIABLEREPLAYABLEPERSISTENTNO OPERATOR REQUIRED
NAND CELLS3,912one primitive
FLIP-FLOPS312state elements
RAM4 KBbyte addressed
ROM2,048instruction words
INSTRUCTION SET325-bit opcode
BLOCK CLOCK1 STEPper block
SWITCHING177control assertions
01.2 · LIVE MACHINE
EXECUTING RIGHT NOW · IN THIS BROWSER
// LIVE MACHINE
LOCAL STATECYCLE12,482,186
REGISTER FILE · 16 × 16 FLIP-FLOPSA LIT CELL IS A SET BIT
···12···8···4···0
R0
0000
R1
0000
R2
0000
R3
0000
R4
0000
R5
0000
R6
0000
R7
0000
R8
0000
R9
0000
RA
0000
RB
0000
RC
0000
RD
0000
RE
0000
RF
0000
NETLIST ACTIVITY3/15 BLOCKS · 397 CELLS DRIVEN
  • ADDER144
  • LOGIC UNIT160
  • BARREL SHIFTER256
  • RESULT SELECT192
  • FLAG UNIT52
  • READ PORT A960
  • READ PORT B960
  • REGISTER FILE132
  • COUNTER INCREMENT72
  • COUNTER SOURCE96
  • OPCODE DECODER261
  • MEMORY PORT242
  • STACK POINTER80
  • INSTRUCTION REGISTER64
  • CONTROL MATRIX241

3,912 NAND · 312 FF · 177 CONTROL ASSERTIONS ACROSS THE SET

REGISTER READ0000 0000
DECODE 5→32LDI
ALU0000
REGISTER WRITE
MEMORY PORTIDLE
CONTROL MATRIX4/15
FLAGS· · · ·
ZNCV
PC0x000
IR0x00000000
SP0x0080
FLAGSZNCV
REGISTER FILE · HEX
R00000
R10000
R20000
R30000
R40000
R50000
R60000
R70000
R80000
R90000
RA0000
RB0000
RC0000
RD0000
RE0000
RF0000
EXECUTINGLDI R2, #17
ROM ACCUMULATE · 15 W · 0x000
FETCH
DECODE
EXECUTE
WRITEBACK
COMMIT
CLOCK STOPPED · COMMITMENT D8A1F2147D2F
■ / EXECUTION TRACEBLOCK 21,004,310 · NEWEST FIRST
#BLOCKPCOPOPERANDSRESULT
NO TRANSITIONS COMMITTED SINCE RESET
NO TRANSITIONS COMMITTED SINCE RESET
NO TRANSITIONS COMMITTED SINCE RESET
01.3 · WHAT IT DOES
MEASURED ON STRATA-16 R0

Four things,
all of them
checkable.

A machine is not a claim about capability. It is a data path, a store, a set of instructions and a boundary. Each of the four statements below corresponds to something in the netlist, and each figure beside it was produced by running the machine.

Nothing here is rounded for effect. Where a figure is a range, it is because the machine takes a different number of phases depending on what the flags say.

01PHASES PER DECISION · 180 SAMPLES

IT DECIDES

The machine consumes an input and follows a deterministic execution path. A comparison writes the flags, and the branch that follows consumes them. The path taken is a function of the state, not of timing.

PORT INCMPIJMZ TAKENNOT TAKENFLAGS DECIDE · ONE PATH RETIRES
9–10PHASES PER DECISION · 180 SAMPLES
02VECTORS IN A FULL SWEEP

IT COMPUTES

A complete sixteen-bit arithmetic unit executes the fixed instruction set: one ripple carry adder, one bitwise logic unit, one four stage barrel shifter, and one result multiplexer. Subtraction is addition of the complement.

ADDER 144LOGIC 160SHIFT 2564→1 MUXRESULTONE RESULT PATH · FLAGS FROM THE CHAIN
1,048,576VECTORS IN A FULL SWEEP
03BITS · 256 FLIP-FLOPS

IT REMEMBERS

Sixteen registers and 4 KB of persistent store retain state across transitions, including a 64-word stack page for call depth. State survives a halt: a stopped machine is still readable.

16 × 16 FLIP-FLOPS4 KB STORE · 64 W STACKSTATE PERSISTS ACROSS TRANSITIONS
16 × 16BITS · 256 FLIP-FLOPS
04BYTE IN · BYTE OUT

IT DRIVES

The machine exposes an input and output boundary that lets programs interact with external state. There are no I/O instructions: both ports are mapped into the top of the store, so a load is a read and a store is a write.

HOST → 0x1000MACHINE → HOSTMAPPED INTOTHE STORE1 BYTE IN · 1 BYTE OUT · NO I/O OPCODES
1 / 1BYTE IN · BYTE OUT
02 · FABRICATION
3,912 NAND · 312 FF · 15 BLOCKS

From one primitive
to blockspace.

Every part of the machine is built from a single computational primitive. Nothing is assumed and nothing is hidden: the processor is constructed in layers, from boolean logic to a verifiable state machine, and each layer is countable in terms of the layer below it.

NAND is universal, so no second kind of gate is required anywhere above it. The cost of that decision is visible in the budget: two read ports account for 1,920 of the 3,912 cells, because a sixteen-to-one multiplexer is expensive when it is made of nothing but NAND.

VIEW THE BUILD PROCESS
01PRIMITIVEBoolean cell
One two-input cell. Universal, so nothing above it needs a second kind of gate.
1 NAND
02ARITHMETICAdder / logic / shifter
A ripple carry adder, a bitwise logic unit and a four stage barrel shifter, selected by one result multiplexer.
804 NAND · 4 FF
03REGISTERS16 × 16-bit
Sixteen words of addressable state with two read ports and one write port.
2,052 NAND · 256 FF
04MEMORY4 KB RAM
A byte addressed store with sixteen-bit access, a stack page and two mapped byte ports.
322 NAND · 8 FF
05CONTROLDecoder / matrix
A five to thirty-two decoder and a control matrix that asserts data path lines by phase.
734 NAND · 44 FF
06PROCESSORSTRATA-16
One machine. Deterministic, replayable, and advanced by an external edge.
3,912 NAND · 312 FF
THE PRIMITIVE1 CELL · UNIVERSAL
ABY0 010 111 011 10

One two-input cell whose output is low only when both inputs are high. Every gate in the machine — inverter, conjunction, disjunction, exclusive disjunction, multiplexer, latch — is composed from it.

THE ADDER16 × 9 = 144 NAND
A BCSUM · 16 × 9 NAND = 144

Sixteen full adders in a ripple carry chain. The carry out of bit fifteen is the carry flag; overflow is that carry differing from the carry into bit fifteen. Both flags come off the chain, not out of a formula.

THE BUDGETSUM OF THE NETLIST
ARITHMETIC8044 FF
REGISTERS2,052256 FF
MEMORY3228 FF
CONTROL73444 FF
PROCESSOR3,912312 FF

The processor layer is the whole netlist, not a block of its own. Sequential elements are counted separately because a flip-flop is not a gate: it is a state element built from gates that holds a value between two edges of an external clock.

03 · INSTRUCTION SET
5-BIT FIELD · 32 DEFINED · 0 RESERVED

Five bits.
Thirty-two opcodes.

The opcode field is five bits wide, producing thirty-two possible instructions. All thirty-two are defined, so the set is closed: there is no reserved space, no extension mechanism, and no undefined opcode for a program to reach. The architecture is fixed. Programs are data.

Two omissions are deliberate. There is no SWAP, because three exclusive disjunctions exchange two registers without a temporary. There are no input or output instructions, because both ports are mapped into the store and a load already reads.

This is the STRATA-16 R0 architecture specification. It is implemented by the machine in this page and by the independent model used in CHECK 02. It is not a deployed instruction set.

VIEW THE OPCODES
INSTRUCTION WORD32 BIT · 25 SIGNIFICANT
RSV31:257 BITOP24:205 BITRD19:164 BITRS15:124 BITIMM/ADDR11:012 BITMSB 310 LSB

A word is canonical when the seven reserved bits are zero and every field the instruction does not read is zero. Exactly one encoding exists for any instruction, which is what makes one machine’s transition comparable with another’s without a normalisation step. A non-canonical word raises a fault at fetch.

THE SET32 OPCODES
00000
NOP
00001
MOV
00010
LDI
00011
LOAD
00100
LDR
00101
STORE
00110
STR
00111
PUSH
01000
POP
01001
ADD
01010
ADDI
01011
SUB
01100
SUBI
01101
INC
01110
DEC
01111
NEG
10000
AND
10001
OR
10010
XOR
10011
NOT
10100
SHL
10101
SHR
10110
ASR
10111
CMP
11000
CMPI
11001
JMP
11010
JMZ
11011
JNZ
11100
JMN
11101
CALL
11110
RET
11111
HALT
TRANSFER
2
MEMORY
4
STACK
2
ARITHMETIC
7
LOGIC
4
SHIFT
3
COMPARE
2
CONTROL
8
OPCODE EXPLORERSELECT AN INSTRUCTION
CLASS
32 OF 32
OPCODEHEXMNEMONICOPERANDSFLAGSΦ
00000003
0000101Rd, Rs4
0001002Rd, #imm4
0001103Rd, [addr]5
0010004Rd, [Rs]5
0010105[addr], Rs5
0011006[Rd], Rs5
0011107Rs5
0100008Rd5
0100109Rd, RsZNCV5
010100ARd, #immZNCV5
010110BRd, RsZNCV5
011000CRd, #immZNCV5
011010DRdZNCV5
011100ERdZNCV5
011110FRdZNCV5
1000010Rd, RsZN5
1000111Rd, RsZN5
1001012Rd, RsZN5
1001113RdZN5
1010014Rd, #nZNC5
1010115Rd, #nZNC5
1011016Rd, #nZNC5
1011117Rd, RsZNCV5
1100018Rd, #immZNCV5
1100119addr5
110101Aaddr5
110111Baddr5
111001Caddr5
111011Daddr5
111101E5
111111F3
INSTRUCTION · ARITHMETICOPCODE 01001

ADDRd, Rs

00912000 · ADD R1, R2

Adds the source register to the destination register.

ENCODING · EXAMPLE WORDRSV31:257 BITOP24:205 BITRD19:164 BITRS15:124 BITIMM/ADDR11:012 BITMSB 310 LSB0x00912000
FIELDS READ
  • RDR1
  • RSR2
  • IMM/ADDRzero
  • RSV 31:25must be zero
PHASES
  • FETCHRUNS
  • DECODERUNS
  • EXECUTERUNS
  • WRITEBACKRUNS
  • COMMITRUNS

5 PHASES

FLAGS WRITTEN
ZNCV

UNLISTED FLAGS RETAIN THEIR VALUE

CONTROL ASSERTIONS · 7/15
IR_LDPC_INCPC_LOADRARBIMM_SELALU_ENSH_ENFLG_WRREG_WRMEM_RDMEM_WRSP_DECSP_INCHALT_L
04 · VERIFICATION
5 CHECKS · RUN LOCALLY · NO AUDIT CLAIMED

Five checks,
and none of them
is the same check twice.

The arithmetic is checked against the same arithmetic built out of the primitive. The machine is checked against a second interpreter that shares no execution code with it. The encoding is checked by disassembling a word and reassembling the text. Randomised execution is checked for architectural validity at every phase. And the replay property the contract would depend on is checked by running the same program twice.

The fifth exists because a machine that agrees with itself is not evidence. It compares the sequence of state commitments produced by two independently constructed machines running the same program with the same inputs, digit for digit.

No third party has audited anything. Every figure below is produced by code in this page: a full CHECK 01 sweep runs 1,048,576 vectors through the machine and compares each one against the gate level model.

READ THE VERIFICATION
VERIFICATION RUNNER0 PASS · 0 FAIL · 5 NOT RUN
CHECK 01
IDLE

THE ARITHMETIC

Every arithmetic, logic and shift instruction produces the same result and the same four flags as the same operation built out of the primitive.

METHOD
Deterministic vectors are driven through the machine one instruction at a time. The expected value is computed by the gate level model in gates.ts, which composes NAND cells into a ripple carry adder, a logic unit and a four stage barrel shifter.
A PASS DOES NOT ESTABLISH
A sampled sweep covers the operand space it visits. The full sweep is exhaustive over its own vector schedule, not over all 2³² operand pairs.
0VECTORS · OF 4,096

QUICK 4,096 · FULL 1,048,576 VECTORS

CHECK 02
IDLE

AN INDEPENDENT MODEL

A second interpreter, sharing no execution code with the machine, reaches identical architectural state after every retired instruction.

METHOD
Both models execute the reference programs and a set of generated programs. After each retirement the program counter, instruction register, stack pointer, register file, flags and the whole store are compared.
A PASS DOES NOT ESTABLISH
Agreement between two models is not a proof of correctness. It is a proof that a single mistake would have to occur twice, in two different implementations, in the same way.
0RETIREMENTS · OF 20,000

QUICK 20,000 · FULL 400,000 RETIREMENTS

CHECK 03
IDLE

THE SHIPPED PATH

The encoding is canonical and the text path is closed: an instruction word disassembles to text that reassembles to the identical word.

METHOD
Words are constructed across the opcode, destination, source and immediate fields, decoded, disassembled, and passed back through the assembler used by the editor. Reserved bits are checked to reject non canonical words.
A PASS DOES NOT ESTABLISH
This checks the representation, not the semantics. A closed encoding with a wrong opcode assignment would still pass.
0WORDS · OF 8,192

QUICK 8,192 · FULL 131,072 WORDS

CHECK 04
IDLE

LIVENESS

Randomised execution never reaches an undefined architectural state. It either runs, halts, or raises one of the declared faults.

METHOD
Generated programs are executed for a phase budget. Every phase is checked for register width, stack pointer range, program counter range, phase list validity and monotonic cycle count.
A PASS DOES NOT ESTABLISH
Randomised execution samples the state space. It does not enumerate it.
0PHASES · OF 60,000

QUICK 60,000 · FULL 1,200,000 PHASES

CHECK 05
IDLE

THE COMMITMENT

A machine replayed from its program and its inputs produces the identical sequence of state commitments. This is the property the contract requires.

METHOD
A machine is run and its per cycle commitments recorded. A second machine is constructed from the same program and driven with the same inputs, and the two commitment sequences are compared digit for digit.
A PASS DOES NOT ESTABLISH
No contract is deployed. This check verifies the replay property that an on-chain execution would depend on, on this machine, in this browser.
0COMMITMENTS · OF 8,000

QUICK 8,000 · FULL 120,000 COMMITMENTS

05 · FACTORY
STRATA-16 R0 · 6 REFERENCE PROGRAMS

Mint your own
processor.

Every machine is an instance of the STRATA-16 architecture with its own program memory and its own persistent execution state. The architecture is not a parameter: two instances differ only in what is in ROM and how far they have executed.

An instance identity is derived, not allocated. It is a digest of the name and the encoded program, so the same inputs always produce the same machine id, and a genesis commitment is taken from the machine with that program installed at cycle zero.

Records are written to this browser’s local storage. No transaction is sent and no contract is called, because no STRATA contract is deployed.

OPEN THE FACTORY
// FABRICATION INTERFACELOCAL STORAGE · NO CONTRACT
MACHINE NAME
PROGRAM

Reads a word from RAM, adds a constant, writes it back, and repeats. The canonical resident program.

ARCHITECTURESTRATA-16 R0

FIXED · NOT CONFIGURABLE

MEMORY4 KB · 2,048 W

FIXED IN R0

EXECUTION MODE

The clock keeps supplying edges until the program halts or faults.

RECORD PREVIEWDERIVED, NOT WRITTEN
MACHINE ID0x3E5297C5F960FC1A
NAMESTRATA-16 / 001
ARCHITECTURESTRATA-16 R0
ROM2,048 WORDS
RAM4 KB
PROGRAMACCUMULATE
PROGRAM WORDS15
PROGRAM DIGEST4413E4F0D181F802
GENESIS COMMITMENTD8A1F2147D2F8227
EXECUTION MODECONTINUOUS
OWNERUNASSIGNED
PROVENANCELOCAL STORAGE

The identity is a digest of the name and the encoded program, so the same inputs always produce the same machine id. A deployed factory would write this record and the program words to a contract; this one writes them to your browser.

INSTANCES0 IN LOCAL STORAGE
MACHINE IDNAMEPROGRAMWORDSMODECREATED
NO INSTANCES. INITIALIZE ONE ABOVE.
// WALLETDEVELOPMENT
STATUSIDLE
NETWORKNOT CONNECTED
CHAIN ID
ADDRESS
MACHINES OWNED0
EXECUTION BALANCE
INSTANCE0x9C41A7D3…
ARCHITECTURESTRATA-16 R0
LOCAL CYCLE0

No STRATA contract is deployed. Execution balance is undefined because nothing is charged for a transition that happens in your browser.

06 · EXPLORER
INSTANCE 0x9C41A7D3E0… · SIMULATED HISTORY

One row
per block.

A committed transition is a block, an instruction, and the commitment that followed it. The explorer lists them in order and lets you inspect the architectural state at any one of them.

That state is not stored anywhere. It is recomputed by replaying the program from cycle zero to the selected cycle, which is why the commitment is worth keeping: it is the only thing a verifier needs to know the replay arrived at the same place.

Block numbers are those of a simulated instance and are marked as such wherever they appear. The transitions themselves are produced by the machine.

OPEN THE EXPLORER
// COMMITTED TRANSITIONS
INSTANCE 0x9C41A7D3…BLOCK ORIGIN 21,004,310
PROGRAM
CYCLES 124
BLOCKCYCLEPCOPOPERANDSRESULTCOMMITMENT
21,004,31112,482,1870x000LDIR2, #17R2 ← 0x0011E3CA559F33AB8CA7
21,004,31212,482,1880x001LDIR5, #0R5 ← 0x0000366186BAF182A65C
21,004,31312,482,1890x002LDIR1, #0R1 ← 0x00009BD974B7B6A5D135
21,004,31412,482,1900x003STORE[0x020], R1[020] ← 0x00002A26DAC8CF5D1CBA
21,004,31512,482,1910x004LOADR1, [0x020]R1 ← 0x000006D5379822C914B3
21,004,31612,482,1920x005ADDR1, R2R1 ← 0x001137625B2A005E5A49
21,004,31712,482,1930x006STORE[0x020], R1[020] ← 0x00113816D955D8A9E231
21,004,31812,482,1940x007MOVR3, R1R3 ← 0x0011AC9713D0FD2B6B17
21,004,31912,482,1950x008INCR5R5 ← 0x0001164D7806008B14DF
21,004,32012,482,1960x009CMPIR5, #8FLAGS · N · ·5247ECD78A2E6574
21,004,32112,482,1970x00AJNZ0x004PC ← 0x0044E169C58431A432D
21,004,32212,482,1980x004LOADR1, [0x020]R1 ← 0x00116924C6CC0A207842
21,004,32312,482,1990x005ADDR1, R2R1 ← 0x0022F2145DBEDBB17F78
21,004,32412,482,2000x006STORE[0x020], R1[020] ← 0x0022906179B9709B8BE1
21,004,32512,482,2010x007MOVR3, R1R3 ← 0x002279066DDED770002B
21,004,32612,482,2020x008INCR5R5 ← 0x0002FB011B7A64BE755F
21,004,32712,482,2030x009CMPIR5, #8FLAGS · N · ·DDF234DB65EC4A86
21,004,32812,482,2040x00AJNZ0x004PC ← 0x004821B6064D57FB9ED
21,004,32912,482,2050x004LOADR1, [0x020]R1 ← 0x0022D0633D70D6AD8F14
21,004,33012,482,2060x005ADDR1, R2R1 ← 0x0033BBA051503D260B5A
21,004,33112,482,2070x006STORE[0x020], R1[020] ← 0x003321B53B10425FF2C0
21,004,33212,482,2080x007MOVR3, R1R3 ← 0x00335AC0C48515F93CAA
21,004,33312,482,2090x008INCR5R5 ← 0x0003562DB77307881652
21,004,33412,482,2100x009CMPIR5, #8FLAGS · N · ·7FCA345247B72865
STATE AT BLOCKREPLAYED
BLOCK21,004,311
CYCLE12,482,187
INSTRUCTIONLDI R2, #17
PC0x001
IR0x00220011
SP0x0080
HALTEDNO
COMMITMENT

E3CA559F33AB8CA7

REGISTER FILE
R00000
R10000
R20011
R30000
R40000
R50000
R60000
R70000
R80000
R90000
RA0000
RB0000
RC0000
RD0000
RE0000
RF0000

This state was not read from a record. The program was replayed from cycle zero to cycle 1 to produce it, on STRATA-16 R0.

07 · THE INSTRUMENT
32 OPCODES · 2,048 WORDS OF ROM

Write to it.
Step it.

The editor below assembles with the same assembler the reference programs use, and runs on the same machine every other panel on this page is watching. Errors are reported with their line and their reason; a program that assembles will execute.

STEP retires exactly one instruction. RUN supplies edges at the selected rate. RESET returns the machine to cycle zero with a cleared store, which is the only way back: there is no undo, because a state transition is not reversible.

LAUNCH THE APP
// PROGRAM
ASSEMBLED · NOT LOADED
CODE15 LINES · 9 WORDS
36 BYTES
BYTECODEDIGEST 6DDCC5534BB8…
ADDRWORDDISASSEMBLY
0000021002ALDI R1, #42
00100220011LDI R2, #17
00200912000ADD R1, R2
00300501020STORE [0x020], R1
00400330020LOAD R3, [0x020]
0050183003BCMPI R3, #59
00601A00008JMZ 0x008
007002400FFLDI R4, #255
00801F00000HALT
SYMBOLS
done = 0x008 · 1 REF
STATEIDLE
PC0x000
IR0x00000000
SP0x0080
CYCLE12,482,186
FLAGSZNCV
FETCH
DECODE
EXECUTE
WRITEBACK
COMMIT
REGISTER FILE16 × 16 · CYCLE 0
R00000
R10000
R20000
R30000
R40000
R50000
R60000
R70000
R80000
R90000
RA0000
RB0000
RC0000
RD0000
RE0000
RF0000
TRACENEWEST FIRST
#BLOCKPCOPOPERANDSRESULT
NO TRANSITIONS COMMITTED SINCE RESET
NO TRANSITIONS COMMITTED SINCE RESET
NO TRANSITIONS COMMITTED SINCE RESET
08 · THE CLOCK
ONE EDGE PER BLOCK · NO OPERATOR REQUIRED

The clock is
external to
the processor.

A processor does not contain time. It contains a state and a rule for producing the next one, and something outside it decides when that happens. In a package on a desk that something is an oscillator. Here it is the chain: the block supplies the edge, and the machine supplies the step.

The consequence is that block resolution is clock resolution. The machine has no notion of being fast or slow, and no operator needs to keep it running. A halted machine is not offline — it is a machine whose sequencer has stopped and whose state is still readable.

Phases are internal. One instruction retires per edge, and the number of phases inside that instruction depends on what it does: 3 for a transfer that resolves in decode, 5 for one that visits the arithmetic unit and writes back.

BLOCK n+0STEPCYCLE+0BLOCK n+1STEPCYCLE+1BLOCK n+2STEPCYCLE+2BLOCK n+3STEPCYCLE+3BLOCK n+4STEPCYCLE+4BLOCK n+5STEPCYCLE+5THE CLOCK IS EXTERNAL · THE CHAIN SUPPLIES THE EDGE · PHASES ARE INTERNAL
TRANSITIONS PER BLOCK1one committed step
PHASES PER INSTRUCTION3–5derived from control assertions
GATE EVALUATIONS92per instruction, reference model
SIMULATED INSTANCE ORIGIN21,004,310SIMULATION
WHAT THE CONTRACT STORES

The state required to reproduce execution, not a description of it: the register file, the store, the pointer, the flags and the counter. A commitment to that state is enough to detect any divergence.

WHAT THE CONTRACT VERIFIES

That the successor state offered for a block is the one the architecture defines for the current state. An execution is valid only if the resulting architectural state matches the canonical transition.

WHAT NOBODY HAS TO DO

Keep it alive. There is no operator, no keeper and no scheduler. If a block is produced, an edge exists; if no block is produced, the machine is exactly where it was.

10 · ON-CHAIN ARCHITECTURE
TEXT → WORD → TRANSITION → BLOCK

Eight layers
between a program
and a block.

Each layer below consumes a defined representation and produces the next one. No layer infers anything about the layer above it, and none of them can be skipped: text becomes a canonical word, a word becomes a transition, and a transition becomes a commitment that a block carries.

The trace is not an explanation of execution. It is the execution, written down in the order it happened.

  1. 00USERWrites a program in the assembler's syntax. Nothing about the machine is hidden behind a runtime.
  2. 01PROGRAMText. Labels, directives and instructions drawn from the fixed instruction set.
  3. 02ASSEMBLERTwo passes: labels resolve to instruction addresses, then each line encodes into one word.
  4. 03BYTECODECanonical 32-bit words. Reserved bits are zero, unused fields are zero, and there is exactly one encoding per instruction.
  5. 04MACHINEFetch, decode, execute, writeback, commit. The phase list is derived from the decoded instruction.
  6. 05STATE TRANSITIONA defined architectural state in, a deterministic successor out. Nothing is inferred between cycles.
  7. 06CONTRACTHolds the state required to reproduce execution, not a description of it. It verifies the successor and keeps the commitment.
  8. 07BLOCKOne edge. One committed transition. Block resolution is the machine's clock resolution.
09 · THE NAME
STRUCTURE, NOT PROMISE

Why
STRATA.

Names in this field usually describe what a system promises. STRATA names the structure underneath it.

The machine is built in layers. A primitive becomes a gate. Gates become arithmetic. Arithmetic becomes state. State becomes execution. Execution becomes a transition, and a transition committed to a block becomes a machine that nobody has to operate. Each layer is countable in terms of the one beneath it: 3,912 cells and 312 state elements, with nothing between them that has to be taken on trust.

The name describes the construction, not the marketing. It is also a claim that can be checked, which is the only kind of claim this project makes: if a layer cannot be counted in terms of the layer below it, the name is wrong.

THE LAYERSEACH ONE COUNTABLE
EXECUTIONone transition per blockSTATEregisters, store, flagsARITHMETICadder, logic, shifterGATESand, or, xor, muxPRIMITIVEone NAND cell
WHAT THE WORD IS DOING
STRATUM
One layer. In this machine: one class of construct, entirely expressible in the class below it.
STRATA
The layers taken together, in order, with the interfaces between them visible rather than abstracted away.
WHAT IT IS NOT
A metaphor for scale, speed, or a roadmap. Nothing in the name refers to throughput, because throughput is a property of the chain, not of the machine.
THE TEST
Read the datasheet from the bottom. If a figure at any level cannot be derived from the level under it, the name has failed its own claim.