Was ist ein Validator-Spiel oder wie wird eine Proof-of-Stake-Blockchain ausgeführt?

Ihr Team hat also die Alpha-Version Ihrer Blockchain fertiggestellt und es ist Zeit, testnet und dann mainnet auszuführen. Sie haben eine echte Blockchain mit unabhängigen Teilnehmern, einem guten Wirtschaftsmodell, Sicherheit, Sie haben Governance entworfen und jetzt ist es Zeit, alles im Geschäft auszuprobieren. In einer idealen kryptanarchischen Welt laden Sie den Genesis-Block in das Netzwerk hoch, der endgültige Code des Knotens und die Validatoren selbst starten alles, erhöhen alle Hilfsdienste und alles geschieht von selbst. Dies ist jedoch eine fiktive Welt, aber in der realen Welt muss das Team eine Menge Hilfssoftware und verschiedene Manipulationen vorbereiten, um Validatoren beim Start eines stabilen Netzwerks zu unterstützen. Über diesen Artikel.


Das Starten von konsensbasierten Netzwerken vom Typ "Proof-of-Stake", bei denen Validatoren durch die Stimmen der Token-Inhaber des Systems bestimmt werden, ist ein ziemlich spezifisches Ereignis, da selbst das Starten traditioneller, zentral verwalteter Systeme mit Dutzenden und Hunderten von Servern an sich keine leichte Aufgabe ist und Blockchain durch Anstrengungen gestartet werden muss treue, aber unabhängige Teilnehmer. Und wenn in einem Unternehmen Administratoren beim Start vollen Zugriff auf alle Computer, Protokolle und allgemeine Überwachung haben, lassen Validatoren niemanden auf ihre Server und ziehen es höchstwahrscheinlich vor, eine eigene Infrastruktur aufzubauen, da sie den Zugriff auf die Hauptressourcen des Validators - Steaks - steuert Abstimmung. Dieses Verhalten ermöglicht es Ihnen, verteilte sichere Netzwerke aufzubauen - die Unabhängigkeit der Cloud-Anbieter, virtueller und Baremetal-Server, verschiedener Betriebssysteme, all dies macht Angriffe auf ein solches Netzwerk äußerst ineffizient - es werden zu viele verschiedene Softwareprogramme verwendet. Beispielsweise verwendet Ethereum zwei Hauptknotenimplementierungen, Go und Rust, und ein für eine Implementierung wirksamer Angriff funktioniert für eine andere nicht.


Daher sollten alle Prozesse zum Starten und Betreiben von Blockchains so organisiert sein, dass jeder Validator oder sogar eine kleine Gruppe von Validatoren ihre Computer jederzeit aus dem Fenster werfen und verlassen kann, während nichts kaputt geht und die verbleibenden Validatoren die Arbeit weiterhin effektiv unterstützen Netzwerk und verbinden Sie neue Validatoren. Wenn das Netzwerk beginnt, wenn ein Validator in Europa, der zweite in Südamerika und der dritte in Asien, ist es ziemlich schwierig, die koordinierte Arbeit mehrerer Dutzend unabhängiger Gruppen zu erreichen und sie als Ergebnis zu interessieren.


Validatoren


