WavesKit - PHP-raamwerk om met die Waves-blokketting te werk

Ek hou daarvan PHP vir spoed van ontwikkeling en uitstekende draagbaarheid. Dit is baie goed as jy altyd 'n gereedskap in jou sak het, gereed om probleme op te los.

Dit was nogal 'n skande toe, toe jy met die plaaslike blokketting kennis gemaak het Golwe Platform hy het nie 'n klaargemaakte PHP SDK in sy arsenaal gehad nie. Wel, ek moes dit skryf.

Eers moes ek gebruik nodusse transaksies te onderteken. Dus, om drie adresse te bestuur, was dit nodig om drie nodusse te begin ... Dit was 'n jammerlike gesig, hoewel dit 'n paar probleme opgelos het. Totdat die begrip gekom het dat die vertroue op nodusse 'n doodloopstraat was. Eerstens, as gevolg van beperkte funksionaliteit API, tweedens, as gevolg van die spoed (nodes was baie stadig in daardie dae).

Ek het twee parallelle werke begin. Een daarvan is om 'n blokkettingverkenner te maak wat vinnig en heeltemal onafhanklik van die node API sal wees. Die tweede is om al die funksies vir die werk met die Waves-platform op een plek te versamel. Dit is hoe projekte verskyn het w8io и WavesKit.

Die eerste stap agter die skerms van die Waves-blokketting was w8io blaaier. Dit was nie maklik nie, maar ons het steeds daarin geslaag om 'n onafhanklike berekening van alle saldo's te skryf en selfs 'n fout in die berekeninge op die oorspronklike nodusse te vind (bug-bounty-program Terloops, dit werk vir hulle, hulle betaal vir die foute wat gevind is). U kan meer leer oor die funksionaliteit van die w8io-blaaier in hierdie onderwerp: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Terwyl ek aan w8io gewerk het, het ek reeds twyfel gehad, maar toe die werk tot sy logiese einde kom en ek die SDK begin skep het, is my twyfel bevestig. Ek kon sommige funksies nêrens vind nie, insluitend die belangrikstes, kriptografiese. Toe het ek begin deur my eie bakstene vir die fondasie te maak. Dit is hoe hulle gebore is: ABC -kode om te enkodeer na base58 (eintlik om enige alfabet na enige te enkodeer), Curve25519 om versoenbare handtekeninge te skep en te verifieer (met opsies op steroïede), Blake2b om een ​​van die hashes te bereken (wat eers sedert PHP 7.2 beskikbaar was), ens.

Dit is waar ek moet bedank Inala Kardanova vir 'n paar waardevolle raad wat my in die rigting gewys het komponeer in plaas van die include-lêers wat aan my bekend is, maar verouderd is.

Na 'n paar maande WavesKit is vrygestel, uitgekom beta weergawes en is nou gereed om met al die standaardfunksies van die Waves-platform te werk. Alles beskikbaar in hoofnetwerk transaksies kan maklik geskep, onderteken en gestuur word deur slegs een pakket te gebruik, wat op alle 64-bis weergawes van PHP vanaf 5.6 ingesluit word.

Ons koppel WavesKit aan ons projek:

composer require deemru/waveskit

Ons gebruik:

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 die voorbeeld hierbo skep ons 'n WavesKit-voorwerp wat op die "T"-toetsnet loop. Ons installeer 'n saadfrase waaruit die sleutels en rekeningadres outomaties op grond van die publieke sleutel bereken word. Vervolgens skep ons 'n oordragtransaksie 0.00000001 Golwe vanaf die adres wat outomaties bereken word met behulp van die saadfrase na die aliasadres "toets", dra dit oor om met 'n private sleutel onderteken te word en stuur dit na die netwerk. Hierna maak ons ​​seker dat die transaksie suksesvol deur die netwerk bevestig word.

Werk met transaksies is gekonsentreer in funksies wat begin met tx. Vir 'n beter begrip van die werk met transaksies, kan jy studeer WavesKit-dokumentasie of blaai dadelik na illustratiewe voorbeelde in deurlopende integrasietoetse.

Aangesien WavesKit in werklike gebruik ontwikkel is, het dit reeds gevorderde funksies. Die eerste moordenaar kenmerk is funksie verseker, wat die bereiking van die vereiste vlak van vertroue beheer dat die transaksie nie verlore gegaan het nie, maar, inteendeel, bevestig is en die vereiste aantal bevestigings in die netwerk bereik het.

Nog 'n koeëlvaste meganisme is hoe WavesKit met nodusse kommunikeer. In kweekhuistoestande werk die raamwerk slegs met die hoofnodus, wat 'n konstante verbinding daarmee behou, maar in geval van foute kan dit outomaties oorskakel na rugsteun. As jy 'n verskeidenheid rugsteunnodusse opstel, kan jy die funksie oproep stelBesteNode om die beste nodus as die hoof een te bepaal gebaseer op die maksimum waarde van die huidige hoogte en reaksiespoed. Voeg nou 'n interne navraagkas hierby en voel versorg vir beide gebruikers en nodus-eienaars.

Een van die nuutste gevorderde meganismes is die funksie txMonitor. Dit het verskyn as gevolg van die behoefte om intyds op inkomende transaksies te reageer. Hierdie funksie los al die nuanses wat verband hou met die verwerking van transaksies in die blokketting heeltemal op. Geen pyn meer nie, stel net jou terugbelfunksie op met die verlangde opsies en wag vir nuwe transaksies om jou prosesse te begin. Byvoorbeeld, 'n ander projek van my VECRO heeltemal gebou rondom hierdie funksie, kan jy maklik bestudeer hoe dit direk werk in die projekkode.

Ek is mal oor oopbron, dit is een van die mensdom se grootste prestasies. Aangesien ek die enigste ontwikkelaar is en 'n toestand bereik het waar al my behoeftes opgelos is, nooi ek jou uit om te gebruik en by te dra tot WavesKit.

Bron: will.com

Voeg 'n opmerking