Was ist das Spiel der Validatoren oder 'wie man einen Proof-of-Stake-Blockchain startet'

Ihre Team hat die Alpha-Version Ihrer Blockchain abgeschlossen, und es ist Zeit, das Testnetz zu starten, gefolgt vom Hauptnetz. Sie haben eine echte Blockchain mit unabhängigen Teilnehmern, einem soliden wirtschaftlichen Modell und Sicherheit entwickelt; die Governance ist ebenfalls entworfen. Es ist nun an der Zeit, all dies in der Praxis auszuprobieren. In einer idealen, kryptoanarchistischen Welt würde man den Genesis-Block und den endgültigen Code der Nodes ins Netz stellen, und die Validatoren würden alles eigenständig starten, alle unterstützenden Dienste hochfahren, und alles würde sich von selbst erledigen. Aber dies ist eine erfundene Welt. In der Realität muss das Team eine Menge unterstützender Software und verschiedene Maßnahmen vorbereiten, um den Validatoren beim Start eines stabilen Netzwerks zu helfen. Darum geht es in diesem Artikel.

Der Start von Netzwerken auf Basis von Konsensmechanismen wie „Proof-of-Stake“, bei denen die Validatoren durch Stimmen der Token-Inhaber des Systems bestimmt werden, ist eine ziemlich spezifische Angelegenheit. Selbst der Start traditioneller, zentral gesteuerter Systeme mit Dutzenden und Hunderten von Teilnehmern Server Es ist eine anspruchsvolle Aufgabe, einen Blockchain-Start mit engagierten, aber unabhängigen Teilnehmern zu ermöglichen. Während in einem Unternehmen die Administratoren beim Start völligen Zugriff auf alle Maschinen, Protokolle und das allgemeine Monitoring haben, werden die Validierer niemanden an ihre Server heranlassen. Sie werden wahrscheinlich vorziehen, ihre eigene Infrastruktur aufzubauen, da diese den Zugang zu den wichtigsten Vermögenswerten der Validierer – den Stimmenstacks – kontrolliert. Dieses Verhalten ermöglicht den Aufbau verteilter, sicherer Netzwerke – die Unabhängigkeit der verwendeten Cloud-Anbieter, virtuellen und „Baremetal“-Server sowie unterschiedliche Betriebssysteme machen Angriffe auf ein solches Netzwerk sehr ineffektiv, da eine Vielzahl verschiedener Software genutzt wird. Zum Beispiel verwendet Ethereum zwei Hauptimplementierungen der Nodes, eine in Go und eine in Rust; ein Angriff, der für eine Implementierung wirksam ist, funktioniert nicht für die andere.

Daher müssen alle Prozesse für den Start und Betrieb von Blockchains so organisiert sein, dass jeder Validator oder sogar eine kleine Gruppe von Validatoren jederzeit ihre Computer aus dem Fenster werfen und gehen können, ohne dass dadurch etwas kaputtgeht. Die verbleibenden Validatoren sollten in der Lage sein, weiterhin effizient das Netzwerk zu unterstützen und neue Validatoren anzuschließen. Beim Start des Netzwerks, wenn ein Validator in Europa, der zweite in Südamerika und der dritte in Asien ist, ist es recht schwierig, die koordinierte Zusammenarbeit mehrerer unabhängiger Gruppen zu gewährleisten und ihr Interesse am Ergebnis zu wecken.

Validatoren

Stellen Sie sich den Start eines hypothetischen modernen Blockchain-Projekts vor (der Großteil der beschriebenen Aspekte gilt für Blockchains basierend auf jeder modernen Blockchain-Familie: Ethereum, EOS, Polkadot, Cosmos und andere, die Konsensmechanismen auf Basis von Proof-of-Stake verwenden). Die Hauptakteure solcher Blockchains sind Validatoren-Teams, die eigene unabhängige Server einrichten, um neue Blöcke zu validieren und zu erzeugen und dafür von der jeweiligen Blockchain Belohnungen erhalten, die für die Teilnahme am Konsens vorgesehen sind. Für den Start neuer Netzwerke werden mehrere Dutzend Validatoren benötigt (so viele, dass sie derzeit mehr oder weniger effizient innerhalb von Sekunden Konsens erreichen können). Daher kündigt das Projekt eine Registrierung an, bei der die Validatoren öffentliche Informationen über sich mit den Nutzern teilen, um sie davon zu überzeugen, dass sie beabsichtigen, das gestartete Netzwerk qualitativ hochwertig zu betreuen.

