Mám rád 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 ve svém arzenálu neměl připravené SDK na PHP. No, musel jsem ho napsat.
Na začátku jsem musel používat 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 , 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 a .
Prvním krokem na cestě za kulisy blockchainu Waves byl . 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 ( , mimochodem, u nich funguje, za nalezené chyby platí). Můžete se podívat na funkce prohlížeče w8io v tomto tématu:
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: pro kódování do base58 (ve skutečnosti pro kódování jakékoli abecedy do jakékoli), pro vytváření a ověřování kompatibilních podpisů (s variantami ), pro výpočet jednoho z hashů (který byl dostupný až od PHP 7.2) atd.
Tady bych měl poděkovat za několik cenných rad, které mě nasměrovaly k namísto mně známých, ale zastaralých, include souborů.
Po několika měsících , vyšel z a nyní je připraven pracovat se všemi standardními funkcemi platformy Waves. Vše dostupné v 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/waveskitPouží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 . Pro lepší pochopení práce s transakcemi můžete studovat nebo se hned podívat na názorné příklady v .
Jelikož se WavesKit vyvíjela v podmínkách reálného použití, má již pokročilé funkce. První killer feature je , 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 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 . 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. je zcela postaven kolem této funkce, můžete si v klidu prozkoumat, jak funguje přímo .
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 .
Zdroj: habr.com
