Eine Blockchain ist eine manipulationsevidente Art der Datenspeicherung, die es erstmals ermöglicht Vermögenswerte, ohne jegliche Intermediäre zwischen zwei Transaktionspartnern zu übertragen. Hierbei werden Daten in regelmäßigen zeitlichen Abständen (Blockzeit), in einem virtuellen Sammelcontainer (Block) aggregiert und mit dem Vorgängerblock kryptografisch verknüpft. Die Blockchain ist also als eine Art Hauptbuch zu verstehen, mithilfe dessen nachvollzogen werden kann, wer wann welche Daten hinzugefügt, geändert oder gelöscht hat. Wird an irgendeinem Block etwas verändert, ist durch die kryptografische Verknüpfung der Blöcke miteinander in allen Folgeblöcken nachvollziehbar (=evident), dass die Daten verfälscht wurden.
Wir bei MWAY beschäftigen uns verstärkt mit Proof-of-Stake-basierten Blockchains, da sie für uns einen guten Kompromiss zwischen dem Grad der Dezentralisierung und der Performance bieten.
Eines dieser Projekte ist das Cosmos Network. Wie es in Proof-of-Stake-basierten Blockchains üblich ist, wird in Cosmos der Validatorstatus durch den Stake bestimmt, d.h. wie groß der individuelle Wertanteil am Netzwerk ist. Je größer dieser Stake, desto besser wird der Validator für seine Arbeit Blöcke zu generieren belohnt. Zugleich stellt der Stake einen Anreiz für aufrichtiges Verhalten dar, da bei Fehlverhalten Teile dieses Stakes vernichtet (geslasht) werden. Derzeit besteht das Validatorenset aus 125 Validatoren, unter denen auch wir als blockscape vertreten sind.
Darüber hinaus ist es auch Netzwerkteilnehmern die keine Validatoren sind möglich ihre Stakes an beliebig viele Validatoren aus dem Validatorenset zu delegieren, denen sie vertrauen, um ebenso anteilig für die Bereitstellung ihrer Stakes entlohnt zu werden. Bei Fehlverhalten des Validator teilen sich die Delegatoren dann allerdings das Risiko geslasht zu werden.
Der Betrieb eines Validators bringt seine eigenen Herausforderungen mit sich, die es für den sicheren und reibungslosen Betrieb zu meistern gilt, um den Grundstein für gegenseitiges Vertrauen in der Community mit anderen Validatoren und Delegatoren zu legen.
Damit ein gemeinsamer Konsens im Cosmos Network erreicht werden kann, müssen ein paar Grundregeln eingehalten werden:
Eine 2/3-Mehrheit der gesamten Stakes im Validatorset (Voting Power) muss verfügbar/online sein. Fällt nun ein Validator für längere Zeit aus, fehlt dem Netzwerk dementsprechend die Voting Power, die für die Konsenserreichung notwendig ist. Das bedeutet, dass kein Konsens erreicht werden kann, wenn mehr als 1/3 der Voting Power gleichzeitig wegbricht.
Es dürfen keine widersprüchlichen Informationen von Validatoren verbreitet werden, um eine gemeinsame Wahrheit zu wahren. Signiert ein Validator nun mehr als ein Block-Proposal/-Vote für die aktuelle Blockhöhe, forkt er die Blockchain durch zwei miteinander in Konflikt stehenden Informationen - auch bekannt als Double Signing.
Wird eine dieser Regeln verletzt, wird der Stake des Validators teilweise geslasht. Bei wiederholten, schwerwiegenden Vergehen, wird der Validator dann permanent gesperrt (tombstoned).
Neben dem Verwalten des eigenen Stakes ist es ebenfalls wichtig, eine attraktive Option für Delegatoren zu sein. Um seinen Platz im Validatorenset zu festigen, ist es im Interesse eines jeden Validators eine robuste und sichere Infrastruktur aufzustellen. Ein guter Anfang ist es, sich an den Slashing-Konditionen zu orientieren.
Werfen wir zunächst einen Blick auf die Systemverfügbarkeit. Da ein einzelner Validator einen Single Point of Failure darstellt, müssen weiterer redundante Validatoren hinzugenommen werden, um letztendlich einen hochverfügbaren Validator zu schaffen. Jede einzelne Validatorinstanz muss hierbei dieselbe Validatorentität repräsentieren, was im Umkehrschluss bedeutet, dass sie alle Blöcke mit demselben Schlüsselpaar signieren müssen. Da wir alle Validatorinstanzen v.a. aus Gründen der Komplexität und Datensicherung parallel in einem Aktiv/Aktiv-Cluster betreiben, laufen wir nach dem jetzigen Stand zwangsweise Gefahr Double Signing zu begehen.
Um Schutz vor Double Signing zu gewährleisten, braucht es eine Möglichkeit, wie die Validatoren im Aktiv/Aktiv-Cluster untereinander ausmachen können, wer welche Nachrichten für welche Blockhöhe zu signieren und ins Netzwerk zu broadcasten.
In der ersten Iteration haben wir das Problem mithilfe eines Permission Logs auf einem kleinen externen Raft-Cluster gelöst. Dieser Permission Log protokolliert welche Nachrichten bereits von einem der Aktiv/Aktiv-Validatoren signiert wurde. Daraus entsteht zwischen den Validatoren ein Wettbewerb, wer zuerst den Eintrag im Log vornehmen kann, um sich so die Signierrechte für die jeweilige Nachricht zu sichern. Versucht ein Validator sich die Rechte an einer bereits signierten Nachricht zu sichern, wird der Signiervorgang abgebrochen und übersprungen. Dich interessiert, wie das Ganze im Detail funktioniert? In unserem Guide to High Availability for Cosmos Validators gehen wir näher darauf ein.
Die zweite Iteration verschmilzt das Aktiv/Aktiv- mit dem Raft Cluster mithilfe unserer eigens entwickelten Raftify Lösung. So entsteht daraus ein Validatoren-Cluster, das über den Leader Election Algorithmus von Raft einem der Validatoren Signierrechte erteilt, bis dieser ausfällt und ein neuer Ersatz gewählt wird. Einer der Vorteile des Raftify-Ansatzes bestand für uns darin weniger Instanzen im Vergleich zu unserer ersten Iteration betreiben zu müssen. Unser Raftify Mediumartikel bietet einen vollumfänglichen Blick unter die Haube von Raftify.
Unsere dritte und aktuellste Iteration beseitigt den Raft-Layer vollständig, indem die Blockchain an sich als perfektes synchrones Kommunikationsmedium zwischen den Validatoren genutzt wird. Dadurch reduzieren haben wir nicht nur die Zahl der benötigten Instanzen noch weiter reduziert, sondern auch den durch Raft bedingten Kommunikationsoverhead eliminiert. Es funktioniert so, dass ein Validator alle Blöcke signiert, solange er nicht eine bestimmte Anzahl an aufeinanderfolgenden Blöcken verpasst. Ein zweiter Backup-Validator überwacht die in den Blöcken enthaltenen Signaturen und springt als Signer ein, sobald er merkt, dass die eigene Signatur über die vorgegebene Anzahl an aufeinanderfolgenden Blöcken nicht enthalten war. Der ursprüngliche Signer, der nun ersetzt wurde, wird dann beim Synchronisieren seiner Blockchain bemerken, dass er abgelöst wurde, und tritt als Signer ab. Ein Konzeptüberblick ist auf Medium zu finden.
Über die vergangenen Jahre konnten wir viele blockchainbasierte Projekte mitverfolgen und aktiv mitwirken. Dadurch haben wir uns letztlich wertvolles Fachwissen aneignen und viel Erfahrung sammeln können, auf das wir bauen können, um unserem Leitsatz treu zu bleiben, die bestmöglichen Lösungen für unsere Kunden bereitzustellen. Das Themenfeld der Blockchain ist nicht zuletzt aufgrund ihres jungen Alters eine häufig missverstandene Technologie, die in den Medien des Öfteren auch ins schlechte Licht gerückt wird. Wir sind mit großer Leidenschaft an der Vorfront der technischen Entwicklungen und neuen Anwendungsgebieten des Blockchainuniversums, und setzen uns dafür ein die Blockchaintechnologie für Interessierte zugänglicher zu machen und Licht ins Dunkel zu bringen.