Man patinka dėl kūrimo greičio ir puikaus nešiojamumo. Labai gerai, kai kišenėje visada turi įrankį, pasiruošusį spręsti problemas.
Buvo labai gaila, kai susipažinome su vietine blokų grandine jis savo arsenale neturėjo paruošto PHP SDK. Na, aš turėjau tai parašyti.
Iš pradžių turėjau naudoti sandoriams pasirašyti. Taigi, norint valdyti tris adresus, reikėjo paleisti tris mazgus... Apgailėtinas vaizdas, nors ir išsprendė kai kurias problemas. Kol atėjo supratimas, kad pasikliauti mazgais yra aklavietė. Pirma, dėl riboto funkcionalumo , antra, dėl greičio (tais laikais mazgai buvo labai lėti).
Pradėjau dirbti du lygiagrečius darbus. Vienas iš jų yra sukurti blokų grandinės naršyklę, kuri būtų greita ir visiškai nepriklausoma nuo mazgo API. Antrasis – į vieną vietą surinkti visas darbo su „Waves Platform“ funkcijas. Taip atsirado projektai и .
Pirmasis žingsnis „Waves“ blokų grandinės užkulisiuose buvo . Tai nebuvo lengva, bet vis tiek sugebėjome parašyti nepriklausomą visų likučių skaičiavimą ir netgi rasti klaidą skaičiavimuose pradiniuose mazguose ( Beje, jiems tai veikia, jie moka už rastas klaidas). Daugiau apie w8io naršyklės funkcionalumą galite sužinoti šioje temoje:
Dirbdamas su w8io jau turėjau abejonių, bet kai darbas atėjo logiškai į pabaigą ir pradėjau kurti SDK, mano abejonės pasitvirtino. Kai kurių funkcijų niekur neradau, tarp jų ir svarbiausių, kriptografinių. Tada pradėjau nuo to, kad pamatau savo plytas. Štai kaip jie gimė: koduoti į base58 (iš tikrųjų koduoti bet kurią abėcėlę į bet kurią), sukurti ir patikrinti suderinamus parašus (su parinktimis ), apskaičiuoti vieną iš maišų (kuri buvo prieinama tik nuo PHP 7.2) ir kt.
Štai čia turiu padėkoti už kai kuriuos vertingus patarimus, kurie nurodė man kryptį vietoj įtraukti failų, kurie man žinomi, bet pasenę.
Po poros mėnesių , išėjo ir dabar yra pasirengęs dirbti su visomis standartinėmis Waves platformos funkcijomis. Viskas prieinama operacijas galima lengvai sukurti, pasirašyti ir išsiųsti naudojant tik vieną paketą, veikiantį visose 64 bitų PHP versijose nuo 5.6 imtinai.
Mes prijungiame WavesKit prie mūsų projekto:
composer require deemru/waveskitMes naudojame:
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 );Aukščiau pateiktame pavyzdyje sukuriame WavesKit objektą, kuris veikia "T" testų tinkle. Įdiegiame pradinę frazę, iš kurios pagal viešąjį raktą automatiškai apskaičiuojami raktai ir sąskaitos adresas. Toliau sukuriame perdavimo operaciją 0.00000001 Waves iš adreso, automatiškai apskaičiuoto naudojant pradinę frazę į slapyvardį „testas“, perkeliame jį pasirašyti privačiu raktu ir išsiunčiame į tinklą. Po to įsitikiname, kad sandorį sėkmingai patvirtina tinklas.
Sutelktas darbas su sandoriais . Norėdami geriau suprasti darbą su sandoriais, galite mokytis arba nedelsdami kreipkitės į iliustruojančius pavyzdžius .
Kadangi „WavesKit“ buvo sukurtas naudojant realiai, jame jau yra pažangių funkcijų. Pirmoji žudiko savybė yra , kuri kontroliuoja reikiamo pasitikėjimo lygio pasiekimą, kad sandoris nebuvo prarastas, o, priešingai, buvo patvirtintas ir pasiekė reikiamą patvirtinimų skaičių tinkle.
Kitas neperšaunamas mechanizmas yra tai, kaip „WavesKit“ bendrauja su mazgais. Šiltnamio sąlygomis karkasas dirba tik su pagrindiniu mazgu, palaikydamas nuolatinį ryšį su juo, tačiau klaidų atveju gali automatiškai persijungti į atsarginius. Jei nustatote atsarginių mazgų masyvą, galite iškviesti funkciją nustatyti geriausią mazgą kaip pagrindinį pagal didžiausią esamo aukščio ir reakcijos greičio vertę. Dabar pridėkite prie šios vidinės užklausos talpyklos ir jauskitės rūpindamiesi tiek vartotojais, tiek mazgų savininkais.
Vienas iš naujausių pažangių mechanizmų yra funkcija . Tai atsirado dėl būtinybės reaguoti į gaunamas operacijas realiu laiku. Ši funkcija visiškai išsprendžia visus niuansus, susijusius su operacijų apdorojimu blokų grandinėje. Daugiau jokio skausmo, tiesiog nustatykite atgalinio ryšio funkciją su norimomis parinktimis ir palaukite, kol bus pradėtos naujos operacijos. Pavyzdžiui, kitas mano projektas visiškai pagrįsta šia funkcija, galite lengvai ištirti, kaip ji veikia tiesiogiai .
Man patinka atvirasis kodas, tai vienas didžiausių žmonijos laimėjimų. Kadangi esu vienintelis kūrėjas ir pasiekęs būseną, kai išspręsti visi mano poreikiai, kviečiu pasinaudoti ir prisidėti prie .
Šaltinis: www.habr.com
