WavesKit - PHP-kehys Waves-lohkoketjun kanssa työskentelemiseen

Pidän PHP kehitysnopeuden ja erinomaisen kannettavuuden vuoksi. On erittäin hyvä, kun sinulla on aina taskussa työkalu, joka on valmis ratkaisemaan ongelmia.

Oli aika sääli, kun tutustui kotimaiseen lohkoketjuun Aaltojen alusta hänellä ei ollut valmista PHP SDK:ta arsenaalissaan. No, minun oli pakko kirjoittaa.

Aluksi oli pakko käyttää solmut allekirjoittaa liiketoimia. Joten kolmen osoitteen hallitsemiseksi oli tarpeen käynnistää kolme solmua... Se oli säälittävä näky, vaikka se ratkaisi joitain ongelmia. Kunnes tuli ymmärrys, että solmuihin luottaminen oli umpikuja. Ensinnäkin rajoitetun toimivuuden vuoksi API, toiseksi nopeuden takia (solmut olivat hyvin hitaita noina aikoina).

Aloitin kaksi rinnakkaista työtä. Yksi on tehdä blockchain explorer, joka on nopea ja täysin riippumaton solmun API:sta. Toinen on kerätä kaikki Waves Platformin kanssa työskentelyyn liittyvät toiminnot yhteen paikkaan. Näin projektit ilmestyivät w8io и WavesKit.

Ensimmäinen askel Waves-lohkoketjun kulissien takana oli w8io selain. Se ei ollut helppoa, mutta onnistuimme silti kirjoittamaan itsenäisen laskelman kaikista saldoista ja jopa löytämään virheen laskelmissa alkuperäisistä solmuista (bug-bounty-ohjelma Se muuten toimii heille, he maksavat löydetyistä virheistä). Voit oppia lisää w8io-selaimen toiminnoista tästä aiheesta: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

W8io-työskentelyn aikana minulla oli jo epäilyksiä, mutta kun työ päättyi loogisesti ja aloin luoda SDK:ta, epäilykseni vahvistuivat. En löytänyt kaikkia toimintoja, mukaan lukien tärkeimmät, kryptografiset. Sitten aloitin tekemällä omia tiiliä perustaa varten. Näin ne syntyivät: ABCode koodaamaan base58:aan (itse asiassa koodaamaan minkä tahansa aakkoston mihin tahansa), Curve25519 luodaksesi ja tarkistaaksesi yhteensopivia allekirjoituksia (valinnat steroideilla), Blake2b laskeaksesi yhden tiivisteistä (joka oli saatavilla vain PHP 7.2:sta lähtien) jne.

Tässä minun täytyy kiittää Inala Kardanova arvokkaita neuvoja, jotka osoittivat minut oikeaan suuntaan säveltäjä Sisällytä tiedostot, jotka ovat minulle tuttuja, mutta vanhentuneita.

Parin kuukauden jälkeen WavesKit julkaistiin, tuli ulos beta-versiot ja on nyt valmis toimimaan kaikkien Waves-alustan vakiotoimintojen kanssa. Kaikki saatavilla pääverkko tapahtumat voidaan helposti luoda, allekirjoittaa ja lähettää yhdellä paketilla, joka toimii kaikissa PHP:n 64-bittisissä versioissa 5.6 mukaan lukien.

Yhdistämme WavesKitin projektiimme:

composer require deemru/waveskit

Käytämme:

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 );

Yllä olevassa esimerkissä luomme WavesKit-objektin, joka toimii "T"-testiverkossa. Asennamme siemenlauseen, josta avaimet ja tiliosoite lasketaan automaattisesti julkisen avaimen perusteella. Seuraavaksi luodaan siirtotapahtuma 0.00000001 Waves siemenlauseen avulla automaattisesti lasketusta osoitteesta aliasosoitteeseen "testi", siirretään se allekirjoitettavaksi yksityisellä avaimella ja lähetetään verkkoon. Tämän jälkeen varmistamme, että verkko on vahvistanut tapahtuman onnistuneesti.

Työ transaktioiden kanssa on keskittynyt funktiot alkaen kirjaimella tx. Voit opiskella saadaksesi paremman käsityksen transaktioiden kanssa työskentelystä WavesKit-dokumentaatio tai siirry välittömästi havainnollistaviin esimerkkeihin jatkuvat integraatiotestit.

Koska WavesKit on kehitetty tosielämässä, siinä on jo edistyneitä ominaisuuksia. Ensimmäinen tappajaominaisuus on varmistaa toiminnan, joka ohjaa vaaditun luottamustason saavuttamista siitä, että tapahtumaa ei menetetty, vaan päinvastoin, se vahvistettiin ja saavutti vaaditun määrän vahvistuksia verkossa.

Toinen luodinkestävä mekanismi on tapa, jolla WavesKit kommunikoi solmujen kanssa. Kasvihuoneolosuhteissa kehys toimii vain pääsolmun kanssa ylläpitäen jatkuvaa yhteyttä siihen, mutta virheiden sattuessa se voi vaihtaa automaattisesti varasolmuihin. Jos määrität joukon varmuuskopiosolmuja, voit kutsua funktion setBestNode määrittääksesi parhaan solmun pääsolmuksi nykyisen korkeuden ja vastenopeuden maksimiarvon perusteella. Lisää nyt tähän sisäinen kyselyvälimuisti ja tunne, että sekä käyttäjiä että solmujen omistajia välitetään.

Yksi viimeisimmistä edistyneistä mekanismeista on toiminto txMonitor. Se ilmeni tarpeesta vastata saapuviin tapahtumiin reaaliajassa. Tämä toiminto ratkaisee täysin kaikki lohkoketjun tapahtumien käsittelyyn liittyvät vivahteet. Ei enää kipua, määritä vain takaisinsoittotoiminto halutuilla vaihtoehdoilla ja odota uusien tapahtumien alkamista. Esimerkiksi toinen projektini VECRO täysin tämän toiminnon ympärille rakennettu, voit helposti tutkia sen toimintaa suoraan projektikoodissa.

Rakastan avointa lähdekoodia, se on yksi ihmiskunnan suurimmista saavutuksista. Koska olen ainoa kehittäjä ja olen saavuttanut tilan, jossa kaikki tarpeeni on ratkaistu, kutsun sinut käyttämään ja osallistumaan WavesKit.

Lähde: will.com

Lisää kommentti