Stellen wir uns den Start einer hypothetischen modernen Blockchain vor (die meisten der beschriebenen sind für Blockchains geeignet, die auf einer modernen Familie von Blockchains basieren: Ethereum, EOS, Polkadot, Cosmos und andere, die einen Konsensnachweis liefern. Die Hauptfiguren solcher Blockchains sind Validator-Teams Sie sind an der Installation ihrer eigenen unabhängigen Server beteiligt, validieren und produzieren neue Blöcke und erhalten vom Netzwerk Auszeichnungen für diejenigen, die am Konsens teilnehmen. Zehn Validatoren (wie jetzt mehr oder weniger effizient Konsens in Sekunden erreichen), so kündigt das Projekt, um die Registrierung, in der Validierer die Information der Öffentlichkeit über sich selbst davon zu überzeugen, indem sie Benutzern teilen, dass sie qualitativ hochwertigen Service bieten ausgelöst Netz gehen.


Validierung ist ein Geschäft, mit dem Sie das potenzielle Einkommen des Validators genau einschätzen, Kapazitäten schnell zwischen Projekten übertragen können. Wenn das von ihm ausgewählte Netzwerk erfolgreich ist, kann der Validator das Projekt als vollwertiger DAO-Teilnehmer und verantwortliche Person entwickeln oder einfach einen exzellenten technischen Service für vollständig transparentes, ehrlich verdientes Unternehmen bereitstellen das Geld. Bei der Berechnung der Belohnung für Validatoren versuchen Projekte, die Kosten für Validatoren zu berücksichtigen und eine Belohnung für Blöcke zu erstellen, damit dieses Geschäft rentabel ist. Gleichzeitig würden Validatoren jedoch nicht die Wirtschaft zum Erliegen bringen, indem sie mit Geld gefüllt und den Rest der Netzwerkbenutzer beraubt werden.


Das Geschäft mit Validatoren erfordert die Gewährleistung einer hohen Fehlertoleranz von Diensten, was ein hohes Maß an Schulung von Entwicklern und Entwicklern sowie teure Computerressourcen bedeutet. Auch ohne dass Hashes in Proof-of-Work-Netzwerken abgebaut werden müssen, ist der Blockchain-Knoten ein großer Dienst, der viel Speicher verbraucht, viel Rechenaufwand verbraucht, validiert, auf die Festplatte schreibt und große Datenmengen an das Netzwerk überträgt. Um das Transaktionsprotokoll und die Blockketten für eine Blockchain mit mehreren tausend kleinen Transaktionen in einem Block zu speichern, ist jetzt ein Speicher ab 50 GB erforderlich, und für Blöcke sollte dies eine SSD sein. Statusdatenbank-Blockchains mit Unterstützung für intelligente Verträge können bereits 64 GB RAM überschreiten. Server mit den erforderlichen Eigenschaften sind recht teuer. Ein Ethereum- oder EOS-Knoten kann zwischen 100 und 200 US-Dollar pro Monat kosten. Hinzu kommt die erhöhte Vergütung für die Arbeit von Entwicklern und Entwicklern, die während der Startphase auch nachts Probleme lösen, da sich einige der Validatoren leicht auf der anderen Hemisphäre befinden können. In guten Zeiten kann der Besitz eines Validator-Knotens jedoch zu erheblichen Einnahmen führen (bis zu 10.000 USD pro Tag für EOS).


Die Validierung ist nur eine der neuen potenziellen IT-Rollen für Unternehmer und Unternehmen. Da Programmierer ausgefeiltere Algorithmen entwickeln, mit denen Ehrlichkeit belohnt und Täuschung und Diebstahl bestraft werden können, erscheinen Dienste, die die Funktionen der Veröffentlichung wichtiger Daten (Orakel) erfüllen, die die Überwachung durchführen (Einzahlungen reduzieren) und Bestrafung von Betrügern durch Veröffentlichung von Betrugsnachweisen), Streitbeilegungsdiensten, Versicherungs- und Optionsdiensten, selbst die Müllabfuhr ist ein potenziell großer Markt für intelligente Vertragssysteme, in denen es keinen gibt Es ist notwendig, für die Datenspeicherung zu bezahlen.


Probleme beim Starten der Blockchain


Die Offenheit der Blockchain, die es ermöglichte, frei an der Arbeit eines Computernetzwerks aus jedem Land teilzunehmen, und die einfache Verbindung eines Skriptkindes mit dem Netzwerk gemäß den Anweisungen auf GitHub, ist nicht immer von Vorteil. Das Streben nach einem neuen Token zwingt Validatoren häufig dazu, „zu Beginn eine neue Münze abzubauen“, in der Hoffnung auf eine Wertschätzung und die Fähigkeit, schnell zu verlieren, was sie verdient haben. Dies bedeutet auch, dass jeder Ihr Validator sein kann, auch ein anonymer, Sie können sowohl für ihn als auch für andere Validatoren stimmen (obwohl es für eine anonyme Person schwierig sein wird, die Stimmen der Stakeholder für sich selbst zu sammeln, überlassen wir die schrecklichen Geschichten über anonyme Kryptowährungen den Politikern). . Dennoch


