WavesKit - Waves блокчейнтэй ажиллах PHP хүрээ

Мне нравится PHP хөгжлийн хурд, маш сайн зөөврийн хувьд. Асуудлыг шийдэхэд бэлэн багаж халаасандаа байх нь маш сайн хэрэг.

Дотоодын блокчэйнтэй танилцахдаа үнэхээр ичмээр байсан Waves платформ Түүний зэвсэглэлд бэлэн 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 руу кодлох (үнэндээ ямар ч цагаан толгойг аль нэгэнд кодлох), Муруй25519 нийцтэй гарын үсэг үүсгэх, баталгаажуулах (сонголтуудтай стероидууд дээр), Блэйк2б хэшүүдийн аль нэгийг тооцоолох (энэ нь зөвхөн PHP 7.2-с хойш боломжтой байсан) гэх мэт.

Энд би талархах ёстой Инала Карданова намайг чиглүүлсэн үнэ цэнэтэй зөвлөгөөг авлаа хөгжмийн зохиолч оруулах файлын оронд надад танил мөртлөө хуучирсан.

Хэдэн сарын дараа WavesKit гарсан, гарч ирсэн бета хувилбарууд одоо Waves платформын бүх стандарт функцтэй ажиллахад бэлэн боллоо. Бүгдийг нь авах боломжтой үндсэн сүлжээ 64-аас эхлээд PHP-ийн 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

сэтгэгдэл нэмэх