Konsensspezifikationen für den Ethereum-Proof-of-Stake
Weitere Informationen zu Proof-of-Stake und Sharding finden Sie in der PoS-Dokumentation, der Sharding-Dokumentation und im Forschungskompendium.
Dieses Repository beherbergt die aktuellen Proof-of-Stake-Spezifikationen von Ethereum. Diskussionen über Designgründe und vorgeschlagene Änderungen können als Themen angesprochen und diskutiert werden. Konsolidierte, vereinbarte Änderungen an der Spezifikation können über Pull-Requests vorgenommen werden.
Spezifikationen
Die wichtigsten Spezifikationen für Ethereum-Proof-of-Stake-Clients finden Sie in den Spezifikationen. Diese sind in Features unterteilt. Funktionen werden parallel erforscht und entwickelt und dann, wenn sie bereit sind, in sequenziellen Upgrades konsolidiert.
Stabile Spezifikationen
Seq. | Codename | Gabel-Epoche | Spezifikationen |
---|
0 | Phase0 | 0 | - Kern
- Die Leuchtfeuerkette
- Einzahlungsvertrag
- Wahl der Beacon-Kettengabel
- Ergänzungen
- Ehrlicher Validator-Leitfaden
- P2P-Netzwerke
- Schwache Subjektivität
|
1 | Altair | 74240 | - Kern
- Änderungen der Beacon-Kette
- Altair-Gabel
- Ergänzungen
- Light-Client-Synchronisierungsprotokoll (vollständiger Knoten, Light-Client, Netzwerk)
- Ehrliche Änderungen im Validator-Leitfaden
- P2P-Netzwerke
|
2 | Bellatrix („Die Fusion“) | 144896 | - Kern
- Änderungen der Beacon-Kette
- Bellatrix-Gabel
- Änderungen bei der Gabelauswahl
- Ergänzungen
- Ehrliche Änderungen im Validator-Leitfaden
- P2P-Netzwerke
|
3 | Capella | 194048 | - Kern
- Änderungen der Beacon-Kette
- Capella-Gabel
- Ergänzungen
- Leichte Änderungen am Client-Synchronisierungsprotokoll (Fork, Full Node, Netzwerk)
- Validator-Ergänzungen
- P2P-Netzwerke
|
4 | Deneb | 269568 | - Kern
- Änderungen der Beacon-Kette
- Deneb-Gabel
- Polynomverpflichtungen
- Änderungen bei der Gabelauswahl
- Ergänzungen
- Leichte Änderungen am Client-Synchronisierungsprotokoll (Fork, Full Node, Netzwerk)
- Ehrliche Änderungen im Validator-Leitfaden
- P2P-Netzwerke
|
In der Entwicklung befindliche Spezifikationen
Seq. | Codename | Gabel-Epoche | Spezifikationen |
---|
5 | Elektra | Noch offen | - Kern
- Änderungen der Beacon-Kette
- Electra-Gabel
- Ergänzungen
- Leichte Änderungen am Client-Synchronisierungsprotokoll (Fork, Netzwerk)
- Ehrliche Änderungen im Validator-Leitfaden
- P2P-Netzwerke
|
Veraltete Spezifikationen
Codename oder Thema | Spezifikationen | Notizen |
---|
Scherben | - Kern
- Änderungen der Beacon-Kette
- Ergänzungen
| |
Sorgerechtsspiel | - Kern
- Änderungen der Beacon-Kette
- Ergänzungen
- Ehrliche Änderungen im Validator-Leitfaden
| Abhängig vom Sharding |
Datenverfügbarkeitsstichprobe | - Kern
- Kerntypen und Funktionen
- Änderungen bei der Gabelauswahl
- Ergänzungen
- P2P-Netzwerk
- Probenahmeprozess
| - Abhängig vom Sharding
- Technischer Erklärer
|
Begleitdokumente finden Sie in den Spezifikationen und umfassen:
- SimpleSerialize (SSZ)-Spezifikation
- Merkle-Proof-Formate
- Allgemeines Testformat
Zusätzliche Spezifikationen für Client-Implementierer
Zusätzliche Spezifikationen und Standards außerhalb der erforderlichen Client-Funktionalität finden Sie in den folgenden Repos:
- Beacon-APIs
- Engine-APIs
- Beacon-Metriken
Designziele
Im Folgenden sind die allgemeinen Entwurfsziele für die Proof-of-Stake-Konsensspezifikationen von Ethereum aufgeführt:
- um die Komplexität zu minimieren, auch auf Kosten gewisser Effizienzverluste
- um auch bei größeren Netzwerkpartitionen und wenn sehr große Teile der Knoten offline gehen, aktiv zu bleiben
- alle Komponenten so auszuwählen, dass sie entweder quantensicher sind oder bei Verfügbarkeit problemlos gegen quantensichere Gegenstücke ausgetauscht werden können
- Krypto- und Designtechniken zu nutzen, die eine große Beteiligung von Validatoren insgesamt und pro Zeiteinheit ermöglichen
- um einem typischen Consumer-Laptop mit
O(C)
-Ressourcen die Verarbeitung/Validierung von O(1)
-Shards zu ermöglichen (einschließlich jeglicher Validierung auf Systemebene wie der Beacon-Kette)
Nützliche externe Ressourcen
- Design-Rationale
- Onboarding-Dokument der Phase 0
- Kombination von GHOST- und Casper-Papier
Für Spec-Mitwirkende
Dokumentation zu den verschiedenen Komponenten, die beim Schreiben von Spezifikationen verwendet werden, finden Sie hier:
- YAML-Testgeneratoren
- Ausführbare Python-Spezifikation mit Py-Tests
Online-Viewer der neuesten Version (neuester master
Zweig)
Ethereum-Konsensspezifikationen
Konsensspezifikationstests
Konformitätstests, die aus der ausführbaren Python-Spezifikation erstellt wurden, sind im Repo „Ethereum Proof-of-Stake Consensus Spec Tests“ verfügbar. Komprimierte Tarballs sind in Releases verfügbar.
Installation und Nutzung
Das Consensus-Specs-Repo kann verwendet werden, indem die Tests lokal oder in einem Docker-Container ausgeführt werden.
So führen Sie die Tests lokal aus:
- Klonen Sie das Repository mit
git clone https://github.com/ethereum/consensus-specs.git
- Wechseln Sie in das Verzeichnis
cd consensus-specs
- Installieren Sie die Abhängigkeiten mit:
make install_test && make preinstallation && make pyspec
- Führen Sie die Tests mit
make citest
aus
So führen Sie die Tests in einem Docker-Container aus:
- Wechseln Sie in das Verzeichnis mit
cd scripts
- Führen Sie das Skript
./build_run_docker_tests.sh
aus - Suchen Sie die Ergebnisse in einem Ordner namens
./testResults
- Weitere Möglichkeiten zum Anpassen des Skripts finden Sie mit
./build_run_docker_tests.sh --h