Hur man bygger SDN — Ă„tta verktyg med öppen kĂ€llkod | ProHoster

Jag gillar PHP 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 Waves Plattform 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 noder 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 API, 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 w8io och WavesKit.

Det första steget bakom kulisserna av Waves blockkedjan blev utforskaren w8io. 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 (bug-bounty programmet förresten har de, de betalar för hittade fel). Du kan studera funktionerna hos w8io utforskaren mer i den hÀr trÄden: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

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: ABCode för kodning till base58 (egentligen för kodning av vilket alfabet som helst till vilket som helst), Curve25519 för att skapa och verifiera kompatibla signaturer (med varianter pÄ steroids), Blake2b 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 Inal Kardanov för nÄgra vÀrdefulla rÄd som ledde mig mot composer istÀllet för de gamla, men utdaterade, include-filerna.

Efter ett par mÄnader sÄg WavesKit dagens ljus, gick ut frÄn beta-versionen och Àr nu redo att arbeta med all standardfunktionalitet pÄ Waves plattformen. Allt som finns tillgÀngligt i huvudnÀtverket 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/waveskit

AnvÀ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 funktioner som börjar med tx. För att bÀttre förstÄ arbetet med transaktioner kan du studera WavesKit-dokumentationen eller genast gÄ till de tydliga exemplen i tester för kontinuerlig integration.

Eftersom WavesKit har utvecklats under verkliga anvÀndningsförhÄllanden har den redan fÄtt avancerade funktioner. Den första killerfunktionen Àr funktionen ensure, 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 setBestNode 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 txMonitor. 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 VECRO Àr helt byggt kring denna funktion, du kan lugnt studera hur den fungerar direkt i projektets kod.

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 WavesKit.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster