WavesKit - Waves блокчейнімен жұмыс істеуге арналған PHP құрылымы

Маған ұнайды PHP даму жылдамдығы мен тамаша тасымалдануы үшін. Мәселелерді шешуге дайын құрал әрқашан қалтаңызда болса, бұл өте жақсы.

Отандық блокчейнмен танысу өте ұят болды Толқындар платформасы оның арсеналында дайын PHP SDK болған жоқ. Жарайды, мен жазуым керек еді.

Басында қолдануға тура келді түйіндер транзакцияларға қол қою. Сонымен, үш мекенжайды басқару үшін үш түйінді іске қосу керек болды... Бұл кейбір мәселелерді шешкенімен, аянышты көрініс болды. Түйіндерге сүйену тұйыққа тірелетінін түсінгенге дейін. Біріншіден, шектеулі функционалдылыққа байланысты API, екіншіден, жылдамдыққа байланысты (ол күндері түйіндер өте баяу болатын).

Мен екі параллель жұмысты бастадым. Олардың бірі - API түйінінен жылдам және толығымен тәуелсіз болатын блокчейн зерттеушісін жасау. Екіншісі - Waves платформасымен жұмыс істеуге арналған барлық функцияларды бір жерде жинау. Осылайша жобалар пайда болды w8io и WavesKit.

Waves блокчейнінің сахнасының артындағы алғашқы қадам болды w8io шолғышы. Бұл оңай болған жоқ, бірақ біз әлі де барлық баланстардың тәуелсіз есебін жазып, тіпті бастапқы түйіндердегі есептеулерде қате таба алдық (қате сыйақы бағдарламасы Айтпақшы, бұл олар үшін жұмыс істейді, олар табылған қателер үшін төлейді). Осы тақырыпта 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 );

Жоғарыдағы мысалда біз «T» сынақ желісінде жұмыс істейтін WavesKit нысанын жасаймыз. Біз негізгі фразаны орнатамыз, одан кілттер мен тіркелгі мекенжайы ашық кілт негізінде автоматты түрде есептеледі. Әрі қарай, біз «тест» бүркеншік ат адресіне тұқымдық фразаны пайдаланып автоматты түрде есептелетін мекенжайдан 0.00000001 Waves аудару транзакциясын жасаймыз, оны жабық кілтпен қол қоюға жібереміз және желіге жібереміз. Осыдан кейін транзакцияның желі арқылы сәтті расталғанына көз жеткіземіз.

Транзакциялармен жұмыс шоғырланған tx-тен басталатын функциялар. Транзакциялармен жұмыс істеуді жақсы түсіну үшін оқуға болады WavesKit құжаттамасы немесе бірден көрнекі мысалдарға жүгініңіз үздіксіз интеграциялық сынақтар.

WavesKit нақты әлемде қолданылғандықтан, оның жетілдірілген мүмкіндіктері бар. Бірінші өлтіруші ерекшелігі функциясын қамтамасыз ету, ол транзакцияның жоғалмағаны, керісінше, расталған және желідегі растаулардың қажетті санына жеткен сенімділіктің қажетті деңгейіне қол жеткізуді бақылайды.

Тағы бір оқ өткізбейтін механизм - WavesKit-тің түйіндермен байланысы. Жылыжай жағдайында рамка тек негізгі түйінмен жұмыс істейді, онымен тұрақты байланысты сақтайды, бірақ қателер туындаған жағдайда ол автоматты түрде резервтік көшірмелерге ауыса алады. Сақтық көшірме түйіндерінің жиынын орнатсаңыз, функцияны шақыруға болады setBestNode ағымдағы биіктік пен жауап беру жылдамдығының максималды мәніне негізделген ең жақсы түйінді негізгі ретінде анықтау. Енді бұған ішкі сұрау кэшін қосыңыз және пайдаланушыларға да, түйін иелеріне де қамқорлық жасаңыз.

Соңғы жетілдірілген механизмдердің бірі - функция txMonitor. Ол нақты уақытта кіріс транзакцияларына жауап беру қажеттілігіне байланысты пайда болды. Бұл функция блокчейндегі транзакцияларды өңдеуге байланысты барлық нюанстарды толығымен шешеді. Енді ауыртпалық болмайды, қажетті опциялармен кері шақыру функциясын орнатыңыз және процестеріңізді бастау үшін жаңа транзакцияларды күтіңіз. Мысалы, менің тағы бір жобам VECRO толығымен осы функцияның айналасында құрылған, сіз оның қалай жұмыс істейтінін оңай зерттей аласыз жоба кодында.

Мен ашық көзді жақсы көремін, бұл адамзаттың ең үлкен жетістіктерінің бірі. Мен жалғыз әзірлеуші ​​болғандықтан және менің барлық қажеттіліктерім шешілетін күйге жеткендіктен, мен сізді пайдалануға және үлес қосуға шақырамын. WavesKit.

Ақпарат көзі: www.habr.com

пікір қалдыру