Ich mag es wegen der Entwicklungspeed und hervorragenden Portabilität. Es ist sehr gut, wenn man immer ein Instrument zur Verfügung hat, das bereit ist, Aufgaben zu lösen.
Es war ziemlich enttäuschend, als ich mit der einheimischen Blockchain bekannt wurde, dass es kein fertiges SDK in PHP gab. Nun, ich musste es selbst schreiben.
Anfangs musste ich zum Signieren von Transaktionen verwenden. So musste man für die Verwaltung von drei Adressen drei Nodes starten… Es war ein jämmerlicher Anblick, obwohl es einige Aufgaben löste. Bis ich die Einsicht bekam, dass es ein Irrweg ist, auf Nodes zu setzen. Erstens wegen der eingeschränkten Funktionalität , und zweitens wegen der Geschwindigkeit (in diesen Tagen waren Nodes sehr langsam).
Ich begann mit zwei parallelen Arbeiten. Die eine war, einen Blockchain-Explorer zu erstellen, der schnell und völlig unabhängig von der API der Nodes sein würde. Die andere bestand darin, alle Funktionen für die Arbeit mit der Waves Platform an einem Ort zu sammeln. So entstanden die Projekte und .
Der erste Schritt hinter die Kulissen der Waves-Blockchain war . Es war nicht einfach, aber ich schaffte es trotzdem, eine unabhängige Berechnung aller Salden zu schreiben und sogar einen Fehler in den Berechnungen auf den Original-Nodes zu finden ( übrigens läuft bei ihnen, für gefundene Fehler wird bezahlt). Sie können die Funktionalität des Explorers w8io in diesem Thema näher erkunden:
Im Laufe der Arbeit an w8io hatte ich bereits Zweifel, aber als die Arbeit zu einem logischen Ende kam und ich mit der Erstellung des SDK begann, bestätigten sich die Zweifel. Ich konnte einige Funktionen, einschließlich der wichtigsten, kryptografischen, nirgendwo finden. Dann begann ich mit der Erstellung meiner eigenen Bausteine für das Fundament. So entstanden: zum Codieren in base58 (eigentlich zum Codieren jedes Alphabets in jedes), zum Erstellen und Überprüfen kompatibler Signaturen (mit Varianten ), zur Berechnung eines der Hashes (der nur ab PHP 7.2 verfügbar war) usw.
Hier möchte ich mich bedanken bei für einige wertvolle Ratschläge, die mich in Richtung statt der mir vertrauten, aber veralteten, Include-Dateien gelenkt haben.
Nach ein paar Monaten , trat aus und ist nun bereit, mit allen Standardfunktionen der Waves-Plattform zu arbeiten. Alle in der Transaktionen können einfach erstellt, signiert und gesendet werden, unterstützt von einem einzigen Paket, das in allen 64-Bit-Versionen von PHP ab 5.6 funktioniert.
Integrieren Sie WavesKit in Ihr 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 den Seed, aus dem automatisch die Schlüssel und die Kontoadresse basierend auf dem öffentlichen Schlüssel berechnet werden. Dann erstellen wir eine Übertragungs-Transaktion von 0.00000001 Waves von der automatisch nach dem Seed berechneten Adresse zu der Adresse des Alias 'test', unterschreiben sie mit dem privaten Schlüssel und senden sie ins Netzwerk. Anschließend stellen wir sicher, dass die Transaktion erfolgreich im Netzwerk bestätigt wurde.
Die Arbeit mit Transaktionen konzentriert sich auf . Für ein besseres Verständnis der Arbeit mit Transaktionen können Sie die oder direkt die anschaulichen Beispiele in .
Da WavesKit unter realen Bedingungen entwickelt wurde, hat es bereits fortschrittliche Funktionen. Die erste Killer-Feature ist die , die sicherstellt, dass das erforderliche Maß an Zuverlässigkeit erreicht wird, sodass die Transaktion nicht verloren geht, sondern bestätigt wurde und die notwendige Anzahl an Bestätigungen im Netzwerk erreicht hat.
Ein weiterer robustes Mechanismus ist, wie WavesKit mit Knoten kommuniziert. In geschützten Bedingungen arbeitet das Framework nur mit dem Hauptknoten und hält eine dauerhafte Verbindung, kann jedoch bei Fehlern automatisch auf Reserveknoten umschalten. Wenn Sie ein Array von Reserveknoten festlegen, können Sie die Funktion aufrufen, um den besten Knoten basierend auf der maximalen Höhe und der Antwortgeschwindigkeit der aktuellen Knoten auszuwählen. Jetzt fügen Sie noch einen internen Cache für Anfragen hinzu und kümmern Sie sich sowohl um die Benutzer als auch um die Knotenbetreiber.
Einer der letzten fortschrittlichen Mechanismen ist die Funktion . Sie entstand aus der Notwendigkeit, in Echtzeit auf eingehende Transaktionen zu reagieren. Diese Funktion löst alle Aspekte der Verarbeitung von Transaktionen in der Blockchain vollständig. Kein Schmerz mehr, Sie installieren einfach Ihre Callback-Funktion mit den gewünschten Optionen und warten auf neue Transaktionen, die Ihre Prozesse auslösen. Zum Beispiel, ein weiteres von mir geplantes Projekt ist vollständig um diese Funktion herum aufgebaut, Sie können in Ruhe erforschen, wie sie direkt .
Ich liebe Open Source, es ist eine der größten Errungenschaften der Menschheit. Da ich der einzige Entwickler bin und in der Lage bin, alle meine Bedürfnisse zu erfüllen, lade ich Sie ein, zu nutzen und beizutragen zu .
Quelle: habr.com
