WavesKit - PHP շրջանակ Waves բլոկչեյնի հետ աշխատելու համար

Ես սիրում եմ PHP զարգացման արագության և գերազանց դյուրատարության համար: Շատ լավ է, երբ գրպանումդ միշտ գործիք կա՝ պատրաստ լուծելու խնդիրները։

Բավականին ամոթ էր, երբ ծանոթանում էինք ներքին բլոկչեյնին Ալիքների հարթակ նա իր զինանոցում չուներ պատրաստի PHP SDK: Դե, ես ստիպված էի գրել այն:

Սկզբում ես ստիպված էի օգտագործել հանգույցներ գործարքներ կնքելու համար: Այսպիսով, երեք հասցե կառավարելու համար անհրաժեշտ էր գործարկել երեք հանգույց... Խղճալի տեսարան էր, թեև որոշ խնդիրներ լուծեց։ Մինչև հասկացավ, որ հանգույցների վրա հույս դնելը փակուղի է: Նախ, սահմանափակ ֆունկցիոնալության պատճառով API, երկրորդ՝ արագության պատճառով (այդ օրերին հանգույցները շատ դանդաղ էին)։

Սկսեցի երկու զուգահեռ աշխատանք. Մեկը բլոկչեյն հետազոտող պատրաստելն է, որն արագ և ամբողջովին անկախ կլինի հանգույցի API-ից: Երկրորդը՝ Waves Platform-ի հետ աշխատելու բոլոր գործառույթները մեկ տեղում հավաքելն է։ Այսպես հայտնվեցին նախագծերը w8io и WavesKit.

Ալիքների բլոկչեյնի կուլիսների առաջին քայլն էր w8io բրաուզեր. Դա հեշտ չէր, բայց մենք դեռ կարողացանք գրել բոլոր մնացորդների անկախ հաշվարկ և նույնիսկ սխալ գտնել սկզբնական հանգույցների հաշվարկներում (bug-bounty ծրագիր Ի դեպ, դա նրանց մոտ աշխատում է, նրանք վճարում են հայտնաբերված սխալների համար): Դուք կարող եք ավելին իմանալ w8io բրաուզերի ֆունկցիոնալության մասին այս թեմայում. https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

w8io-ով աշխատելիս արդեն կասկածներ ունեի, բայց երբ աշխատանքը հասավ իր տրամաբանական ավարտին ու սկսեցի ստեղծել SDK-ն, կասկածներս հաստատվեցին։ Ես ոչ մի տեղ չկարողացա գտնել որոշ գործառույթներ, այդ թվում՝ ամենակարևորները՝ կրիպտոգրաֆիկները։ Հետո ես սկսեցի պատրաստել իմ սեփական աղյուսները հիմքի համար: Այսպես են նրանք ծնվել. ABCode կոդավորել base58-ին (իրականում ցանկացած այբուբեն կոդավորել որևէ մեկին), Curve25519 ստեղծել և ստուգել համատեղելի ստորագրություններ (ընտրանքներով ստերոիդների վրա), Բլեյք2բ հաշվարկել հեշերից մեկը (որը հասանելի էր միայն PHP 7.2-ից) և այլն:

Այստեղ ես պետք է շնորհակալություն հայտնեմ Ինալա Կարդանովա որոշ արժեքավոր խորհուրդների համար, որոնք ինձ ուղղություն ցույց տվեցին կազմել ինձ ծանոթ, բայց հնացած ֆայլերի փոխարեն:

Մի երկու ամիս հետո WavesKit-ը թողարկվել է, դուրս եկավ բետա տարբերակները և այժմ պատրաստ է աշխատել Waves պլատֆորմի բոլոր ստանդարտ ֆունկցիոնալությամբ: Բոլորը հասանելի են հիմնական ցանց գործարքները կարելի է հեշտությամբ ստեղծել, ստորագրել և ուղարկել՝ օգտագործելով ընդամենը մեկ փաթեթ, որն աշխատում է PHP-ի բոլոր 64-բիթանոց տարբերակների վրա՝ սկսած 5.6-ից:

Մենք WavesKit-ը միացնում ենք մեր նախագծին.

