WavesKit - qafas PHP għall-ħidma mal-blockchain Waves

Мне нравится PHP għall-veloċità ta 'żvilupp u portabbiltà eċċellenti. Huwa tajjeb ħafna meta dejjem ikollok għodda fil-but, lesta biex issolvi l-problemi.

Kien pjuttost mistħija meta, meta ssir familjari mal-blockchain domestiku Waves Pjattaforma ma kellux SDK PHP lest fl-armament tiegħu. Ukoll, kelli niktebha.

Għall-ewwel kelli nuża nodi biex jiffirma transazzjonijiet. Allura, biex tmexxi tliet indirizzi kien meħtieġ li jitniedu tliet nodi ... Kienet vista pitiful, għalkemm issolviet xi problemi. Sakemm wasal il-fehim li sserraħ fuq l-għoqiedi kien tmiem mejta. L-ewwelnett, minħabba l-funzjonalità limitata API, it-tieni, minħabba l-veloċità (in-nodi kienu bil-mod ħafna f'dawk il-jiem).

Bdejt żewġ xogħlijiet paralleli. Waħda hija li tagħmel blockchain explorer li se jkun mgħaġġel u kompletament indipendenti mill-API node. It-tieni huwa li tiġbor il-funzjonijiet kollha biex taħdem mal-Pjattaforma Waves f'post wieħed. Hekk dehru l-proġetti w8io и WavesKit.

L-ewwel pass wara l-kwinti tal-blockchain Waves kien browser w8io. Ma kienx faċli, iżda xorta rnexxielna niktbu kalkolu indipendenti tal-bilanċi kollha u anke nsibu żball fil-kalkoli fuq in-nodi oriġinali (programm bug-bounty Mill-mod, taħdem għalihom, huma jħallsu għall-iżbalji misjuba). Tista' titgħallem aktar dwar il-funzjonalità tal-browser w8io f'dan is-suġġett: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Waqt li kont qed naħdem fuq w8io, diġà kelli dubji, iżda meta x-xogħol wasal fit-tmiem loġiku tiegħu u bdejt noħloq l-SDK, id-dubji tiegħi ġew ikkonfermati. Ma stajt insib xi funzjonijiet imkien, inklużi l-aktar importanti, dawk kriptografiċi. Imbagħad bdejt billi nagħmel il-briks tiegħi stess għall-pedament. Hekk twieldu: ABCode biex tikkodifika għal base58 (fil-fatt biex tikkodifika kwalunkwe alfabett għal kwalunkwe), Curve25519 biex toħloq u tivverifika firem kompatibbli (b'għażliet fuq sterojdi), Blake2b biex tikkalkula waħda mill-hashes (li kienet disponibbli biss minn PHP 7.2), eċċ.

Dan huwa fejn irrid nirringrazzja Inala Kardanova għal xi pariri siewja li indikawni fid-direzzjoni kompożitur minflok il-fajls jinkludu li huma familjari għalija, iżda skaduti.

Wara ftit xhur WavesKit ġie rilaxxat, ħareġ verżjonijiet beta u issa hija lesta biex taħdem mal-funzjonalità standard kollha tal-pjattaforma Waves. Kollha disponibbli fi netwerk ewlieni transazzjonijiet jistgħu jinħolqu, iffirmati u jintbagħtu faċilment bl-użu ta' pakkett wieħed biss, li jaħdem fuq il-verżjonijiet kollha ta' 64-bit ta' PHP minn 5.6 inkluż.

Aħna ngħaqqdu WavesKit mal-proġett tagħna:

composer require deemru/waveskit

Aħna nużaw:

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

Fl-eżempju ta 'hawn fuq, noħolqu oġġett WavesKit li jaħdem fuq it-testnet "T". Aħna ninstallaw frażi taż-żerriegħa li minnha ċ-ċwievet u l-indirizz tal-kont jiġu kkalkulati awtomatikament abbażi taċ-ċavetta pubblika. Sussegwentement, noħolqu tranżazzjoni ta 'trasferiment 0.00000001 Waves mill-indirizz awtomatikament ikkalkulat bl-użu tal-frażi taż-żerriegħa għall-indirizz alias "test", ittrasferiha biex tiġi ffirmata b'ċavetta privata u tibgħatha lin-netwerk. Wara dan, aħna niżguraw li t-tranżazzjoni tkun ikkonfermata b'suċċess min-netwerk.

Ix-xogħol mat-tranżazzjonijiet huwa kkonċentrat fi funzjonijiet li jibdew bit-tx. Għal fehim aħjar tal-ħidma mat-tranżazzjonijiet, tista 'tistudja Dokumentazzjoni WavesKit jew immedjatament idur għal eżempji illustrattivi fi testijiet ta' integrazzjoni kontinwi.

Peress li WavesKit ġie żviluppat fl-użu fid-dinja reali, diġà għandu karatteristiċi avvanzati. L-ewwel karatteristika qattiel hija tiżgura l-funzjoni, li tikkontrolla l-kisba tal-livell meħtieġ ta 'kunfidenza li t-tranżazzjoni ma ntilfitx, iżda, għall-kuntrarju, ġiet ikkonfermata u laħqet in-numru meħtieġ ta' konfermi fin-netwerk.

Mekkaniżmu ieħor kontra l-balal huwa kif WavesKit jikkomunika man-nodi. F'kundizzjonijiet ta 'serra, il-qafas jaħdem biss man-nodu prinċipali, u jżomm konnessjoni kostanti miegħu, iżda f'każ ta' żbalji jista 'awtomatikament jaqleb għal dawk ta' backup. Jekk twaqqaf firxa ta 'nodi backup, tista' ċċempel il-funzjoni setBestNode biex tiddetermina l-aħjar node bħala dak ewlieni bbażat fuq il-valur massimu tal-għoli attwali u l-veloċità tar-rispons. Issa żid ma 'dan cache ta' mistoqsija interna u tħossok imħasseb kemm għall-utenti kif ukoll għas-sidien tan-nodi.

Wieħed mill-aħħar mekkaniżmi avvanzati huwa l-funzjoni txMonitor. Deher minħabba l-ħtieġa li tirrispondi għal tranżazzjonijiet deħlin f'ħin reali. Din il-funzjoni ssolvi kompletament l-isfumaturi kollha assoċjati mal-ipproċessar ta 'tranżazzjonijiet fil-blockchain. Ebda aktar uġigħ, waqqaf biss il-funzjoni ta 'callback tiegħek bl-għażliet mixtieqa u stenna għal transazzjonijiet ġodda biex jibdew il-proċessi tiegħek. Per eżempju, proġett ieħor tiegħi VECRO mibnija kompletament madwar din il-funzjoni, tista 'faċilment tistudja kif taħdem direttament fil-kodiċi tal-proġett.

Inħobb is-sors miftuħ, hija waħda mill-akbar kisbiet tal-umanità. Peress li jien l-uniku żviluppatur u lħaqt stat fejn il-bżonnijiet kollha tiegħi huma solvuti, nistedinkom tuża u tikkontribwixxi għal WavesKit.

Sors: www.habr.com

Żid kumment