Validatoren sind Unternehmen, die es ermöglichen, das potenzielle Einkommen von Validatoren äußerst präzise zu bewerten, Ressourcen schnell zwischen Projekten zu transferieren und im Falle des Erfolgs des gewählten Netzwerks kann der Validator als vollwertiges Mitglied des DAO und verantwortliche Person das Projekt weiterentwickeln oder einfach einen hervorragenden technischen Service für transparent verdientes Geld anbieten. Bei der Berechnung der Belohnungen für Validatoren versuchen die Projekte, die Kosten der Validatoren zu berücksichtigen und die Blockbelohnung so zu gestalten, dass dieses Geschäft profitabel ist, ohne dass Validatoren die Wirtschaft destabilisieren, indem sie sie mit Geld überfluten und anderen Nutzern des Netzwerks schaden.

Das Betreiben von Validatoren erfordert eine hohe Ausfallsicherheit der Dienste, was wiederum ein hohes Niveau an Kenntnissen bei DevOps und Entwicklern sowie kostspielige Rechenressourcen voraussetzt. Selbst ohne die Notwendigkeit, Hashes in Proof-of-Work-Netzwerken zu minen, ist ein Blockchain-Knoten ein großer Dienst, der viel Speicher benötigt, viel Rechenleistung verbraucht, validiert, Daten auf die Festplatte schreibt und große Datenmengen über das Netzwerk überträgt. Um die Logdateien von Transaktionen und Blockchains mit mehreren tausend kleinen Transaktionen pro Block zu speichern, wird derzeit ein Speicherplatz von mindestens 50 GB und mehr gefordert, und dafür sollte es sich um SSD-Speicher handeln. Die State-Datenbanken von Blockchains, die Smart Contracts unterstützen, können bereits mehr als 64 GB RAM überschreiten. Server mit den erforderlichen Spezifikationen sind recht kostspielig; ein Ethereum- oder EOS-Knoten kann zwischen 100 und 200 $/Monat kosten. Fügen Sie dazu die erhöhten Löhne für die 24/7-Arbeit von Entwicklern und DevOps hinzu, die während der Startphase auch nachts Probleme lösen, da sich einige Validatoren leicht auf der anderen Hemisphäre befinden können. Dennoch kann der Besitz eines Validator-Knotens in den richtigen Momenten signifikante Einnahmen bringen (im Fall von EOS bis zu 10.000 $ pro Tag).

Die Validierung ist nur eine der neuen potenziellen IT-Rollen für Unternehmer und Unternehmen. Mit der Entwicklung immer raffinierterer Algorithmen durch Programmierer, die darauf abzielen, Ehrlichkeit zu belohnen und Betrug sowie Diebstahl zu bestrafen, entstehen Dienste, die wichtige Daten veröffentlichen (Orakel), Überwachungsfunktionen (Slash von Einlagen und Bestrafung von Betrügern durch Veröffentlichung von Betrugsbeweisen), Streitbeilegungs- und Versicherungsgeschäfte sowie Optionen. Sogar die Müllabfuhr ist ein potenziell großer Markt in Smart-Contract-Systemen, wo für die Speicherung von Daten gezahlt werden muss.

Herausforderungen beim Start eines Blockchains

Die Offenheit der Blockchain, die eine Teilnahme am Netzwerk von Computern aus verschiedenen Ländern ermöglicht, und die einfache Anbindung für jeden Script-Kiddie über Anleitungen auf GitHub sind nicht immer Vorteile. Das Streben nach einem neuen Token zwingt Validierer oft dazu, "eine neue Münze zu minen", in der Hoffnung auf einen Kursanstieg und die Möglichkeit, schnell die Gewinne zu realisieren. Außerdem bedeutet dies, dass Ihr Validierer jeder sein kann, auch anonym, und man kann genauso für ihn stimmen wie für andere Validierer (allerdings wird es für einen Anonymen schwierig sein, Stimmen von Stakeholdern zu sammeln, weshalb wir das gruselige Geschichtenerzählen über anonyme Kryptowährungen den Politikern überlassen). Dennoch

