Tre rappresentazioni
Stato del motoremercati · conti · posizioni · book · stanza di compensazionedura tra i blocchi · una ricostruzione
Working set del bloccoprezzi mark · conti toccati · esecuzioni · outputdura un solo blocco · un giornale
Stato della catenachiave-valore versionato, autenticato da Merklefa fede
Il guasto che previeneUn motore la cui vista in memoria si è discostata da ciò che è stato consolidato continua a servire risposte, e ognuna è sbagliata in un modo che salta fuori solo al regolamento.
lo stato del motore deve essere derivabile dal registro consolidato, mai il contrario
Chiavi
Lo stato della catena è indirizzato per chiave. Lo stato di negoziazione è raggruppato in namespace con un nome e una versione esplicita: per esempio la configurazione delle commissioni, l’indice dei contratti perpetui, la tabella dei livelli di leva, l’elenco dei ruoli amministrativi. Il suffisso di versione non è un ornamento. Quando cambia la forma di una configurazione, questa passa a una nuova versione della propria chiave, e la chiave precedente viene conservata perché lo stato scritto con il vecchio schema resti leggibile durante la migrazione. Un lettore che cabla nel codice una versione e non ricontrolla mai leggerà in silenzio una configurazione superata dopo una migrazione; un lettore che risolve la chiave corrente no.Per questo la configurazione va letta dalla catena e non fissata nel codice del client. Il servizio dei livelli commissionali rilegge a ogni ciclo la configurazione delle commissioni in vigore esattamente per questo motivo: una tabella dei livelli cablata dentro un client è una tabella che prima o poi non coinciderà con quella che la rete applica.
Versioni
Ogni blocco consolidato fa avanzare una versione. I valori di stato sono memorizzati insieme alla versione in cui sono stati scritti: l’archivio non è soltanto «lo stato corrente», ma «lo stato a qualsiasi versione». È questa proprietà a rendere possibili più cose insieme:- Le prove possono essere prodotte contro una versione specifica e non solo contro il presente.
- Il replay può partire da qualsiasi versione, non solo dal genesis.
- Le letture possono essere storiche: un indexer che ricostruisce la storia di una posizione chiede versioni vecchie, non scorre un log.
- Il pruning diventa una decisione di policy su quanto indietro conservare, invece di un limite strutturale.
Che cosa finisce consolidato
L’esecuzione del kernel produce due cose per blocco. Ogni transazione porta con sé scritture ed eventi propri, che le restano legati. Gli effetti che non appartengono a nessuna singola transazione utente — flussi di funding, movimenti del fondo assicurativo, contatori a livello di blocco — vanno su un canale di sistema dedicato. Fra i due non si perde nulla. Non esiste un effetto di esecuzione dentro il kernel che manchi sia dall’output di una transazione sia dal canale di sistema. È questa completezza a permettere di trattare il registro consolidato come la storia intera e non come un suo riassunto, ed è la ragione per cui un evento può essere ricondotto alla transazione che lo ha causato anche quando il matching è stato eseguito a lotti.Dove proseguire
Archiviazione e prove
Come lo stato consolidato è archiviato fisicamente, autenticato e sottoposto a pruning.
Sincronizzazione dello stato
Come un nodo che non ha mai visto la catena riesce a mettersi in pari.
IntentionKernel
Dove risiedono lo stato del motore e il working set del blocco.
Indexer
Trasformare lo stato consolidato in qualcosa di interrogabile.