Ich mag die Geschwindigkeit der Entwicklung und die hervorragende Portabilität. Es ist sehr gut, ein sofort einsatzbereites Werkzeug zur Lösung von Aufgaben immer griffbereit zu haben.
Es war ziemlich enttäuschend, als ich mit der lokalen Blockchain in ihrem Arsenal kein fertiges SDK für PHP fand. Nun, ich musste es selbst schreiben.
Zunächst musste ich verwenden um Transaktionen zu signieren. Um drei Adressen zu verwalten, musste ich drei Knoten starten... Das war ein armseliger Anblick, obwohl es einige Aufgaben erledigte. Bis ich verstand, dass es ein Fehler ist, sich auf Knoten zu verlassen. Erstens aufgrund der eingeschränkten Funktionalität , zweitens wegen der Geschwindigkeit (zu jener Zeit waren die Knoten sehr langsam).
Ich nahm zwei parallele Projekte in Angriff. Eins – einen Blockchain-Explorer zu erstellen, der schnell und völlig unabhängig von der API der Knoten ist. Das andere – alle Funktionen zur Arbeit mit der Waves Platform an einem Ort zu vereinen. So entstanden die Projekte и .
Der erste Schritt hinter die Kulissen der Waves Blockchain war der . Es war nicht einfach, aber es gelang mir, eine unabhängige Berechnung aller Salden zu schreiben und sogar einen Fehler in den Berechnungen auf den Originalknoten zu finden ( Übrigens funktioniert es bei ihnen, sie bezahlen für gefundene Fehler). Sie können die Funktionen des Browsers w8io in diesem Thema genauer studieren:
Während der Arbeit an w8io hatte ich bereits Zweifel, aber als die Arbeit logiched zu Ende ging und ich mit der Erstellung des SDK begann, bestätigten sich die Zweifel. Ich konnte einige Funktionen, darunter die wichtigsten, kryptographischen Funktionen, nirgendwo finden. Also begann ich mit der Erstellung meiner eigenen Bausteine für das Fundament. So entstanden: zum Codieren in base58 (eigentlich zum Codieren eines beliebigen Alphabets in jede Form), zum Erstellen und Überprüfen kompatibler Signaturen (mit Varianten ), zum Berechnen eines der Hashes (der erst ab PHP 7.2 verfügbar war) usw.
Hier möchte ich für einige wertvolle Ratschläge danken, die mich in Richtung statt der mir vertrauten, aber veralteten Include-Dateien, geleitet haben.
Nach ein paar Monaten , trat aus und ist nun bereit, mit allen Standardfunktionen der Waves-Plattform zu arbeiten. Alle verfügbaren in Transaktionen können einfach erstellt, signiert und von einer einzigen Bibliothek gesendet werden, die mit allen 64-Bit-Versionen von PHP ab 5.6 kompatibel ist.
Wir integrieren WavesKit in unser Projekt:
composer require deemru/waveskitVerwendung:
use deemruWavesKit;
$wk = new WavesKit( 'T' );
$wk->setSeed( 'manage manual recall harvest series desert melt police rose hollow moral pledge kitten position add' );
$tx = $wk->txBroadcast( $wk->txSign( $wk->txTransfer( 'test', 1 ) ) );
$tx = $wk->ensure( $tx );Im obigen Beispiel erstellen wir ein WavesKit-Objekt, das im Testnetz "T" arbeitet. Wir setzen die Seed-Phrase, aus der automatisch die Schlüssel und die Kontoadresse basierend auf dem öffentlichen Schlüssel berechnet werden. Danach erstellen wir eine Überweisungstransaktion von 0,00000001 Waves von der automatisch über die Seed-Phrase berechneten Adresse zur Adresse des Alias "test", signieren sie mit dem privaten Schlüssel und senden sie ins Netzwerk. Anschließend stellen wir sicher, dass die Transaktion erfolgreich vom Netzwerk bestätigt wurde.
Die Arbeit mit Transaktionen konzentriert sich auf . Um ein besseres Verständnis für die Transaktionsbearbeitung zu entwickeln, können Sie die oder direkt die anschaulichen Beispiele in den .
Da sich WavesKit unter realen Bedingungen entwickelt hat, sind bereits fortschrittliche Funktionen vorhanden. Die erste Killer-Funktion ist , die sicherstellt, dass das erforderliche Vertrauensniveau erreicht wird, um zu garantieren, dass die Transaktion nicht verloren gegangen ist, sondern bestätigt wurde und die notwendige Anzahl von Bestätigungen im Netzwerk erreicht hat.
Ein weiteres äußerst effektives Verfahren — wie WavesKit mit Knoten kommuniziert. In einer geschützten Umgebung arbeitet das Framework nur mit dem Hauptknoten und hält eine ständige Verbindung zu diesem, kann aber im Fehlerfall automatisch auf Backup-Knoten umschalten. Wenn Sie ein Array von Backup-Knoten einrichten, können Sie die Funktion aufrufen, um den besten Knoten als Hauptknoten basierend auf der maximalen aktuellen Höhe und der Antwortgeschwindigkeit zu bestimmen. Fügen Sie jetzt noch einen internen Anfrage-Cache hinzu und spüren Sie die Fürsorge sowohl für die Benutzer als auch für die Knotenbesitzer.
Einer der neuesten fortschrittlichen Mechanismen ist die Funktion . Sie wurde notwendig, um in Echtzeit auf eingehende Transaktionen zu reagieren. Diese Funktion löst alle Herausforderungen bei der Verarbeitung von Transaktionen in der Blockchain vollständig. Kein Stress mehr, Sie setzen einfach Ihre Callback-Funktion mit den gewünschten Optionen und warten auf neue Transaktionen, die Ihre Prozesse auslösen. Zum Beispiel, ein weiteres meiner Projekte ist komplett um diese Funktion herum aufgebaut, Sie können in Ruhe sehen, wie sie direkt .
funktioniert. Ich mag Open Source, es ist eines der größten Errungenschaften der Menschheit. Da ich der einzige Entwickler bin und alle meine Bedürfnisse erfüllt sind, lade ich Sie ein, es zu nutzen und zu den .
Quelle: habr.com
