Ik hou ervan voor ontwikkelsnelheid en uitstekende draagbaarheid. Het is heel fijn om een altijd klaar instrument achter de hand te hebben voor het oplossen van problemen.
Het was behoorlijk teleurstellend toen ik kennismaakte met de binnenlandse blockchain en ontdekte dat er geen kant-en-klare SDK voor PHP beschikbaar was. Nou, ik moest het zelf schrijven.
In het begin moest ik gebruiken om transacties te ondertekenen. Zo moest ik voor het beheren van drie adressen drie nodes opstarten⦠Het was een treurig schouwspel, hoewel het enkele taken oploste. Totdat het besef kwam dat het vertrouwen op nodes een doodlopende weg was. Ten eerste vanwege de beperkte functionaliteit, , en ten tweede vanwege de snelheid (in die dagen waren nodes zeer traag).
Ik begon twee parallelle projecten. EƩn was het maken van een blockchain-explorer die snel was en volledig onafhankelijk van de API van nodes. De tweede was het samenbrengen van alle functies voor het werken met de Waves Platform op ƩƩn plek. Zo ontstonden de projecten en .
De eerste stap achter de schermen van de Waves blockchain was . Het was geen gemakkelijke taak, maar ik slaagde erin een onafhankelijke berekening van alle saldo's te schrijven en zelfs een fout in de berekeningen op de originele nodes te vinden ( werkt trouwens voor hen, ze betalen voor gevonden fouten). U kunt de functies van de w8io-explorer in dit onderwerp verder verkennen:
Tijdens het werken aan w8io had ik al twijfels, maar toen ik op het punt stond om de SDK te ontwikkelen, bevestigden mijn twijfels zich. Ik kon nergens bepaalde functies vinden, inclusief de belangrijkste cryptografische. Toen begon ik met het maken van mijn eigen bouwstenen voor de fundering. Zo ontstonden: voor codering in base58 (eigenlijk voor codering van elk alfabet in elk), voor het maken en verifiƫren van compatibele handtekeningen (met varianten ), voor het berekenen van een van de hashes (die alleen beschikbaar was vanaf PHP 7.2) enzovoort.
Hier wil ik bedanken voor enkele waardevolle aanwijzingen die mij op weg hebben geholpen naar in plaats van de vertrouwde, maar verouderde, include-bestanden.
Na een paar maanden , kwam uit de en is nu klaar voor gebruik met alle standaard functionaliteit van het Waves-platform. Alles beschikbaar in transacties kunnen eenvoudig worden gecreƫerd, ondertekend en verzonden door de krachten van ƩƩn enkel pakket, dat op alle 64-bits versies van PHP vanaf 5.6 werkt.
Voeg WavesKit toe aan uw project:
composer require deemru/waveskitGebruik:
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 );In het voorbeeld hierboven creƫren we een WavesKit-object dat werkt in het testnet 'T'. We stellen de seedphrase in, waarvan automatisch de sleutels en het rekeningadres op basis van de openbare sleutel worden berekend. Vervolgens creƫren we een transfertransactie van 0.00000001 Waves van het automatisch berekende adres op basis van de seedphrase naar het aliasadres 'test', ondertekenen het met de privƩsleutel en verzenden het naar het netwerk. Daarna zorgen we ervoor dat de transactie met succes door het netwerk is bevestigd.
Het werken met transacties is gefocust op . Voor een beter begrip van het werken met transacties kunt u de bestuderen of meteen naar praktische voorbeelden in .
Omdat WavesKit zich in een realistische gebruiksomgeving heeft ontwikkeld, heeft het al geavanceerde functies gekregen. De eerste killerfunctie is de , die ervoor zorgt dat het vereiste vertrouwensniveau is bereikt, zodat de transactie niet verloren gaat, maar in tegendeel bevestigd is en het vereiste aantal bevestigingen in het netwerk heeft bereikt.
Een ander kogelvrij mechanisme is hoe WavesKit communiceert met knooppunten. In ideale omstandigheden werkt het framework alleen met het hoofdknoppunt en onderhoudt het een constante verbinding, maar kan het bij fouten automatisch overschakelen naar back-upknooppunten. Als u een array van back-upknooppunten instelt, kunt u de functie aanroepen om het beste knooppunt te bepalen als hoofd op basis van de maximale waarde van de huidige hoogte en reactietijd. Voeg nu hieraan de interne cache voor verzoeken toe en voel de zorg voor zowel gebruikers als knooppunteigenaren.
Een van de nieuwste geavanceerde mechanismen is de functie Het is ontstaan uit de noodzaak om in realtime op inkomende transacties te reageren. Deze functie lost alle details op die verband houden met de verwerking van transacties op de blockchain volledig op. Geen gedoe meer, je stelt gewoon je callbackfunctie in met de gewenste opties en wacht op nieuwe transacties die je processen zullen activeren. Bijvoorbeeld, nog een van mijn projecten is volledig gebaseerd op deze functie, je kunt rustig bestuderen hoe het werkt rechtstreeks .
Ik hou van open source, het is een van de grootste prestaties van de mensheid. Aangezien ik de enige ontwikkelaar ben en in de situatie ben gekomen dat al mijn behoeften zijn vervuld, nodig ik je uit om te gebruiken en bij te dragen aan .
Bron: habr.com
