WavesKit — PHP framework pro práci s blockchainem Waves

Mám rád PHP za rychlost vývoje a vynikající přenositelnost. Je to velmi užitečné, když máte vždy po ruce nástroj připravený k řešení úkolů.

Bylo docela zklamáním, když při seznamování s domácím blockchainem Waves Platform ve svém arzenálu neměl připravené SDK na PHP. No, musel jsem ho napsat.

Na začátku jsem musel používat nody k podepisování transakcí. Takže pro správu tří adres bylo nutné spustit tři uzly… To bylo zoufalé, i když to řešilo některé úkoly. Až do chvíle, kdy jsem pochopil, že spoléhat na uzly je bezvýchodná situace. Za prvé, kvůli omezené funkčnosti API, za druhé, kvůli rychlosti (v těch dnech byly uzly velmi pomalé).

Začal jsem dvě paralelní práce. Jedna – vytvořit blockchainový prohlížeč, který bude rychlý a zcela nezávislý na API uzlů. Druhá – shromáždit všechny funkce pro práci s Waves Platform na jednom místě. Tak vznikly projekty w8io a WavesKit.

Prvním krokem na cestě za kulisy blockchainu Waves byl prohlížeč w8io. Nebylo to snadné, ale přesto se mi podařilo napsat nezávislý výpočet všech zůstatků a dokonce najít chybu v výpočtech na originálních uzlech (program bug-bounty , mimochodem, u nich funguje, za nalezené chyby platí). Můžete se podívat na funkce prohlížeče w8io v tomto tématu: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Během práce na w8io jsem měl už pochybnosti, ale když práce dospěla k logickému konci a já začal tvořit SDK, pochybnosti se potvrdily. Nikde jsem nemohl najít některé funkce, včetně těch nejdůležitějších, kryptografických. Tehdy jsem začal vytvářet své vlastní komponenty pro základ. Tak se zrodily: ABCode pro kódování do base58 (ve skutečnosti pro kódování jakékoli abecedy do jakékoli), Curve25519 pro vytváření a ověřování kompatibilních podpisů (s variantami na steroidy), Blake2b pro výpočet jednoho z hashů (který byl dostupný až od PHP 7.2) atd.

Tady bych měl poděkovat Inalovi Kardanovovi za několik cenných rad, které mě nasměrovaly k composer namísto mně známých, ale zastaralých, include souborů.

Po několika měsících WavesKit spatřil světlo světa, vyšel z beta verze a nyní je připraven pracovat se všemi standardními funkcemi platformy Waves. Vše dostupné v hlavní síti Transakce mohou být snadno vytvářeny, podepisovány a odesílány pomocí jediného balíčku fungujícího na všech 64bitových verzích PHP od 5.6 včetně.

Připojte WavesKit do svého projektu:

composer require deemru/waveskit

Používáme:

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

V příkladu výše vytváříme objekt WavesKit, který funguje v testovací síti "T". Nastavujeme seed frázi, na jejímž základě se automaticky vypočítávají klíče a adresa účtu na základě veřejného klíče. Dále vytváříme transakci převodu 0.00000001 Waves z adresy automaticky vypočítané podle seed fráze na adresu aliasu "test", podepisujeme ji pomocí soukromého klíče a odesíláme do sítě. Poté se ujistíme, že byla transakce úspěšně potvrzena sítí.

Práce s transakcemi se soustředí na funkce začínající s tx. Pro lepší pochopení práce s transakcemi můžete studovat dokumentaci WavesKit nebo se hned podívat na názorné příklady v testech kontinuální integrace..

Jelikož se WavesKit vyvíjela v podmínkách reálného použití, má již pokročilé funkce. První killer feature je funkce ensure, která kontroluje dosažení požadované úrovně jistoty, že transakce nebyla ztracena, ale naopak byla potvrzena a dosáhla potřebného počtu potvrzení v síti.

Další neprůstřelný mechanismus je, jak WavesKit komunikuje s nodami. V ideálních podmínkách rámec pracuje pouze s hlavní nodou, s níž udržuje trvalé spojení, ale při chybách může automaticky přepínat na záložní. Pokud nastavíte pole záložních nodů, můžete volat funkci setBestNode pro určení nejlepší nody jako hlavní na základě maximální hodnoty aktuální výšky a rychlosti odpovědi. Nyní k tomu přidejte interní cache dotazů a pocítíte péči jak o uživatele, tak o vlastníky nodů.

Jedním z posledních pokročilých mechanismů je funkce txMonitor. Objevila se v souvislosti s potřebou reagovat na příchozí transakce v reálném čase. Tato funkce plně řeší všechny nuance spojené se zpracováním transakcí v blockchainu. Žádná bolest, jednoduše nastavíte svou callback funkci s požadovanými možnostmi a čekáte na nové transakce, které spustí vaše procesy. Například, další můj projekt. VECRO je zcela postaven kolem této funkce, můžete si v klidu prozkoumat, jak funguje přímo ve zdrojovém kódu projektu..

Miluji open source, to je jedno z největších úspěchů lidstva. Protože jsem jediný vývojář a dosáhl jsem stavu, kdy jsou všechny mé potřeby vyřešeny, zvu vás, abyste používali a přispívali do WavesKit.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster