Ich dachte, der interessante Teil sei die Empfehlung, jedes GenesisState-Feld zu validieren. Es stellte sich heraus, dass genau das ist, was diese Empfehlung leise über das Netzwerk aussagt – lange bevor überhaupt die erste Transaktion passiert.
Zuerst sah es nach gewöhnlicher defensiver Programmierung aus. Dann verbrachte ich mehr Zeit damit, die Validierungslogik mit dem Umgang mit Checkpoints zu vergleichen und damit, wie Knoten den Zustand aus Genesis neu aufbauen. Das veränderte meine Sicht darauf.
Genesis ist nicht nur der Ausgangspunkt einer Blockchain. Es ist die Referenz, auf die jeder zukünftige Knoten angewiesen ist, wenn er dieselbe Historie rekonstruiert. Wenn ein Feld ohne ordnungsgemäße Validierung durchrutscht, beschränkt sich das Problem nicht auf diesen Moment. Es wird Teil jeder Wiederholung der Chain. Ein Bug, der Genesis überlebt, kann sich viel weiter ausbreiten als ein Bug innerhalb normaler Transaktionsausführung, weil jeder Teilnehmer die gleichen anfänglichen Annahmen übernimmt.
Das wurde noch interessanter, nachdem ich die Security Notes im Zusammenhang mit der Betonung von Checkpoint-Konsistenz und deterministischem State-Rekonstruktionsverhalten gelesen hatte. Babylon investiert viel Aufwand, damit Validatoren aus gemeinsamem Wissen zu identischen Schlussfolgerungen gelangen. Dieses Ziel wird schwieriger, wenn der allererste Zustand Werte enthält, die nie so sorgfältig geprüft wurden wie spätere Updates.
Außerdem fiel mir auf, wie das in das größere Muster im Codebase passt. Das Projekt reduziert fortlaufend Stellen, an denen die Auslegung einzelnen Implementierungen überlassen bleibt. Die Validierung leistet dabei mehr als nur das Zurückweisen ungültiger Daten. Sie reduziert die Anzahl der Entscheidungen, die Operatoren jemals treffen müssen.
Je mehr ich las, desto weniger sah Genesis nach Initialisierung aus. Es begann wie der erste Koordinationsmechanismus auszusehen, auf den das Netzwerk jemals angewiesen ist.#baby $BABY @BabylonLabs_io
Zuerst sah es nach gewöhnlicher defensiver Programmierung aus. Dann verbrachte ich mehr Zeit damit, die Validierungslogik mit dem Umgang mit Checkpoints zu vergleichen und damit, wie Knoten den Zustand aus Genesis neu aufbauen. Das veränderte meine Sicht darauf.
Genesis ist nicht nur der Ausgangspunkt einer Blockchain. Es ist die Referenz, auf die jeder zukünftige Knoten angewiesen ist, wenn er dieselbe Historie rekonstruiert. Wenn ein Feld ohne ordnungsgemäße Validierung durchrutscht, beschränkt sich das Problem nicht auf diesen Moment. Es wird Teil jeder Wiederholung der Chain. Ein Bug, der Genesis überlebt, kann sich viel weiter ausbreiten als ein Bug innerhalb normaler Transaktionsausführung, weil jeder Teilnehmer die gleichen anfänglichen Annahmen übernimmt.
Das wurde noch interessanter, nachdem ich die Security Notes im Zusammenhang mit der Betonung von Checkpoint-Konsistenz und deterministischem State-Rekonstruktionsverhalten gelesen hatte. Babylon investiert viel Aufwand, damit Validatoren aus gemeinsamem Wissen zu identischen Schlussfolgerungen gelangen. Dieses Ziel wird schwieriger, wenn der allererste Zustand Werte enthält, die nie so sorgfältig geprüft wurden wie spätere Updates.
Außerdem fiel mir auf, wie das in das größere Muster im Codebase passt. Das Projekt reduziert fortlaufend Stellen, an denen die Auslegung einzelnen Implementierungen überlassen bleibt. Die Validierung leistet dabei mehr als nur das Zurückweisen ungültiger Daten. Sie reduziert die Anzahl der Entscheidungen, die Operatoren jemals treffen müssen.
Je mehr ich las, desto weniger sah Genesis nach Initialisierung aus. Es begann wie der erste Koordinationsmechanismus auszusehen, auf den das Netzwerk jemals angewiesen ist.#baby $BABY @BabylonLabs_io