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