Das Projektteam hat die Aufgabe, diejenigen, die in Zukunft einen stabilen Betrieb der Knoten sicherstellen, die Sicherheit verstehen, Probleme schnell lösen, mit anderen Validatoren zusammenarbeiten und zusammenarbeiten können, irgendwie in ihr Netzwerk zu bringen. Die Qualität hängt vollständig von diesen Eigenschaften ab das Token selbst, in das die Netzwerkteilnehmer ihre Zeit und Ressourcen investieren wollten. Angemessene Gründer, die die Risiken einschätzen, sind sich bewusst, dass beim Starten von Software eines solchen Volumens definitiv Fehler im Code und in der Konfiguration der Knoten auftreten müssen und dass die Stabilität des Netzwerks davon abhängt, wie gut Entwickler und Validatoren solche Probleme gemeinsam lösen.


Das Team ist bereit, im Mainnet für alle Validatoren zu stimmen, nur um zu wissen, welche gut sind? Das größte Portfolio? Fast niemand hat es jetzt. Nach Teamprofilen auf Linkedin? Erfahrene Entwickler oder Sicherheitsleute geben Ihnen auf Linkedin keine Profile. Nach den Aussagen im Chat, Beiträge und Hilfe für andere in der Vorbereitungsphase? Gut, aber subjektiv und ungenau.


Unter solchen Umständen bleibt eine Sache - die die Probleme aller gut löst - ein Spiel, in dem Sie die besten Validatoren auswählen können. Die Hauptsache ist jedoch, die Blockchain auf Stärke zu überprüfen und einen vollständigen Kampftest der Blockchain unter Bedingungen des aktiven Gebrauchs, Änderungen des Konsenses, des Aussehens und der Korrektur von Fehlern durchzuführen . Zum ersten Mal wurde dieses Verfahren von den Jungs aus dem Cosmos-Projekt als Spiel vorgestellt, und diese Idee ist zweifellos eine hervorragende Möglichkeit, das Netzwerk auf den Start eines zuverlässigen und fehlertoleranten Mainnets vorzubereiten


Spiel der Prüfer


Ich werde das Spiel der Validatoren beschreiben, wie wir es für die DAO.Casino (DAOBet) -Blockchain entworfen haben, die auf der EOS-Gabel basiert, die Haya heißt und über einen engen Governance-Mechanismus verfügt. Validatoren werden durch Abstimmung von jedem Konto ausgewählt, in dem ein Teil des Guthabens, der für den Validator stimmt, eingefroren ist. Jedes Konto mit dem Haupt-BET-Token auf dem Guthaben kann für einen beliebigen Teil seines Guthabens für den ausgewählten Prüfer stimmen. Die Stimmen werden zusammengefasst und die Top-Validatoren werden basierend auf den Ergebnissen gebildet. In verschiedenen Blockchains ist dieser Prozess auf unterschiedliche Weise organisiert, und normalerweise unterscheidet sich die neue Blockchain in diesem Teil von der übergeordneten, und ich muss sagen, dass EOS in unserem Fall "OS" in seinem Namen vollständig rechtfertigt, wir verwenden EOS wirklich als Basisbetriebssystem für Bereitstellen einer geänderten Version der Blockchain für DAOBet-Aufgaben.


Ich werde einzelne Probleme beschreiben und wie sie im Rahmen des Spiels gelöst werden können. Stellen Sie sich ein Netzwerk vor, in dem Ihr Server offen angreifen kann. Um die Position des Validators beizubehalten, müssen Sie kontinuierlich mit dem Netzwerk interagieren, Ihren Validator fördern und sicherstellen, dass er Blöcke erzeugt und diese rechtzeitig an die anderen Validatoren übermittelt werden. Andernfalls wird der Validator von der Liste gestrichen.


Wie wähle ich Top-Gewinner aus?


Die wichtigste technische Voraussetzung für das Spiel ist, dass die Ergebnisse öffentlich überprüft werden. Dies bedeutet, dass die Ergebnisse des Spiels: TOP-Gewinner ausschließlich auf der Grundlage von Daten gebildet werden müssen, die jeder Teilnehmer überprüfen kann. In einem zentralisierten System könnten wir die „Verfügbarkeit“ jedes Validators messen und diejenigen belohnen, die mehr online waren oder ein Maximum an Netzwerkverkehr durchgelassen haben. Sie können Daten zur CPU-Auslastung und zum Arbeitsspeicher sammeln und diejenigen belohnen, die mit Würde gearbeitet haben. Eine solche Erfassung von Metriken bedeutet jedoch die Existenz eines Erfassungszentrums, und die Knoten sind alle unabhängig und können sich so verhalten, wie sie möchten, und beliebige Daten senden.


Daher besteht die natürliche Lösung darin, dass die Gewinner anhand der Daten aus der Blockchain ermittelt werden sollten, da damit ermittelt werden kann, welcher der Validatoren welchen Block produziert und welche Transaktionen darin enthalten waren. Wir haben diese Nummer Validator Points (VP) genannt, und das Sammeln dieser Punkte ist das Hauptziel der Validatoren im Spiel. In unserem Fall ist VP = die Anzahl der vom Validator für einen bestimmten Zeitraum erzeugten Blöcke die einfachste, am leichtesten öffentlich überprüfbare und effektivste Metrik für die „Nützlichkeit“ des Validators.


Eine so einfache Wahl ist auf die Tatsache zurückzuführen, dass die Governance in EOS bereits viele auftretende Probleme verursacht, da EOS der Nachfolger von drei Generationen wirklich funktionierender Blockchains mit umfassender Erfahrung im komplexen Netzwerkmanagement ist und fast alle Validierungsprobleme mit einem Netzwerk, einem Prozessor oder einer Festplatte nur zu einem führen Das Problem - er signiert weniger Blöcke, erhält weniger Lohn für die Arbeit, was uns wiederum einfach zur Anzahl der zu signierenden Blöcke führt - für EOS ist dies eine großartige und einfache Option.


Bei anderen Blockchains kann sich die Methode zur Berechnung der Validatorpunkte unterscheiden, z. B. beim pBFT-basierten Konsens (Tendermint / Cosmos, Aura-Konsens von Parity Substrate), bei dem jeder Block von vielen Validatoren signiert werden muss. Es ist sinnvoll, einzelne Validator-Signaturen zu lesen, nicht Blöcke. Es könnte sinnvoll sein, die unvollständigen Konsensrunden zu berücksichtigen, die die Ressourcen anderer Validatoren verbrauchen. Im Allgemeinen hängt dies stark von der Art des Konsenses ab.


So simulieren Sie reale Betriebsbedingungen


Die Aufgabe der Gründer besteht darin, die Validatoren unter realitätsnahen Bedingungen zu überprüfen, ohne eine zentrale Kontrolle zu haben. Dieses Problem kann mit Hilfe eines Vertragshahns gelöst werden, der gleiche Mengen des Haupttokens an Prüfer und alle verteilt. Um Token auf den Kontostand zu bringen, müssen Sie eine Transaktion erstellen und sicherstellen, dass das Netzwerk sie in den Block einbezieht. Um zu gewinnen, muss der Validator sein Gleichgewicht ständig mit neuen Token auffüllen und für sich selbst stimmen, um sich an der Spitze zu behaupten. Diese Aktivität führt zu einer konstanten Belastung des Netzwerks, und die Parameter können so ausgewählt werden, dass der Anforderungsfluss für einen vollständigen Netzwerktest ernst genug ist. Planen Sie daher den Vertragshahn als wichtiges Instrument zum Starten des Netzwerks im Voraus und beginnen Sie mit der Auswahl seiner Parameter im Voraus.


