Ich mag PHP wegen der Entwicklungsgeschwindigkeit und der hervorragenden Portabilität. Es ist großartig, ein solches Werkzeug in der Tasche zu haben, das immer bereit ist, Probleme zu lösen.
Für mich war es ziemlich traurig, dass es kein Waves Platform SDK für PHP gab, als ich diese schöne Blockchain zum ersten Mal traf. Nun, ich musste ein solches Kit schreiben.
Zuerst habe ich sogar meine Knoten verwendet , um Transaktionen zu signieren. Damit 3 Adressen funktionieren, musste ich 3 Knoten ausführen ... Es war ziemlich erbärmlich, löste aber einige Aufgaben. Bis es ein Verständnis gab, dass das Verlassen auf einen Knoten eine Sackgasse ist. Erstens wegen der mangelnden Funktionalität und zweitens ist die Knoten-API langsam (war damals super langsam).
Ich habe 2 parallele Arbeiten begonnen. Der eine ist ein Blockchain-Explorer, der schnell sein muss und überhaupt nicht auf die Knoten-API angewiesen ist. Der andere ist ein Aggregator aller Funktionen, die für die Arbeit mit Waves Platform erforderlich sind. So entstanden Projekte wie w8io und WavesKit .
Der erste Schritt hinter die Kulissen der Waves Blockchain war der w8io Explorer . Es war schwierig, aber ich habe es trotzdem geschafft, eine unabhängige Berechnung aller Salden zu schreiben und sogar einen Fehler in den Berechnungen auf den ursprünglichen Knoten gefunden (übrigens, das Bug-Bounty-Programm funktioniert, sie zahlen für Fehler). Weitere Informationen zur Funktionalität des w8io-Explorers finden Sie in diesem Thema: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite
Als es fertig war, ging ich zum nächsten Schritt über, konnte aber keine Bausteine und sogar zum größten Teil die kryptografische finden. Also fing ich an, meine eigenen Basispakete zu machen. Auf diese Weise wurde ABCode für die Base58-Codierung geboren (meistens, aber tatsächlich für jedes Alphabet), Curve25519 für unterstützte Varianten von Vorzeichen- und Überprüfungsfunktionen ( bei Steroidvarianten ), Blake2b für die Hash-Funktion (die nur in der Natriumbibliothek in PHP 7.2 enthalten ist). usw.
Hier sollte ich Inal Kardanov für ein paar Tipps danken, die mich zum Komponisten geführt haben , anstatt zu den Dateien der alten Schule.
Ein paar Monate später hat WavesKit die Beta-Phase verlassen und kann nun mit den Standardfunktionen der Waves-Plattform arbeiten. Alle Mainnet- Transaktionen stehen Benutzern zum einfachen Erstellen, Signieren und Senden in einem einzigen Paket zur Verfügung, das auf jeder 64-Bit-Version von PHP ab Version 5.6 funktioniert.
Verbinden Sie WavesKit mit Ihrem Projekt:
composer require deemru/waveskit
Grundlegendes Anwendungsbeispiel:
use deemru\WavesKit; $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" funktioniert. Wir setzen Seed Pharse, aus dem Schlüssel und Adresse aus öffentlichen Schlüsseln automatisch berechnet werden. Als Nächstes erstellen wir eine Übertragungstransaktion von 0,00000001 Wellen von der berechneten Adresse zu einer Adresse mit dem Alias "Test", übergeben diese Transaktion zum Signieren mit der berechneten Funktion des privaten Schlüssels und senden sie an das Netzwerk. Danach stellen wir sicher, dass die Transaktion vom Netzwerk erfolgreich bestätigt wird.
Die Arbeit mit Transaktionen konzentriert sich auf Funktionen mit "tx" -Präfixen . Um besser zu verstehen, wie mit Transaktionen gearbeitet wird, können Sie die WavesKit-Dokumentation lesen oder in kontinuierlichen Integrationstests sofort auf Beispiele für die reale Verwendung verweisen.
Da sich WavesKit in realen Fällen weiterentwickelt hat, verfügt es über erweiterte Funktionen. Zunächst wird sichergestellt , dass die Funktion verwendet werden kann, um das gewünschte Maß an Sicherheit zu erreichen, dass Ihre Transaktion nicht verloren gegangen ist, sondern bestätigt und die erforderliche Anzahl von Bestätigungen erreicht wurde.
Ein weiterer kugelsicherer Mechanismus ist die Interaktion mit Knoten. Es gibt eine interne Möglichkeit des Fallbacks auf Sicherungsknoten bei Hauptknotenfehlern. Sie können ein Array von Sicherungsknoten auf Fallback einstellen. Sie können die Funktion setBestNode aufrufen , um automatisch den derzeit am besten geeigneten Knoten basierend auf der höchsten Höhe und der kürzesten Antwortzeit des Knotens auszuwählen. Fügen Sie nun eine interne Cache-Mechanik und eine Verbindungshalterung zu ihrem Arsenal hinzu, und Sie können die Sorge nicht nur um Benutzer, sondern auch um Knotenbesitzer spüren.
Eine der neuesten erweiterten Funktionen ist die txMonitor- Funktion. Es schien notwendig, auf eingehende Transaktionen in Echtzeit zu reagieren. Diese Funktion behebt alle Probleme im Zusammenhang mit der Transaktionsverarbeitung in der Blockchain vollständig. Keine Schmerzen mehr für Entwickler, stellen Sie einfach Ihre Rückruffunktion und die gewünschten Optionen ein und warten Sie, bis neue Transaktionen Ihre Prozesse auslösen. Zum Beispiel basiert mein VECRO-Projekt vollständig auf dieser txMonitor-Funktion. Sie können gerne erfahren, wie es funktioniert .
Ich mag Open Source, dies ist eine der größten Errungenschaften der Menschheit. Da ich der einzige Entwickler dieses Frameworks bin und zu dem Punkt gekommen bin, dass alle meine Anforderungen gelöst sind, begrüße ich Sie, WavesKit zu verwenden und dazu beizutragen .