Das Projektteam hat die Herausforderung, geeignete Personen in sein Netzwerk zu bringen, die in der Lage sind, einen stabilen Betrieb der Knoten zu gewährleisten, sich mit Sicherheitsfragen auszukkennen, Probleme schnell zu lösen und mit anderen Validatoren zusammenzuarbeiten. Die Qualität des Tokens, in den die Netzwerkmitglieder investieren möchten, hängt stark von diesen Eigenschaften ab. Vernünftige Gründer verstehen bei der Bewertung von Risiken gut, dass beim Start einer Software in diesem Umfang unweigerlich Fehler im Code und in der Konfiguration der Knoten auftreten werden und dass die Stabilität des Netzwerks davon abhängt, wie gut Entwickler und Validatoren gemeinsam solche Probleme lösen können.

Das Team ist bereit, im Mainnet für jede Validatoren zu stimmen, aber es wäre gut zu wissen, für wen. Wer hat das größte Portfolio? Das hat zurzeit fast niemand. Aufgrund der Profile des Teams auf LinkedIn? Erfahrene DevOps- oder Sicherheitsexperten werden keine Profile auf LinkedIn bereitstellen. Anhand von Äußerungen im Chat, Beiträgen und der Unterstützung anderer in der Vorbereitungsphase? Gut, aber subjektiv und ungenau.

In solchen Bedingungen bleibt nur eines – das, was die Probleme aller löst – ein Spiel, in dem man die besten Validatoren auswählen kann. Doch das Wichtigste ist, die Blockchain auf ihre Belastbarkeit zu testen und einen umfassenden Stresstest der Blockchain unter Bedingungen aktiver Nutzung, Änderungen im Konsens sowie dem Auftreten und der Behebung von Fehlern durchzuführen. Diese Vorgehensweise wurde erstmals von den Leuten aus dem Projekt Cosmos als Spiel vorgestellt, und diese Idee ist zweifellos ein hervorragender Weg, um das Netzwerk auf den Start eines zuverlässigen und ausfallsicheren Mainnets vorzubereiten.

Spiel der Validatoren

Ich werde das Validator-Spiel so beschreiben, wie wir es für die DAO.Casino (DAOBet) Blockchain entworfen haben, basierend auf einem Fork von EOS, der Haya heißt und über einen ähnlichen Governance-Mechanismus verfügt – die Validatoren werden durch Abstimmungen von jedem Konto gewählt, wobei ein Teil des Guthabens, das zur Abstimmung für einen Validator verwendet wird, eingefroren wird. Jedes Konto, das das Haupt-Token BET im Guthaben hat, kann mit einem beliebigen Teil seines Guthabens für den gewählten Validator abstimmen. Die Stimmen werden summiert, und am Ende wird eine Liste der besten Validatoren erstellt. In verschiedenen Blockchains wird dieser Prozess unterschiedlich organisiert, und normalerweise unterscheidet sich genau hier die neue Blockchain von der parent Blockchain. Man muss sagen, dass in unserem Fall EOS das „OS“ in seinem Namen vollständig gerechtfertigt, denn wir nutzen tatsächlich EOS als Basis-Betriebssystem zur Bereitstellung einer modifizierten Version der Blockchain für die Aufgaben von DAOBet.

Ich werde spezifische Probleme beschreiben und wie man diese innerhalb des Spiels lösen kann. Stellen wir uns ein Netzwerk vor, in dem dein Server offen angegriffen werden kann. Um die Position eines Validierers zu halten, ist es erforderlich, kontinuierlich mit dem Netzwerk zu interagieren, den eigenen Validierer voranzubringen und sicherzustellen, dass er Blöcke generiert, die rechtzeitig an die anderen Validierer geliefert werden. Andernfalls wird der Validierer aus der Liste entfernt.

Wie wählt man die besten Gewinner aus?