Die Forderung nach Token mit Wasserhahn und die Abstimmung der Prüfer ahmen die Arbeit des Gefechtskopfes immer noch nicht ehrlich nach, insbesondere in extrem belasteten Modi. Daher muss das Blockchain-Team ohnehin noch zusätzliche Benchmarks schreiben, um das Netzwerk zu laden. Eine besondere Rolle spielen dabei im Voraus speziell erstellte Smart Contracts, mit denen ein separates Subsystem getestet werden kann. Für Speichertests speichert der Vertrag zufällige Daten in der Blockchain, und für die Überprüfung der Netzwerkressourcen benötigt der Testvertrag eine große Menge an Eingabedaten, wodurch das Transaktionsvolumen erhöht wird. Durch Starten eines Stroms solcher Transaktionen zu beliebigen Zeitpunkten testet das Team gleichzeitig die Codestabilität und die Validatorvalidität.


Ein separates Problem ist das Aktualisieren des Knotencodes und das Durchführen von Hard Forks. Es ist erforderlich, dass im Falle eines Fehlers, einer Sicherheitslücke oder einer Absprache mit böswilligen Prüfern die Prüfer über einen Aktionsplan verfügen, der bereits im Spiel der Prüfer entwickelt wurde. Hier können Sie VP-Abgrenzungsschemata für die schnelle Verwendung von Hard Fork erstellen, z. B. für alle Prüfer, die noch keine neue Version des Knotencodes aufgerollt haben. Dies ist jedoch schwierig zu implementieren und erschwert die Berechnung. Sie können eine Notsituation mit einer harten Gabel simulieren, in der die Blockchain eines bestimmten Blocks künstlich „gebrochen“ wird. Die Blockproduktion wird gestoppt, und daher profitieren diejenigen, die sich früher einschalten und mit dem Signieren von Blöcken beginnen. Daher ist VP, basierend auf der Anzahl der signierten Blöcke, hier gut geeignet.


So informieren Sie die Teilnehmer über den Netzwerkstatus und Reparaturfehler


Trotz des Misstrauens zwischen den Validatoren ist es für alle von Vorteil, rechtzeitig Informationen über den Netzwerkstatus zu erhalten, um Entscheidungen schneller treffen zu können. Daher bietet das Projektteam einen Service zum Sammeln und Visualisieren vieler Metriken von Validator-Servern an, mit dem Sie die Situation für das gesamte Netzwerk gleichzeitig anzeigen und schnell feststellen können, was passiert los. Sowohl für die Validatoren als auch für das Projekt ist es auch von Vorteil, dass das Projektteam die gefundenen Fehler schnell korrigiert. Daher ist es neben der Erfassung von Metriken sinnvoll, sofort mit der Erfassung von Protokollen und Fehlerdaten von den Validierungsmaschinen auf einer Maschine zu beginnen, auf die Blockchain-Entwickler zugreifen können. Es ist für niemanden von Vorteil, Informationen zu verfälschen. Daher werden diese Dienste vom Projektteam bereitgestellt und können als vertrauenswürdig eingestuft werden. Es ist sinnvoll, Systemmetriken von Validatoren und notwendigerweise die wichtigsten Metriken der Blockchain selbst zu erfassen. Für DAOBet ist dies der Zeitpunkt der Finalisierung und die Verzögerung des letzten finalisierten Blocks. Dank dessen sieht das Team einen Anstieg des Speicherverbrauchs auf Knoten beim Starten des Benchmarks, Probleme einzelner Validatoren


Wichtige Punkte für die Durchführung eines Validator-Spiels


