WavesKit - Waves blokcheyn bilan ishlash uchun PHP ramkasi

Menga yoqadi PHP rivojlanish tezligi va mukammal portativlik uchun. Har doim cho'ntagingizda muammolarni hal qilishga tayyor vosita bo'lsa, bu juda yaxshi.

Mahalliy blokcheyn bilan tanishish juda achinarli edi To'lqinlar platformasi uning arsenalida tayyor PHP SDK yo'q edi. Xo'sh, men yozishim kerak edi.

Avvaliga foydalanishim kerak edi tugunlar bitimlarni imzolash. Shunday qilib, uchta manzilni boshqarish uchun uchta tugunni ishga tushirish kerak edi ... Garchi bu ba'zi muammolarni hal qilgan bo'lsa-da, achinarli ko'rinish edi. Tugunlarga tayanish boshi berk ko'cha ekanligini anglab yetgunga qadar. Birinchidan, cheklangan funksionallik tufayli API, ikkinchidan, tezlik tufayli (tugunlar o'sha kunlarda juda sekin edi).

Men ikkita parallel ish boshladim. Ulardan biri tez va tugun API-dan butunlay mustaqil bo'ladigan blokcheyn tadqiqotchisini yaratishdir. Ikkinchisi - To'lqinlar platformasi bilan ishlash uchun barcha funktsiyalarni bir joyda to'plash. Shunday qilib loyihalar paydo bo'ldi w8io ΠΈ WavesKit.

Waves blokcheynining sahnalari ortidagi birinchi qadam bo'ldi w8io brauzeri. Bu oson emas edi, lekin biz hali ham barcha balanslarning mustaqil hisobini yozishga muvaffaq bo'ldik va hatto asl tugunlarda hisob-kitoblarda xato topdik (bug-bounty dasturi Aytgancha, bu ular uchun ishlaydi, ular topilgan xatolar uchun to'laydilar). Ushbu mavzuda w8io brauzerining funksionalligi haqida ko'proq bilib olishingiz mumkin: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

W8io ustida ishlayotganimda, menda allaqachon shubhalar bor edi, lekin ish mantiqiy yakuniga etganida va men SDK ni yaratishni boshlaganimda, shubhalarim tasdiqlandi. Men ba'zi funktsiyalarni, jumladan, eng muhimlarini, kriptografiklarini hech qaerda topa olmadim. Keyin poydevor uchun o'zim g'isht yasashni boshladim. Ular shunday tug'ilgan: ABCode base58 ga kodlash (aslida istalgan alifboni istalganiga kodlash uchun), Curve25519 Mos imzolarni yaratish va tekshirish uchun (variantlar bilan steroidlarda), Bleyk2b xeshlardan birini hisoblash uchun (faqat PHP 7.2 da mavjud edi) va hokazo.

Bu erda rahmat aytishim kerak Inala Kardanova meni yo'nalishga ko'rsatgan qimmatli maslahatlar uchun Kompozitor o'rniga menga tanish bo'lgan, lekin eskirgan fayllarni kiriting.

Bir necha oydan keyin WavesKit chiqarildi, chiqdi beta versiyalari va endi Waves platformasining barcha standart funksiyalari bilan ishlashga tayyor. Hammasi mavjud asosiy tarmoq PHP ning 64 dan boshlab barcha 5.6-bitli versiyalarida ishlaydigan bitta paket yordamida tranzaksiyalarni osongina yaratish, imzolash va yuborish mumkin.

Biz WavesKit-ni loyihamizga ulaymiz:

composer require deemru/waveskit

Biz foydalanamiz:

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

Yuqoridagi misolda biz "T" test tarmog'ida ishlaydigan WavesKit ob'ektini yaratamiz. Biz kalit iborani o'rnatamiz, undan kalitlar va hisob manzili ochiq kalit asosida avtomatik ravishda hisoblanadi. Keyinchalik, biz "test" taxallus manziliga urug 'iborasi yordamida avtomatik ravishda hisoblangan manzildan 0.00000001 Waves transfer operatsiyasini yaratamiz, uni shaxsiy kalit bilan imzolash uchun o'tkazamiz va tarmoqqa yuboramiz. Shundan so'ng biz tranzaksiya tarmoq tomonidan muvaffaqiyatli tasdiqlanganligiga ishonch hosil qilamiz.

Tranzaktsiyalar bilan ishlashda jamlangan tx dan boshlanadigan funktsiyalar. Tranzaktsiyalar bilan ishlashni yaxshiroq tushunish uchun siz o'rganishingiz mumkin WavesKit hujjatlari yoki darhol tasviriy misollarga murojaat qiling uzluksiz integratsiya testlari.

WavesKit real hayotda ishlab chiqilganligi sababli, u allaqachon rivojlangan xususiyatlarga ega. Birinchi qotillik xususiyati funktsiyasini ta'minlash, tranzaktsiya yo'qolmaganligi, aksincha, tasdiqlanganligi va tarmoqdagi kerakli tasdiqlar soniga erishilganligi haqidagi kerakli ishonch darajasiga erishishni nazorat qiladi.

Yana bir o'q o'tkazmaydigan mexanizm - bu WavesKitning tugunlar bilan qanday bog'lanishi. Issiqxona sharoitida ramka faqat asosiy tugun bilan ishlaydi, u bilan doimiy aloqani saqlaydi, ammo xatolar bo'lsa, u avtomatik ravishda zaxiraga o'tishi mumkin. Agar siz zaxira tugunlari qatorini o'rnatsangiz, funktsiyani chaqirishingiz mumkin setBestNode joriy balandlik va javob tezligining maksimal qiymatiga asoslanib, eng yaxshi tugunni asosiy sifatida aniqlash. Endi bunga ichki so'rovlar keshini qo'shing va foydalanuvchilar va tugun egalariga g'amxo'rlik qiling.

Eng yangi ilg'or mexanizmlardan biri bu funksiyadir txMonitor. Bu real vaqt rejimida kiruvchi tranzaktsiyalarga javob berish zarurati tufayli paydo bo'ldi. Ushbu funktsiya blokcheyndagi tranzaktsiyalarni qayta ishlash bilan bog'liq barcha nuanslarni to'liq hal qiladi. Endi og'riq yo'q, faqat kerakli variantlar bilan qayta qo'ng'iroq qilish funksiyangizni sozlang va jarayonlarni boshlash uchun yangi tranzaktsiyalarni kuting. Masalan, mening boshqa loyiham VECRO Ushbu funktsiya atrofida to'liq qurilgan, siz uning qanday ishlashini osongina o'rganishingiz mumkin loyiha kodida.

Men ochiq manbani yaxshi ko'raman, bu insoniyatning eng katta yutuqlaridan biridir. Men yagona ishlab chiquvchiman va mening barcha ehtiyojlarim hal qilinadigan holatga kelganim uchun, sizni foydalanishga va hissa qo'shishga taklif qilaman. WavesKit.

Manba: www.habr.com

a Izoh qo'shish