composer require deemru/waveskit

Մենք օգտագործում ենք:

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

Վերևի օրինակում մենք ստեղծում ենք WavesKit օբյեկտ, որն աշխատում է «T» թեստային ցանցում: Մենք տեղադրում ենք սերմային արտահայտություն, որից բանալիները և հաշվի հասցեն ավտոմատ կերպով հաշվարկվում են հանրային բանալու հիման վրա: Այնուհետև մենք ստեղծում ենք փոխանցման գործարք 0.00000001 «Waves» հասցեից, որը ավտոմատ կերպով հաշվարկվում է սերմերի արտահայտության միջոցով «փորձարկում» կեղծանունով հասցեին, փոխանցում այն ​​մասնավոր բանալիով ստորագրելու համար և ուղարկում ցանց: Դրանից հետո մենք համոզվում ենք, որ գործարքը հաջողությամբ հաստատված է ցանցի կողմից:

Գործարքների հետ աշխատանքը կենտրոնացած է ֆունկցիաները սկսած tx-ով. Գործարքների հետ աշխատելու ավելի լավ հասկանալու համար կարող եք ուսումնասիրել WavesKit փաստաթղթեր կամ անմիջապես դիմեք պատկերավոր օրինակներին շարունակական ինտեգրման թեստեր.

Քանի որ WavesKit-ը մշակվել է իրական աշխարհում, այն արդեն ունի առաջադեմ հնարավորություններ: Առաջին մարդասպան հատկանիշն է ապահովել գործառույթը, որը վերահսկում է վստահության անհրաժեշտ մակարդակի ձեռքբերումը, որ գործարքը չի կորել, այլ, ընդհակառակը, հաստատվել է և հասել է անհրաժեշտ թվով հաստատումների ցանցում:

Մեկ այլ փամփուշտ մեխանիզմ է այն, թե ինչպես է WavesKit-ը հաղորդակցվում հանգույցների հետ: Ջերմոցային պայմաններում շրջանակն աշխատում է միայն հիմնական հանգույցի հետ՝ պահպանելով նրա հետ մշտական ​​կապ, սակայն սխալների դեպքում այն ​​կարող է ավտոմատ կերպով անցնել պահեստայինի։ Եթե ​​դուք ստեղծեք պահեստային հանգույցների զանգված, կարող եք զանգահարել գործառույթը setBestNode որոշելու լավագույն հանգույցը որպես հիմնական՝ հիմնվելով ընթացիկ բարձրության առավելագույն արժեքի և արձագանքման արագության վրա: Այժմ դրան ավելացրե՛ք ներքին հարցումների քեշը և հոգատար զգալ ինչպես օգտատերերի, այնպես էլ հանգույցների սեփականատերերի նկատմամբ:

Վերջին առաջադեմ մեխանիզմներից մեկը գործառույթն է txMonitor. Այն հայտնվել է մուտքային գործարքներին իրական ժամանակում արձագանքելու անհրաժեշտության պատճառով։ Այս ֆունկցիան ամբողջությամբ լուծում է բլոկչեյնում գործարքների մշակման հետ կապված բոլոր նրբությունները։ Այլևս ցավ չկա, պարզապես կարգավորեք ձեր հետադարձ կապի գործառույթը ցանկալի տարբերակներով և սպասեք նոր գործարքների՝ ձեր գործընթացները սկսելու համար: Օրինակ՝ իմ մեկ այլ նախագիծ VECRO ամբողջությամբ կառուցված այս ֆունկցիայի շուրջ, դուք կարող եք հեշտությամբ ուսումնասիրել, թե ինչպես է այն աշխատում ուղղակիորեն նախագծի կոդում.

Ես սիրում եմ բաց կոդով, դա մարդկության ամենամեծ ձեռքբերումներից մեկն է: Քանի որ ես միակ ծրագրավորողն եմ և հասել եմ մի վիճակի, որտեղ իմ բոլոր կարիքները լուծված են, ես հրավիրում եմ ձեզ օգտագործել և նպաստել WavesKit.

Source: www.habr.com

Добавить комментарий