Wie sich herausstellte, müssen Sie, wenn Sie Validatoren offiziell erlauben möchten, die Computer des anderen anzugreifen (sie können dies inoffiziell tun), dies separat separat als Sicherheitstest formulieren, da sie gemäß den Gesetzen einiger Länder DDoS- oder Netzwerkangriffe bestrafen können. Ein weiteres wichtiges Thema ist die Belohnung von Validatoren. Natürliche Preise sind Projekt-Token, die an das Mainnet übertragen werden. Eine massive Verteilung von Token an alle, die den Knoten starten konnten, ist jedoch auch nicht die beste Option. Höchstwahrscheinlich müssen Sie zwischen den beiden extremen Optionen abwägen:


  • Verteilen Sie den gesamten Preispool gemäß dem verdienten VP


    • Es ist sehr demokratisch und ermöglicht es jedem, der Zeit und Ressourcen in das Spiel der Validatoren investiert hat, Geld zu verdienen
    • zieht aber zufällige Leute ohne vorbereitete Infrastruktur zum Spiel an

  • Verteilen Sie den Top-N-Preispool entsprechend den Ergebnissen des Spiels an die Prüfer


    • Die Gewinner werden höchstwahrscheinlich die Validatoren sein, die während des Spiels am stabilsten sind und sehr streng konfiguriert sind, um zu gewinnen
    • Einige der Validatoren werden nicht teilnehmen wollen, da sie ihre Gewinnchancen nur wenig schätzen, insbesondere wenn die Teilnehmer ehrwürdige Validatoren sind


Welche Option Sie bevorzugen, liegt bei Ihnen


Es gibt noch einen weiteren Punkt: Es ist keineswegs eine Tatsache, dass Dutzende von Prüfern sich beeilen, bei Ihrem Anruf am Spiel teilzunehmen, und diejenigen, die sich entschließen, nicht einmal zu versuchen, den Knoten zu installieren und zu starten. In der Regel weisen die Projekte zu diesem Zeitpunkt eine eher schlechte Dokumentation auf. und Entwickler, die in Zeitnot arbeiten, beantworten Fragen nicht zu schnell. Daher ist es vor dem Start des Spiels auch erforderlich, Aktionen vorauszusehen, wenn die Anzahl der Validatoren nicht benötigt wird. In diesem Fall werden zu Beginn des Spiels die fehlenden Validatoren vom Projektteam gestartet, nehmen am Konsens teil, können jedoch keine Gewinner sein.


Fazit


Abschließend habe ich versucht, aus dem Obigen eine Liste der Dinge zu sammeln, die Sie für ein effektives Validierungsspiel benötigen, erstellen und ausführen müssen


Was Sie tun müssen, um ein Validator-Spiel auszuführen:
Entwickle deine Blockchain :)


  • Erstellen und Erhöhen einer Webschnittstelle und Bereitstellen einer CLI für die Abstimmung für Validatoren
  • Stellen Sie sicher, dass Metriken vom laufenden Validierungsknoten an einen zentralen Dienst (z. B. Prometheus) gesendet werden können.
  • Erhöhen Sie den Metrics Collection Server (Prometheus + Grafana) für das Validators-Spiel
  • Finden Sie heraus, wie Validator Points (VP) berechnet werden
  • Entwickeln Sie ein öffentliches Skript, das den Validator VP basierend auf Daten aus der Blockchain berechnet
  • Entwicklung einer Weboberfläche zur Anzeige der Top-Validatoren und des Status des Validators-Spiels (wie viel Zeit bleibt bis zum Ende, wer hat wie viele VP usw.)
  • Entwickeln und automatisieren Sie den Start einer beliebigen Anzahl eigener Knoten, entwerfen Sie den Prozess zum Verbinden von Validatoren mit dem Spiel (wann und wie Sie Ihre Knoten deaktivieren, Stimmen für sie einreichen und entfernen)
  • Berechnen Sie, wie viele Token ausgegeben werden müssen, und entwickeln Sie einen Vertragshahn
  • Erstellen Sie ein Benchmark-Skript (Token-Übertragungen, massive Speichernutzung, massive Netzwerknutzung).
  • ,
  • .13,14,15 ,
  • , , VP

, — , , , . IT — , , . , , , , .

Source: https://habr.com/ru/post/de473174/


All Articles