Das wichtigste technische Kriterium für das Spiel ist, dass die Ergebnisse öffentlich überprüfbar sind. Das bedeutet, dass die Ergebnisse des Spiels: die TOP-Gewinner, ausschließlich auf Daten basieren müssen, die von jedem Teilnehmer überprüft werden können. In einem zentralisierten System könnten wir die „Uptime“ jedes Validierers messen und diejenigen belohnen, die am längsten online waren oder den meisten Datenverkehr verarbeitet haben. Es könnten Daten zu CPU- und Speicherauslastung gesammelt werden, um diejenigen zu belohnen, die gut gearbeitet haben. Aber jede solche Datensammlung würde die Existenz eines zentralen Erfassers bedeuten, und auch die Knoten sind unabhängig und können sich verhalten, wie sie wollen, und beliebige Daten senden.

Daher ist die naheliegende Lösung, dass die Gewinner anhand von Daten aus der Blockchain bestimmt werden, da diese zeigt, welcher Validator welchen Block erstellt hat und welche Transaktionen darin enthalten sind. Wir nennen diese Zahl Validator Points (VP), und deren Erwerb ist das Hauptziel der Validatoren im Spiel. In unserem Fall ist die einfachste, öffentlich überprüfbare und effektive Metrik für die "Nützlichkeit" des Validators VP = Anzahl der vom Validator innerhalb eines bestimmten Zeitraums erzeugten Blöcke.

Diese einfache Wahl wird durch die Tatsache bedingt, dass die Governance in EOS bereits viele auftretende Probleme berücksichtigt, da EOS der Nachfolger von drei Generationen funktionierender Blockchains mit umfangreicher Erfahrung in der komplexen Netzwerkverwaltung ist. Praktisch führen alle Probleme eines Validators mit dem Netzwerk, dem Prozessor oder der Festplatte nur zu einem Problem – er signiert weniger Blöcke und erhält eine geringere Bezahlung für seine Arbeit, was uns wieder einfach zur Anzahl der signierten Blöcke führt – für EOS ist dies eine ausgezeichnete und einfache Lösung.

Bei anderen Blockchains kann die Berechnung der Validator-Punkte unterschiedlich sein. Zum Beispiel für pBFT-basierte Konsensmechanismen (Tendermint/Cosmos, Aura-Konsens aus Parity Substrate), wo jeder Block von mehreren Validatoren signiert werden muss, kann es sinnvoll sein, die einzelnen Signaturen der Validatoren zu zählen und nicht die Blöcke. Möglicherweise sollte man auch nicht abgeschlossene Konsensrunden berücksichtigen, die die Ressourcen anderer Validatoren verbrauchen. Insgesamt hängt dies stark vom Konsenstyp ab.

Wie man realistische Betriebsbedingungen simuliert

Die Aufgabe der Gründer besteht darin, Validatoren unter realistischen Bedingungen zu überprüfen, ohne dabei jegliche zentrale Kontrolle zu haben. Dieses Problem kann durch einen Faucet-Vertrag gelöst werden, der gleiche Mengen des Haupttokens an Validatoren und interessierte Nutzer verteilt. Um Tokens auf das Guthaben zu erhalten, muss eine Transaktion erstellt und die Netzwerk bereitgestellt werden, um sie in einen Block aufzunehmen. So ist es für den Validator erforderlich, regelmäßig sein Guthaben mit neuen Tokens aufzufüllen und für sich selbst abzustimmen, um sich im Ranking nach oben zu bewegen. Diese Aktivität erzeugt eine ständige Belastung für das Netzwerk, und die Parameter können so angepasst werden, dass der Anfragefluss ausreichend hoch ist, um einen umfassenden Netzwerktest zu ermöglichen. Planen Sie daher den Faucet-Vertrag im Voraus als wichtiges Instrument zur Netzstart und beginnen Sie, seine Parameter rechtzeitig anzupassen.

Die Anforderung von Tokens über Faucets und die Abstimmung der Validatoren emuliert nicht vollständig die Funktionsweise der Blockchain, insbesondere in stark belasteten Modi. Daher wird das Blockchain-Team letztendlich zusätzliche Benchmarks erstellen müssen, um das Netzwerk zu belasten. Eine besondere Rolle spielen hierbei zuvor speziell erstellte Smart Contracts, die es ermöglichen, einzelne Teilsysteme zu testen. Zur Testung des Speichers speichert der Vertrag zufällige Daten in der Blockchain, und um die Netzwerkressourcen zu überprüfen, benötigt der Testvertrag eine große Menge an Eingabedaten, wodurch das Volumen der Transaktionen aufgebläht wird – indem solche Transaktionen zu beliebigen Zeitpunkten gestartet werden, testet das Team gleichzeitig die Stabilität des Codes und die Robustheit der Validatoren.

