WavesKit - PHP-ramverk för att arbeta med Waves blockchain

Мне нравится PHP för snabb utveckling och utmärkt bärbarhet. Det är väldigt bra när man alltid har ett verktyg i fickan, redo att lösa problem.

Det var ganska synd när man bekantade sig med den inhemska blockkedjan Vågplattform han hade inte en färdig PHP SDK i sin arsenal. Nåväl, jag var tvungen att skriva det.

Först var jag tvungen att använda knutpunkter att underteckna transaktioner. Så för att hantera tre adresser var det nödvändigt att starta tre noder... Det var en ynklig syn, även om det löste vissa problem. Tills insikten kom att förlita sig på noder var en återvändsgränd. För det första på grund av begränsad funktionalitet API, för det andra på grund av hastigheten (noder var mycket långsamma på den tiden).

Jag började på två parallella jobb. En är att göra en blockchain explorer som kommer att vara snabb och helt oberoende av nod-API. Det andra är att samla alla funktioner för att arbeta med Waves-plattformen på ett ställe. Så här såg projekten ut w8io и WavesKit.

Det första steget bakom kulisserna i Waves blockchain var w8io webbläsare. Det var inte lätt, men vi lyckades ändå skriva en oberoende beräkning av alla saldon och till och med hitta ett fel i beräkningarna på de ursprungliga noderna (bug-bounty-program Förresten, det fungerar för dem, de betalar för de fel som hittas). Du kan lära dig mer om funktionerna i webbläsaren w8io i det här ämnet: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

När jag arbetade på w8io hade jag redan tvivel, men när arbetet nådde sitt logiska slut och jag började skapa SDK:n bekräftades mina tvivel. Jag kunde inte hitta vissa funktioner någonstans, inklusive de viktigaste, kryptografiska. Sedan började jag med att göra egna tegelstenar till grunden. Så här föddes de: ABCode att koda till base58 (faktiskt för att koda valfritt alfabet till vilket som helst), Curve25519 för att skapa och verifiera kompatibla signaturer (med alternativ på steroider), Blake2b för att beräkna en av hasharna (som bara var tillgänglig sedan PHP 7.2) osv.

Det är här jag måste tacka Inala Kardanova för några värdefulla råd som pekade mig i riktning komponera istället för inkluderar-filer som är bekanta för mig, men föråldrade.

Efter ett par månader WavesKit släpptes, kom ut betaversioner och är nu redo att arbeta med alla standardfunktioner på Waves-plattformen. Allt tillgängligt i huvudnätet transaktioner kan enkelt skapas, signeras och skickas med bara ett paket som körs på alla 64-bitarsversioner av PHP från och med 5.6.

Vi kopplar WavesKit till vårt projekt:

composer require deemru/waveskit

Vi använder:

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 körs på "T"-testnätet. Vi installerar en såddfras från vilken nycklarna och kontoadressen automatiskt beräknas utifrån den publika nyckeln. Därefter skapar vi en överföringstransaktion 0.00000001 Waves från adressen som automatiskt beräknas med hjälp av seed-frasen till aliasadressen "test", överför den för att signeras med en privat nyckel och skicka den till nätverket. Efter detta ser vi till att transaktionen är framgångsrikt bekräftad av nätverket.

Arbetet med transaktioner är koncentrerat till funktioner som börjar med tx. För en bättre förståelse för att arbeta med transaktioner kan du studera WavesKit dokumentation eller vänd omedelbart till illustrativa exempel i kontinuerliga integrationstester.

Eftersom WavesKit har utvecklats i verklig användning har det redan avancerade funktioner. Den första mördarfunktionen är säkerställa funktion, som kontrollerar uppnåendet av den erforderliga nivån av förtroende för att transaktionen inte gick förlorad, utan tvärtom bekräftades och nådde det erforderliga antalet bekräftelser i nätverket.

En annan skottsäker mekanism är hur WavesKit kommunicerar med noder. Under växthusförhållanden fungerar ramverket endast med huvudnoden och upprätthåller en konstant anslutning till den, men i händelse av fel kan den automatiskt byta till backup. Om du ställer in en uppsättning backupnoder kan du anropa funktionen setBestNode för att bestämma den bästa noden som den huvudsakliga baserat på maxvärdet för den aktuella höjden och svarshastigheten. Lägg nu till detta en intern frågecache och känn dig omhändertagen av både användare och nodägare.

En av de senaste avancerade mekanismerna är funktionen txMonitor. Det dök upp på grund av behovet av att svara på inkommande transaktioner i realtid. Denna funktion löser helt alla nyanser som är förknippade med att bearbeta transaktioner i blockkedjan. Ingen mer smärta, ställ bara in din återuppringningsfunktion med önskade alternativ och vänta på att nya transaktioner startar dina processer. Till exempel ett annat projekt av mig VECRO helt uppbyggd kring denna funktion kan du enkelt studera hur den fungerar direkt i projektkoden.

Jag älskar öppen källkod, det är en av mänsklighetens största prestationer. Eftersom jag är den enda utvecklaren och har nått ett tillstånd där alla mina behov är lösta, inbjuder jag dig att använda och bidra till WavesKit.

Källa: will.com

Lägg en kommentar