Mi piace per la velocità di sviluppo e l'ottima portabilità. È davvero utile avere sempre a portata di mano uno strumento pronto per risolvere i problemi.
È stato piuttosto deludente quando, iniziando a conoscere la blockchain nazionale nel suo arsenale non c'era un SDK pronto per PHP. Beh, ho dovuto scriverlo.
Inizialmente dovevo usare per firmare le transazioni. Così, per gestire tre indirizzi dovevo avviare tre nodi... Era uno spettacolo triste, anche se risolveva alcuni problemi. Fino a quando non ho capito che fare affidamento sui nodi è un vicolo cieco. In primo luogo, a causa delle funzionalità limitate , in secondo luogo, a causa della velocità (in quei giorni i nodi erano molto lenti).
Ho iniziato due lavori paralleli. Uno - creare un esploratore blockchain che fosse veloce e completamente indipendente dall'API dei nodi. Il secondo - raccogliere tutte le funzionalità per lavorare con la Waves Platform in un unico posto. Da lì sono nati i progetti e .
Il primo passo dietro le quinte della blockchain Waves è stato . Non è stato facile, ma sono comunque riuscito a scrivere un calcolo indipendente di tutti i saldi e persino a trovare un errore nei calcoli sui nodi originali ( peraltro funziona lì, pagano per gli errori trovati). Puoi esplorare più a fondo le funzionalità dell'esploratore w8io in questo tema:
Durante il lavoro su w8io avevo già dei dubbi, ma quando il lavoro è giunto a una conclusione logica e ho iniziato a creare l'SDK, i dubbi si sono confermati. Non riuscivo a trovare da nessuna parte alcune funzionalità, comprese quelle più importanti, crittografiche. Allora ho iniziato a creare i miei mattoni per le fondamenta. Così sono nati: per la codifica in base58 (in realtà per codificare qualsiasi alfabeto in qualsiasi) per la creazione e verifica di firme compatibili (con varianti ), per calcolare uno degli hash (che era disponibile solo a partire da PHP 7.2) e così via.
Qui devo ringraziare per alcuni preziosi consigli che mi hanno indirizzato verso invece dei file include che mi erano familiari, ma ormai obsoleti.
Dopo un paio di mesi , è uscito da ed è ora pronto a lavorare con tutte le funzionalità standard della piattaforma Waves. Tutto ciò che è disponibile nella Le transazioni possono essere facilmente create, firmate e inviate da un singolo pacchetto che funziona su tutte le versioni PHP a 64 bit a partire dalla 5.6 inclusa.
Colleghiamo WavesKit al nostro progetto:
composer require deemru/waveskitUtilizziamo:
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 );Nell'esempio sopra abbiamo creato un oggetto WavesKit che opera nella rete di test "T". Impostiamo la frase seed, da cui vengono automaticamente calcolate le chiavi e l'indirizzo dell'account basato sulla chiave pubblica. Successivamente, creiamo una transazione di trasferimento di 0.00000001 Waves dall'indirizzo calcolato automaticamente dalla frase seed all'indirizzo dell'alias "test", la firmiamo con la chiave privata e la inviamo nella rete. Dopo di che verifichiamo che la transazione sia stata confermata con successo dalla rete.
Lavorare con le transazioni è incentrato su . Per una migliore comprensione del funzionamento delle transazioni, puoi esaminare o passare direttamente a esempi pratici in .
Poiché WavesKit si è sviluppato in condizioni di utilizzo reale, ha già acquisito funzionalità avanzate. La prima killer feature è la , che controlla il raggiungimento del livello di fiducia necessario, assicurandosi che la transazione non sia andata persa, ma sia stata confermata e abbia raggiunto il numero necessario di conferme nella rete.
Un altro meccanismo a prova di proiettile è come WavesKit comunica con i nodi. In condizioni ottimali, il framework lavora solo con un nodo principale, mantenendo una connessione costante, ma in caso di errori può commutare automaticamente su nodi di riserva. Se imposti un array di nodi di riserva, puoi chiamare la funzione per determinare il miglior nodo come principale in base al valore massimo dell'attuale altezza e alla velocità di risposta. Ora aggiungi a questo una cache interna delle richieste e senti la cura sia per gli utenti sia per i proprietari dei nodi.
Uno degli ultimi meccanismi avanzati è la funzione . È emersa la necessità di reagire alle transazioni in tempo reale. Questa funzione affronta completamente tutte le sfide legate all'elaborazione delle transazioni nella blockchain. Nessun dolore, basta impostare la tua funzione di callback con le opzioni desiderate e aspettare nuove transazioni che attiveranno i tuoi processi. Ad esempio, un altro mio progetto è interamente costruito attorno a questa funzione, puoi tranquillamente studiare come funziona direttamente .
Mi piace l'open source, è una delle più grandi conquiste dell'umanità. Essendo l'unico sviluppatore e avendo raggiunto uno stato in cui tutte le mie esigenze sono soddisfatte, ti invito a utilizzare e contribuire a .
Fonte: habr.com
