Tetszik a fejlesztési sebesség és a kiváló hordozhatóság miatt. Nagyon jó, amikor a zsebünkben mindig ott van egy eszköz, amely készen áll a feladatok megoldására.
Meglehetősen csalódott voltam, amikor megismertem a hazai blockchain-t. a repertoárjában nem volt készen álló SDK PHP-ra. Hát, meg kellett írnom.
Kezdetben használnom kellett a tranzakciók aláírásához. Így három cím kezelése érdekében három node-ot kellett futtatnom... Ez szánalmas látvány volt, bár egyes feladatokat megoldott. Egészen addig, amíg nem jöttem rá, hogy a node-okra támaszkodás zsákutca. Először is, a korlátozott funkcionalitás miatt, , másodszor pedig a sebesség miatt (akkoriban a node-ok nagyon lassúak voltak).
Két párhuzamos munkát kezdtem. Az egyik - egy blockchain böngésző készítése, amely gyors és teljesen független az API node-októl. A másik - minden funkció összegyűjtése a Waves Platform működéséhez egy helyen. Így születtek a projektek: és .
Az első lépés a Waves blockchain kulisszái mögé . Nem volt egyszerű, de végül sikerült egy független számítást végezni az összes egyenlegről, és még hibát is találtam az eredeti node-okon végzett számításokban ( amely mellesleg működik náluk, kifizetnek a megtalált hibákért). További részleteket megtalálhat a w8io böngésző funkcióiról ebben a témában:
A w8io-n végzett munka során már voltak kétségeim, de amikor a munka logikai végére érkezett, és elkezdtem az SDK elkészítését, a kétségek megerősítést nyertek. Sehol sem találtam meg bizonyos funkciókat, köztük a legfontosabbakat, a kriptográfiaiakat. Akkor kezdtem saját építőelemeket készíteni az alaphoz. Így születtek: base58 kódolásához (valójában bármely ábécé bármilyen kódolásához), a kompatibilis aláírások létrehozásához és ellenőrzéséhez (változatokkal ), az egyik hash kiszámításához (amely csak a PHP 7.2-től volt elérhető) stb.
Itt szeretném megköszönni több értékes tanácsáért, amelyek az irányomba tereltek a számomra szokásos, de elavult include fájlok helyett.
Pár hónappal később , megjelent és most készen áll a Waves platform összes standard funkciójával való munkára. Minden elérhető a A tranzakciók egyszerűen létrehozhatók, aláírhatók és küldhetők egyetlen csomag által, amely a PHP 5.6 és újabb 64-bites verzióin fut.
A WavesKit integrálása a projektbe:
composer require deemru/waveskitHasználat:
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" teszt hálózaton működik. Beállítjuk a seed frázist, amely alapján automatikusan kiszámításra kerülnek a kulcsok és a fiók címe az nyilvános kulcs alapján. Ezután létrehozunk egy 0.00000001 Waves átutalási tranzakciót a seed frázisból automatikusan kiszámított címről a "test" alias címére, aláírjuk a privát kulccsal és elküldjük a hálózatba. Ezt követően biztosítjuk, hogy a tranzakciót a hálózat sikeresen megerősítette.
A tranzakciókkal kapcsolatos tevékenységek a . A tranzakciók kezelésének jobb megértéséhez érdemes tanulmányozni a vagy azonnal megtekinteni a szemléltető példákat a .
Mivel a WavesKit valódi felhasználásra fejlesztették, már vannak fejlett funkciói. Az első killer funkció a , amely ellenőrzi a szükséges bizalom szintjének elérését, így biztosítva, hogy a tranzakció ne vesszen el, hanem éppen ellenkezőleg, megerősítést nyert és megfelelő számú megerősítést kapott a hálózatban.
Egy másik golyóálló mechanizmus az, ahogyan a WavesKit kommunikál a node-okkal. Ideális körülmények között a keretrendszer csak a fő node-dal működik, állandó kapcsolatban tartva vele, de hibák esetén automatikusan átválthat a tartalékokra. Ha tartalék node-ok tömbjét állítja be, akkor meghívhatja a funkciót a legjobb node meghatározására, mint fő, a jelenlegi magasság és válaszsebesség maximális értéke alapján. Most adja hozzá ehhez a belső kérés cache-t, és érezze a gondoskodást a felhasználók és a node-ok tulajdonosai iránt.
Az utolsó fejlett mechanizmusok egyike a Ez a funkció a valós idejű beérkező tranzakciókra való reagálás szükségességével jött létre. Ez a funkció teljes mértékben megoldja a blokklánc tranzakciók feldolgozásának minden részletét. Nincs több fájdalom, csak állítsa be a kívánt opciókkal a callback funkcióját, és várja az új tranzakciókat, amelyek elindítják a folyamatait. Például, egy másik projektem teljes mértékben erre a funkcióra épül, nyugodtan megismerheti, hogyan működik közvetlenül .
Szeretem az open source-t, ez az emberiség egyik legnagyobb vívmánya. Mivel egyedüli fejlesztő vagyok, és elértem azt az állapotot, hogy minden szükségem megoldódott, invitállak titeket, hogy használjátok és járuljatok hozzá .
Forrás: habr.com
