WavesKit – PHP keretrendszer a Waves blokklánccal való együttműködéshez

Мне нравится PHP a fejlődés gyorsaságáért és a kiváló hordozhatóságért. Nagyon jó, ha mindig van egy eszköz a zsebében, készen áll a problémák megoldására.

Nagy kár volt, amikor megismerkedtem a hazai blokklánccal Waves platform nem volt kész PHP SDK az arzenáljában. Nos, meg kellett írnom.

Eleinte használnom kellett csomópontok tranzakciók aláírására. Tehát három cím kezeléséhez három csomópontot kellett elindítani... Szánalmas látvány volt, bár megoldott néhány problémát. Egészen addig, amíg meg nem értette, hogy a csomópontokra támaszkodva zsákutca. Először is, a korlátozott funkcionalitás miatt API, másodszor a sebesség miatt (a csomópontok akkoriban nagyon lassúak voltak).

Két párhuzamos munkába kezdtem. Az egyik, hogy készítsünk egy blokklánc-felfedezőt, amely gyors és teljesen független lesz a csomópont API-tól. A második az, hogy a Waves Platformmal való munkavégzéshez szükséges összes funkciót egy helyen gyűjtsük össze. Így jelentek meg a projektek w8io и WavesKit.

Az első lépés a Waves blokklánc színfalai mögött az volt w8io böngésző. Nem volt könnyű, de így is sikerült független számítást írnunk az összes egyenlegről, és még hibát is találtunk a számításokban az eredeti csomópontokon (bug-bounty program Egyébként náluk működik, fizetnek a talált hibákért). A w8io böngésző funkcióiról ebben a témakörben tudhat meg többet: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

A w8io-n dolgozva már voltak kétségeim, de amikor a munka a logikus végéhez ért, és elkezdtem létrehozni az SDK-t, kétségeim beigazolódtak. Néhány funkciót nem találtam sehol, köztük a legfontosabbakat, a kriptográfiaiakat. Aztán azzal kezdtem, hogy saját téglákat készítettem az alapozáshoz. Így születtek: ABCode a base58 kódoláshoz (valójában bármilyen ábécé kódolása bármelyikhez), Curve25519 kompatibilis aláírások létrehozásához és ellenőrzéséhez (opciókkal szteroidokon), Blake2b az egyik hash kiszámításához (ami csak a PHP 7.2 óta volt elérhető), stb.

Itt kell köszönetet mondanom Inala Kardanova néhány értékes tanácsért, amelyek az irányba mutattak zeneszerző a számomra ismerős, de elavult include fájlok helyett.

Pár hónap után Megjelent a WavesKit, kijött béta verziók és készen áll a Waves platform összes szabványos funkciójával való együttműködésre. Minden elérhető fő hálózat A tranzakciók egyszerűen létrehozhatók, aláírhatók és elküldhetők egyetlen csomag használatával, amely a PHP összes 64 bites verzióján fut 5.6-tól kezdve.

A WavesKitet a projektünkhöz kapcsoljuk:

composer require deemru/waveskit

Használjuk:

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

A fenti példában létrehozunk egy WavesKit objektumot, amely a „T” teszthálózaton fut. Telepítünk egy kezdő kifejezést, amelyből a kulcsok és a fiók címe automatikusan kiszámításra kerül a nyilvános kulcs alapján. Ezután létrehozunk egy 0.00000001 Waves átviteli tranzakciót az automatikusan kiszámolt címből a seed kifejezéssel a „teszt” alias címre, átvisszük privát kulccsal aláírandó és elküldjük a hálózatnak. Ezt követően meggyőződünk arról, hogy a tranzakciót a hálózat sikeresen visszaigazolta.

A tranzakciókkal végzett munka koncentrálódik tx-szel kezdődő függvények. A tranzakciókkal való munka jobb megértéséhez tanulmányozhatja WavesKit dokumentáció vagy azonnal lapozzon a szemléltető példákhoz folyamatos integrációs tesztek.

Mivel a WavesKit valós használatra készült, már rendelkezik fejlett funkciókkal. Az első gyilkos funkció az biztosítja a működést, amely ellenőrzi a szükséges szintű bizalom elérését, hogy a tranzakció nem veszett el, hanem éppen ellenkezőleg, megerősítették, és elérte a szükséges számú megerősítést a hálózatban.

Egy másik golyóálló mechanizmus az, hogy a WavesKit hogyan kommunikál a csomópontokkal. Üvegházi körülmények között a keretrendszer csak a fő csomóponttal működik, állandó kapcsolatot tart fenn vele, de hiba esetén automatikusan át tud váltani tartalékra. Ha biztonsági mentési csomópontok tömbjét állítja be, meghívhatja a függvényt setBestNode hogy az aktuális magasság és válaszsebesség maximális értéke alapján a legjobb csomópontot határozzuk meg főként. Most adjon hozzá egy belső lekérdezési gyorsítótárat, és érezze, hogy gondoskodnak a felhasználókról és a csomópontok tulajdonosairól.

Az egyik legújabb fejlett mechanizmus a funkció txMonitor. Ez azért jelent meg, mert a bejövő tranzakciókra valós időben kellett válaszolni. Ez a funkció teljesen megoldja a blokklánc tranzakcióinak feldolgozásával kapcsolatos összes árnyalatot. Nincs több fájdalom, csak állítsa be a visszahívási funkciót a kívánt opciókkal, és várja meg, amíg az új tranzakciók elindítják a folyamatokat. Például egy másik projektem VECRO teljesen e funkció köré épül, könnyen tanulmányozhatja, hogyan működik közvetlenül a projekt kódjában.

Szeretem a nyílt forráskódot, ez az emberiség egyik legnagyobb vívmánya. Mivel én vagyok az egyetlen fejlesztő, és elértem azt az állapotot, amikor minden igényem megoldott, arra kérem Önt, hogy használja és járuljon hozzá WavesKit.

Forrás: will.com

Hozzászólás