WavesKit - Waves blockchain-arekin lan egiteko PHP esparrua

Gustatzen zait PHP garapen-abiadura eta eramangarritasun bikainagatik. Oso ona da poltsikoan arazoak konpontzeko tresna bat prest duzunean.

Pena handia izan zen etxeko blockchain-a ezagutzean Olatuen Plataforma ez zeukan prest egindako PHP SDK bat bere armategian. Tira, idatzi behar nuen.

Hasieran erabili behar izan nuen nodoak transakzioak sinatzeko. Beraz, hiru helbide kudeatzeko, hiru nodo exekutatu behar zenituen... Ikuskizun tamalgarria zen, arazo batzuk konpondu bazituen ere. Nodoetan fidatzea muturra dela ulertu zen arte. Lehenik eta behin, funtzionaltasun mugatua dela eta API, bigarrenik, abiaduragatik (nodoak oso motelak ziren garai haietan).

Bi lan paralelo hasi nituen. Bata nodoaren APItik bizkorra eta guztiz independentea den bloke-katearen esploratzailea egitea da. Bigarrena, Olatuen Plataformarekin lan egiteko funtzio guztiak leku bakarrean biltzea da. Horrela sortu ziren proiektuak. w8io и WavesKit.

Waves blockchain-aren eszenaren atzean lehen urratsa izan zen w8io arakatzailea. Ez zen erraza izan, baina hala ere saldo guztien kalkulu independente bat idaztea lortu zuen eta jatorrizko nodoetan kalkuluetan errore bat aurkitu ere egin zuen (bug bounty programa Bide batez, haientzat funtzionatzen du, aurkitutako akatsengatik ordaintzen dute). W8io arakatzailearen funtzionaltasunari buruz gehiago jakin dezakezu hari honetan: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

W8io lantzeko prozesuan, zalantzak nituen jada, baina lana logikoki amaitu eta SDK-a sortzen hasi nintzenean, nire zalantzak baieztatu ziren. Funtzio batzuk ezin izan ditut inon aurkitu, kriptografiko garrantzitsuenak barne. Gero, nire zimenduko adreiluak egiten hasi nintzen. Honela jaio ziren: ABCode base58-n kodetzeko (egia esan, edozein alfabeto edozein kodetzeko), Kurba25519 sinadura bateragarriak sortzeko eta egiaztatzeko (aukerekin esteroideetan), Blake2b hashetako bat kalkulatzeko (PHP 7.2-tik bakarrik dago erabilgarri), etab.

Hemen eskerrak eman behar dizkiot Inala Kardanova bideratu ninduten aholku baliotsu batzuengatik konposatzen niretzat ohikoaren ordez, baina zaharkituta, sartu fitxategiak.

Hilabete pare baten ondoren WavesKit-ek ikusi zuen argia, atera zen beta bertsioak eta orain Waves plataformaren funtzionalitate estandar guztiekin lan egiteko prest dago. Denak eskuragarri sare nagusia transakzioak erraz sor daitezke, sinatu eta bidal daitezke 64tik aurrera PHP-ren 5.6 biteko bertsio guztietan exekutatzen den pakete bakarrarekin.

WavesKit gure proiektuarekin konektatzen dugu:

composer require deemru/waveskit

Erabiltzen dugu:

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

Goiko adibidean, "T" testnet-ean exekutatzen den WavesKit objektu bat sortzen dugu. Hazia esaldia ezarri dugu, eta bertatik kontuaren gakoak eta helbidea automatikoki kalkulatzen dira gako publikoaren arabera. Ondoren, transferentzia-transakzio bat sortzen dugu 0.00000001 Waves hazi-esalditik automatikoki kalkulatutako helbidetik "test" aliasaren helbidera, transferitu sinadurarako gako pribatuarekin eta sarera bidali. Horren ostean, transakzioa sareak ongi baieztatu duela ziurtatzen dugu.

Transakzioak bideratzen dira tx-tik hasten diren funtzioak. Transakzioekin lan egitea hobeto ulertzeko, ikas dezakezu WavesKit dokumentazioa edo joan zuzenean adibide ilustratzaileetara etengabeko integrazio-probak.

WavesKit erabilera errealean garatu denez, dagoeneko eginbide aurreratuak ditu. Lehen hiltzaile ezaugarria da funtzioa ziurtatu, transakzioa galdu ez den beharrezko konfiantza-mailaren lorpena kontrolatzen duena, baina, aitzitik, baieztatu eta sarean eskatutako berrespen kopurura iritsi zen.

Balen aurkako beste mekanismo bat WavesKit nodoekin nola komunikatzen den da. Berotegi-baldintzetan, esparruak nodo nagusiarekin bakarrik funtzionatzen du, harekin etengabeko konexioa mantenduz, baina akatsen kasuan automatikoki alda daiteke babeskopietara. Egonean dauden nodo sorta bat konfiguratzen ari bazara, funtziora deitu dezakezu setBestNode nodo onena nodo nagusi gisa uneko altueraren eta erantzun abiaduraren gehienezko balioaren arabera zehazteko. Orain gehitu barruko kontsulta-cachea honi eta sentitu erabiltzaileen zein nodoen jabeen arreta.

Azken mekanismo aurreratuetako bat funtzioa da txMonitor. Jasotako transakzioei denbora errealean erantzuteko beharrarekin lotuta agertu zen. Funtzio honek erabat konpontzen ditu blockchain-eko transakzioen prozesamenduarekin lotutako ñabardura guztiak. Ez dago minik gehiago, konfiguratu zure deia-itzultzeko funtzioa nahi dituzun aukerekin eta itxaron transakzio berriak zure prozesuak hasteko. Adibidez, nire proiektuetako beste bat VECRO funtzio honen inguruan guztiz eraikita, erraz nola funtzionatzen duen ikas dezakezu proiektuaren kodean.

Kode irekia maite dut, gizateriaren lorpen handienetako bat da. Garatzaile bakarra naizenez eta nire behar guztiak konponduta dauden egoerara iritsi naizenez, erabiltzera eta laguntzera gonbidatzen zaitut. WavesKit.

Iturria: www.habr.com

Gehitu iruzkin berria