Eg liker for utviklingshastigheten og utmerket portabilitet. Det er veldig bra at jeg alltid har et verktĂžy klart til Ă„ lĂžse oppgaver i lommen.
Det var ganske skuffende da jeg ble kjent med den innenlandske blokkjedeteknologien at det ikke fantes en klar SDK for PHP i arsenalet. Vel, jeg mÄtte skrive det.
I starten mÄtte jeg bruke for Ä signere transaksjoner. SÄ for Ä administrere tre adresser mÄtte jeg kjÞre tre noder⊠Det var et ynkelig syn, selv om det lÞste noen oppgaver. Inntil jeg innsÄ at Ä stole pÄ noder er en blindvei. For det fÞrste pÄ grunn av det begrensede funksjonaliteten, , for det andre pÄ grunn av hastigheten (pÄ den tiden var nodene veldig trege).
Jeg begynte to parallelle arbeider. Det ene var Ä lage en blockchain-leser som skulle vÊre rask og helt uavhengig av API-et til nodene. Det andre var Ä samle alle funksjoner for Ä jobbe med Waves Platform pÄ ett sted. Slik ble prosjektene og .
Det fÞrste steget bak kulissene til Waves-blokkjeden var . Det var ikke lett, men jeg klarte Ä skrive en uavhengig beregning av alle saldoer og til og med finne en feil i beregningene pÄ de originale nodene ( , forresten, fungerer der, de betaler for funnet feil). Du kan lÊre mer om funksjonaliteten til w8io-leseren i dette emnet:
I prosessen med Ă„ jobbe med w8io hadde jeg allerede tvil, men da arbeidet nĂŠrmet seg en logisk ende og jeg begynte Ă„ lage SDK-en, ble tvilen bekreftet. Jeg klarte ikke Ă„ finne noen funksjoner noe sted, inkludert de mest kritiske, kryptografiske. SĂ„ begynte jeg Ă„ skape mine egne byggeklosser for fundamentet. Slik ble fĂždt: for koding i base58 (faktisk for koding av hvilket som helst alfabet i hvilken som helst), for Ă„ lage og verifisere kompatible signaturer (med varianter ), for Ă„ beregne en av hasjene (som bare var tilgjengelig fra PHP 7.2) osv.
Her mÄ jeg takke for noen verdifulle rÄd som ledet meg i retning i stedet for mine kjente, men utdaterte, include-filer.
Etter et par mÄneder , kom ut av og er nÄ klart til Ä jobbe med all den standardfunksjonaliteten pÄ Waves-plattformen. Alle tilgjengelige i Transaksjoner kan enkelt opprettes, signeres og sendes av et helt enkelt bibliotek som fungerer pÄ alle 64-biters versjoner av PHP fra 5.6 og oppover.
Slik kobler vi WavesKit til prosjektet vÄrt:
composer require deemru/waveskitVi bruker:
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 eksempelet ovenfor oppretter vi et WavesKit-objekt som fungerer i testnettverket «T». Vi setter inn frÞfrasen, som automatisk beregner nÞkler og kontoadresse basert pÄ den offentlige nÞkkelen. Videre lager vi en transaksjon for Ä overfÞre 0.00000001 Waves fra den automatisk genererte adressen til aliaset «test», sender den til signering med den private nÞkkelen og sender den til nettverket. Etter dette forsikrer vi oss om at transaksjonen er bekreftet av nettverket.
Arbeid med transaksjoner er konsentrert i . For bedre forstÄelse av arbeidet med transaksjoner kan du studere eller umiddelbart se pÄ illustrative eksempler i .
Siden WavesKit har utviklet seg under reelle bruksforhold, har den allerede fÄtt avanserte funksjoner. Den fÞrste killer-funksjonen er , som kontrollerer oppnÄelsen av nÞdvendig sikkerhetsnivÄ for Ä sikre at transaksjonen ikke er tapt, men derimot er bekreftet og har nÄdd det nÞdvendige antallet bekreftelser i nettverket.
En annen kulefast mekanisme er hvordan WavesKit kommuniserer med nodene. I kontrollerte forhold fungerer rammeverket kun med hovednoden, og opprettholder en konstant tilkobling, men ved feil kan det automatisk bytte til reserve-noder. Hvis du angir et array av reserve-noder, kan du sÄ kalle funksjonen for Ä identifisere den beste noden som hovednode basert pÄ maksimal verdi av gjeldende hÞyde og responshastighet. Legg nÄ til dette det interne cache-alternativet for forespÞrslene og opplev omsorg bÄde for brukerne og eierne av nodene.
En av de nyeste avanserte mekanismene er funksjonen Den dukket opp pÄ grunn av behovet for Ä reagere pÄ innkommende transaksjoner i sanntid. Denne funksjonen lÞser fullstendig alle aspekter knyttet til behandling av transaksjoner i blokkjeden. Ingen mer smerte, du setter bare opp callback-funksjonen din med Þnskede alternativer og venter pÄ nye transaksjoner som vil starte prosessene dine. For eksempel, et annet prosjekt jeg jobber med er helt bygget rundt denne funksjonen, sÄ du kan rolig studere hvordan den fungerer direkte .
Jeg liker open source, det er en av menneskehetens stÞrste prestasjoner. Siden jeg er den eneste utvikleren og har nÄdd et punkt der alle mine behov er dekket, inviterer jeg deg til Ä bruke og bidra til .
Kilde: habr.com
