Mi piace per la velocità di sviluppo e l'ottima portabilità. È davvero utile avere sempre a disposizione uno strumento pronto per risolvere i problemi.
È stato piuttosto deludente quando, durante l'incontro con il blockchain nazionale non avevo un SDK pronto per PHP. Dovetti scriverlo.
Inizialmente dovevo usare per firmare le transazioni. Così, per gestire tre indirizzi, dovevo avviare tre nodi... Era uno spettacolo deplorevole, anche se risolveva alcuni problemi. Fino a quando non ho capito che fare affidamento sui nodi era un vicolo cieco. In primo luogo, a causa delle limitazioni funzionali , in secondo luogo, a causa della velocità (ai tempi i nodi erano molto lenti).
Ho iniziato due lavori paralleli. Uno era creare un esploratore blockchain che fosse veloce e completamente indipendente dalle API dei nodi. L'altro era raccogliere tutte le funzioni per lavorare con Waves Platform in un unico posto. Così sono nati i progetti e .
Il primo passo dietro le quinte del blockchain di Waves è stato . Non è stato semplice, ma alla fine sono riuscito a scrivere un calcolo indipendente di tutti i saldi e persino a trovare un errore nei calcoli sui nodi originali ( tra l'altro, funziona, pagano per gli errori trovati). Puoi approfondire il funzionamento del browser w8io in questo thread:
Durante il lavoro su w8io ho avuto 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 sono riuscito a trovare alcune funzioni, incluse le più importanti, quelle crittografiche. Così ho iniziato a creare i miei mattoni per le fondamenta. E così sono nati: per la codifica in base58 (in realtà per codificare qualsiasi alfabeto in qualsiasi), per creare e verificare 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 a cui ero abituato, ma obsoleti.
Dopo qualche mese , è uscito dalla ed è ora pronto per lavorare con tutta la funzionalità standard della piattaforma Waves. Tutte le disponibili nella Le transazioni possono essere facilmente create, firmate e inviate utilizzando un unico pacchetto, compatibile con tutte le versioni a 64 bit di PHP dalla 5.6 in poi.
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, creiamo un oggetto WavesKit che opera nella testnet 'T'. Impostiamo una seed phrase 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 tramite la seed phrase all'indirizzo 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.
Il lavoro con le transazioni è concentrato nelle . Per una migliore comprensione del lavoro con le transazioni, puoi consultare la o passare direttamente ad esempi pratici nei .
Poiché WavesKit si è sviluppato in un ambiente di utilizzo reale, ha già acquisito funzionalità avanzate. La prima killer feature è , che controlla il raggiungimento del livello di fiducia richiesto, garantendo che la transazione non si sia persa, ma anzi, sia stata confermata e abbia raggiunto il numero necessario di conferme nella rete.
Un altro meccanismo a prova di proiettile è il modo in cui WavesKit comunica con i nodi. In condizioni controllate, il framework lavora solo con il nodo principale, mantenendo una connessione costante con esso, ma in caso di errori può automaticamente passare a nodi di riserva. Se stai configurando un insieme di nodi di riserva, puoi chiamare la funzione per determinare il miglior nodo come principale, in base al valore massimo dell'attuale altezza e velocità di risposta. Ora aggiungi a questo una cache interna delle richieste e sentirai la cura sia per gli utenti che per i proprietari dei nodi.
Uno degli ultimi meccanismi avanzati è la funzione . È emersa dalla necessità di rispondere alle transazioni in tempo reale. Questa funzione risolve completamente tutte le questioni legate all'elaborazione delle transazioni nella blockchain. Niente più problemi, basta impostare la propria funzione di callback con le opzioni desiderate e attendere le nuove transazioni che attiveranno i vostri processi. Ad esempio, un altro mio progetto è completamente costruito attorno a questa funzione, puoi facilmente esplorare come funziona direttamente .
Mi piace l'open source, è una delle più grandi conquiste dell'umanità. Essendo io l'unico sviluppatore e avendo raggiunto uno stato in cui tutte le mie necessità sono soddisfatte, vi invito a utilizzare e contribuire a .
Fonte: habr.com