Ein separates Thema ist die Aktualisierung des Node-Codes und die Durchführung von Hardforks. Es ist notwendig, dass die Validatoren einen Aktionsplan haben, der bereits im Validatoren-Spiel erprobt wurde, falls ein Fehler, eine Schwachstelle oder ein Komplott böser Validatoren auftritt. Hier könnten Modelle zur Vergabe von VP für die schnelle Implementierung eines Hardforks entwickelt werden, indem zum Beispiel alle Validatoren bestraft werden, die die neue Version des Node-Codes noch nicht installiert haben, doch das ist schwer umzusetzen und kompliziert die Berechnung. Eine Notfallsituation für die Implementierung eines Hardforks kann künstlich simuliert werden, indem die Blockchain an einem bestimmten Block „gebrochen“ wird. Die Produktion von Blöcken stoppt, und letztendlich profitieren diejenige, die früher aktiv werden und mit dem Signieren von Blöcken beginnen, wodurch VP basierend auf der Anzahl der unterschriebenen Blöcke hier gut passt.

Wie die Teilnehmer über den Status des Netzwerks informiert und Fehler behoben werden können

Trotz des Misstrauens zwischen den Validatoren ist es für alle von Vorteil, rechtzeitig aktuelle Informationen über den Zustand des Netzwerks zu erhalten, um schneller Entscheidungen treffen zu können. Daher initiiert das Projektteam einen Service zur Erfassung und Visualisierung verschiedener Metriken von Validator-Servern. Dieser Service ermöglicht es, die Situation der gesamten Netzwerk gleichzeitig zu überblicken und schnell zu erkennen, was geschieht. Es ist auch im Interesse sowohl der Validatoren als auch des Projekts, dass das Team Fehler schnell behebt, weshalb es sinnvoll ist, zusätzlich zur Metrikenerfassung sofort mit dem Sammeln von Log-Daten und Fehlerinformationen von den Validator-Maschinen zu beginnen und diese auf eine Maschine zu übertragen, die für die Blockchain-Entwickler zugänglich ist. Niemand hat ein Interesse daran, Informationen zu verfälschen, weshalb diese Dienste vom Projektteam entwickelt werden und vertrauenswürdig sind. Es ist sinnvoll, systematische Metriken von den Validatoren zu sammeln, insbesondere die wichtigsten Metriken der Blockchain selbst — für DAOBet sind dies die Finalisierungszeit und das Rückstand des zuletzt finalisierten Blocks. Damit hat das Team die Möglichkeit, einen Anstieg des Speicherverbrauchs auf den Knoten während des Benchmarks zu erkennen sowie Probleme einzelner Validatoren.

Wichtige Punkte zur Durchführung des Validator-Spiels

Wie sich herausstellt, wenn Sie den Validatoren offiziell erlauben möchten, sich gegenseitig anzugreifen (inoffiziell können sie das ohnehin tun) – müssen Sie dies separat rechtlich als Sicherheitstest formulieren, da in einigen Ländern das Gesetz Strafen für DDoS- oder Netzwerkangriffe vorsieht. Eine weitere wichtige Frage ist, wie man die Validatoren belohnt. Naheliegende Preise sind die Token des Projekts, die in das Mainnet übertragen werden, aber eine massenhafte Verteilung von Token an jeden, der einen Node starten kann, ist auch keine ideale Lösung. Wahrscheinlich müssen Sie zwischen zwei extremen Optionen abwägen:

Verteilen Sie den gesamten Preisfond entsprechend den Verdiensten in VP
das ist sehr demokratisch und ermöglicht es allen, die Zeit und Ressourcen in das Validator-Spiel investiert haben, etwas zu verdienen
aber zieht zufällige Personen ohne vorbereitete Infrastruktur in das Spiel

