Jag gillar utvecklingshastigheten och den utmÀrkta bÀrbarheten. Det Àr vÀldigt bra nÀr man alltid har ett verktyg redo för att lösa uppgifter.
Det var ganska frustrerande nÀr jag bekantade mig med den inhemska blockkedjan och i dess arsenal fanns det ingen fÀrdig SDK för PHP. NÄvÀl, jag var tvungen att skriva en.
I början var jag tvungen att anvÀnda för att signera transaktioner. SÄledes, för att hantera tre adresser var jag tvungen att köra tre noder... Det var en sorglig syn, Àven om det löste vissa uppgifter. Tills jag insÄg att förlita sig pÄ noder Àr en ÄtervÀndsgrÀnd. För det första pÄ grund av den begrÀnsade funktionaliteten , för det andra pÄ grund av hastigheten (pÄ den tiden var noderna vÀldigt lÄngsamma).
Jag började tvÄ parallella projekt. Det ena var att skapa en blockkedjeutforskare som skulle vara snabb och helt oberoende av API:er frÄn noder. Det andra var att samla alla funktioner som behövs för att arbeta med Waves Plattform pÄ ett stÀlle. SÄ föddes projekten och .
Det första steget bakom kulisserna av Waves blockkedjan blev . Det var inte enkelt, men jag lyckades ÀndÄ skriva en oberoende berÀkning av alla saldon och till och med hitta ett fel i berÀkningarna pÄ de ursprungliga noderna ( förresten har de, de betalar för hittade fel). Du kan studera funktionerna hos w8io utforskaren mer i den hÀr trÄden:
Under arbetet med w8io hade jag redan tvekan, men nÀr arbetet kom till ett logiskt slut och jag började skapa SDK:n, bekrÀftades tvekan. Jag kunde inte hitta vissa funktioner nÄgonstans, inklusive de mest viktiga, kryptografiska. DÄ började jag skapa mina egna byggblock för grunden. SÄ föddes: för kodning till base58 (egentligen för kodning av vilket alfabet som helst till vilket som helst), för att skapa och verifiera kompatibla signaturer (med varianter ), för att berÀkna en av hasharna (som endast var tillgÀnglig frÄn och med PHP 7.2) och sÄ vidare.
HÀr mÄste jag tacka för nÄgra vÀrdefulla rÄd som ledde mig mot istÀllet för de gamla, men utdaterade, include-filerna.
Efter ett par mÄnader , gick ut frÄn och Àr nu redo att arbeta med all standardfunktionalitet pÄ Waves plattformen. Allt som finns tillgÀngligt i Transaktioner kan enkelt skapas, signeras och skickas av endast ett paket som fungerar pÄ alla 64-bitarsversioner av PHP frÄn och med 5.6.
Koppla in WavesKit i ditt projekt:
composer require deemru/waveskitAnvÀnd:
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 );I exemplet ovan skapar vi ett WavesKit-objekt som arbetar i testnÀtverket "T". Vi sÀtter frasen för seed, frÄn vilken nycklar och kontots adress berÀknas automatiskt baserat pÄ den offentliga nyckeln. DÀrefter skapar vi en transaktion för överföring av 0.00000001 Waves frÄn den automatiskt berÀknade adressen baserat pÄ seedfrasen till aliasadressen "test", skickar den för signering med den privata nyckeln och skickar den sedan till nÀtverket. Efter detta sÀkerstÀller vi att transaktionen bekrÀftas framgÄngsrikt av nÀtverket.
Arbetet med transaktioner Àr koncentrerat i . För att bÀttre förstÄ arbetet med transaktioner kan du studera eller genast gÄ till de tydliga exemplen i .
Eftersom WavesKit har utvecklats under verkliga anvÀndningsförhÄllanden har den redan fÄtt avancerade funktioner. Den första killerfunktionen Àr , som kontrollerar att den nödvÀndiga nivÄn av sÀkerhet uppnÄs, vilket betyder att transaktionen inte har förlorats, utan istÀllet har bekrÀftats och nÄtt det erforderliga antalet bekrÀftelser i nÀtverket.
En annan kugghjulsskyddad mekanism Àr hur WavesKit kommunicerar med noder. Under kontrollerade förhÄllanden arbetar ramverket endast med den primÀra noden, vilket upprÀtthÄller en stÀndig förbindelse med den, men vid fel kan det automatiskt vÀxla till reservnoder. Om du stÀller in en array av reservnoder kan du kalla funktionen för att bestÀmma den bÀsta noden som primÀr baserat pÄ det maximala vÀrdet av den aktuella höjden och svarstiden. LÀgg nu till detta det interna cache-systemet för förfrÄgningar och kÀnn omsorgen bÄde om anvÀndarna och noderna.
En av de senaste avancerade mekanismerna Àr funktionen . Den uppkom pÄ grund av behovet att reagera pÄ inkommande transaktioner i realtid. Denna funktion löser helt alla aspekter kopplade till behandling av transaktioner i blockkedjan. Ingen mer smÀrta, du installerar enkelt din callback-funktion med önskade alternativ och vÀntar pÄ nya transaktioner som kommer att starta dina processer. Till exempel ett annat av mina projekt Àr helt byggt kring denna funktion, du kan lugnt studera hur den fungerar direkt .
Jag Àlskar öppen kÀllkod, det Àr en av mÀnsklighetens största prestationer. Eftersom jag Àr den enda utvecklaren och har nÄtt en punkt dÀr alla mina behov Àr lösta, inbjuder jag dig att anvÀnda och bidra till .
KĂ€lla: habr.com