Verteilen Sie den Preisfond an die Top-N-Validatoren am Ende des Spiels
Die Gewinner werden wahrscheinlich die Validatoren sein, die während des Spiels am stabilsten geblieben sind und stark auf den Sieg eingestellt sind
Einige Validatoren werden möglicherweise nicht teilnehmen wollen, da sie ihre Gewinnchancen als zu gering einschätzen, insbesondere wenn erfahrene Validatoren unter den Teilnehmern sind.

Welcher Option Sie den Vorzug geben, liegt ganz bei Ihnen.

Es gibt noch einen weiteren Punkt — es ist keineswegs sicher, dass Dutzende von Validatoren auf Ihren Aufruf zur Teilnahme an der Spielrunde reagieren. Und selbst von denen, die es versuchen, werden nicht alle eine Node installieren und starten. In der Regel ist die Dokumentation in dieser Phase der Projekte ziemlich mager, es gibt häufig Fehler, und die Entwickler, die unter Zeitdruck stehen, reagieren nicht immer schnell auf Fragen. Daher sollten Sie vor Spielbeginn auch Maßnahmen einplanen, falls die notwendige Anzahl an Validatoren nicht erreicht wird. In diesem Fall werden die fehlenden Validatoren vom Projektteam beim Start des Spiels aktiviert, nehmen am Konsens teil, können jedoch nicht gewinnen.

Fazit

Abschließend habe ich versucht, eine Liste der Dinge zusammenzustellen, die für eine effektive Durchführung des Validatorenspiels zu bedenken, zu erstellen und zu starten sind.

Was für den Start eines echten Validatorenspiels zu tun ist:
entwickeln Sie Ihre eigene Blockchain 🙂

  • eine Web-Schnittstelle erstellen und einen CLI zur Abstimmung über Validatoren bereitstellen
  • sicherstellen, dass Metriken von einem laufenden Validator-Knoten an einen zentralisierten Dienst (z. B. Prometheus) gesendet werden können
  • einen Metrik-Sammelserver (Prometheus + Grafana) für das Validatorenspiel aufsetzen
  • eine Methode zur Berechnung der Validator Points (VP) entwickeln
  • ein öffentliches Skript erstellen, das die VP eines Validators basierend auf Daten aus der Blockchain berechnet
  • eine Web-Oberfläche zur Anzeige der besten Validatoren und des aktuellen Status des Validatorenspiels (wie viel Zeit bis zum Ende, wer wie viele VP hat usw.) entwickeln
  • den automatisierten Start beliebig vieler eigener Knoten entwickeln und den Prozess der Anbindung von Validatoren an das Spiel gestalten (wann und wie die eigenen Knoten getrennt werden, Stimmen abgeben und zurückziehen)
  • berechnen, wie viele Token ausgegeben werden müssen, und einen Faucet-Vertrag entwickeln
  • ein Benchmark-Skript erstellen (Token-Transfers, massiver Speicherverbrauch, massiver Netzwerkverbrauch)
  • alle Teilnehmer in einem Chat für schnelle Kommunikation zusammenbringen
  • die Blockchain etwas vor dem Spielstart starten
  • auf den Startblock warten, das Spiel beginnen
  • Testen Sie das Netzwerk mit verschiedenen Transaktionstypen
  • Einen Hardfork aufspielen
  • Die Liste der Validierer ändern
  • Punkte 13, 14 und 15 in unterschiedlicher Reihenfolge wiederholen, um die Stabilität des Netzwerks zu gewährleisten
  • Auf den letzten Block warten, das Spiel beenden und VP zählen

Es muss gesagt werden, dass das Spiel der Validierer ein neues Konzept ist und erst ein paar Mal durchgeführt wurde, weshalb Sie diesen Text nicht als vollständige Anleitung betrachten sollten. Es gibt keine Entsprechungen im modernen IT-Business – stellen Sie sich vor, Banken wetteifern darauf, wer vor dem Start des Zahlungssystems die besten Transaktionen für Kunden durchführen kann. Traditionelle Ansätze werden Ihnen kaum dabei helfen, große dezentralisierte Netzwerke zu schaffen. Lernen Sie neue Geschäftsmodelle kennen, organisieren Sie Ihre eigenen Spiele, bestimmen Sie die Geeigneten, belohnen Sie sie, und lassen Sie Ihre verteilten Systeme schnell und stabil arbeiten.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster