Мне нравится per la velocità di sviluppo e l'eccellente portabilità. È molto bello avere sempre uno strumento in tasca, pronto a risolvere i problemi.
È stato un vero peccato quando, quando ho conosciuto la blockchain domestica non aveva un SDK PHP già pronto nel suo arsenale. Beh, dovevo scriverlo.
All'inizio dovevo usare firmare le transazioni. Quindi per gestire tre indirizzi è stato necessario lanciare tre nodi... Uno spettacolo pietoso, anche se ha risolto alcuni problemi. Fino a quando non si è capito che fare affidamento sui nodi era un vicolo cieco. Innanzitutto, a causa della funzionalità limitata , in secondo luogo, a causa della velocità (i nodi erano molto lenti a quei tempi).
Ho iniziato due lavori paralleli. Uno è creare un blockchain explorer che sarà veloce e completamente indipendente dall'API del nodo. Il secondo è raccogliere tutte le funzioni per lavorare con la Waves Platform in un unico posto. Ecco come sono apparsi i progetti и .
Il primo passo dietro le quinte della blockchain Waves è stato . Non è stato facile, ma siamo comunque riusciti a scrivere un calcolo indipendente di tutti i saldi e persino a trovare un errore nei calcoli sui nodi originali ( A proposito, per loro funziona, pagano per gli errori trovati). Puoi saperne di più sulla funzionalità del browser w8io in questo argomento:
Mentre lavoravo su w8io avevo già dei dubbi, ma quando il lavoro è arrivato alla sua conclusione logica e ho iniziato a creare l'SDK, i miei dubbi sono stati confermati. Alcune funzioni non sono riuscita a trovarle da nessuna parte, comprese quelle più importanti, quelle crittografiche. Poi ho iniziato creando i miei mattoni per la fondazione. Ecco come sono nati: per codificare in base58 (in realtà per codificare qualsiasi alfabeto in qualsiasi), per creare e verificare firme compatibili (con opzioni ), per calcolare uno degli hash (disponibile solo a partire da PHP 7.2), ecc.
È qui che devo ringraziare per alcuni preziosi consigli che mi hanno indicato la direzione invece dei file include che mi sono familiari, ma obsoleti.
Dopo un paio di mesi , venne fuori ed è ora pronto per funzionare con tutte le funzionalità standard della piattaforma Waves. Tutto disponibile in le transazioni possono essere facilmente create, firmate e inviate utilizzando un solo pacchetto, in esecuzione su tutte le versioni a 64 bit di PHP dalla 5.6 inclusa.
Colleghiamo WavesKit al nostro progetto:
composer require deemru/waveskitNoi usiamo:
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 viene eseguito sulla testnet "T". Installiamo una frase seed da cui le chiavi e l'indirizzo dell'account vengono calcolati automaticamente in base alla chiave pubblica. Successivamente, creiamo una transazione di trasferimento 0.00000001 Waves dall'indirizzo calcolato automaticamente utilizzando la frase seed all'indirizzo alias “test”, la trasferiamo per essere firmata con una chiave privata e la inviamo alla rete. Successivamente, ci assicuriamo che la transazione sia confermata con successo dalla rete.
Il lavoro con le transazioni è concentrato in . Per una migliore comprensione del lavoro con le transazioni, puoi studiare o passare immediatamente agli esempi illustrativi in .
Poiché WavesKit è stato sviluppato per l'uso nel mondo reale, dispone già di funzionalità avanzate. La prima caratteristica killer è , che controlla il raggiungimento del livello di confidenza richiesto che la transazione non sia andata persa, ma, al contrario, sia stata confermata e abbia raggiunto il numero richiesto di conferme nella rete.
Un altro meccanismo a prova di proiettile è il modo in cui WavesKit comunica con i nodi. In condizioni di serra, il framework funziona solo con il nodo principale, mantenendo una connessione costante con esso, ma in caso di errori può passare automaticamente a quelli di backup. Se imposti un array di nodi di backup, puoi chiamare la funzione per determinare il nodo migliore come principale in base al valore massimo dell'altezza corrente e alla velocità di risposta. Ora aggiungi a questo una cache di query interna e sentiti curato sia per gli utenti che per i proprietari dei nodi.
Uno degli ultimi meccanismi avanzati è la funzione . È apparso a causa della necessità di rispondere alle transazioni in entrata in tempo reale. Questa funzione risolve completamente tutte le sfumature associate all'elaborazione delle transazioni nella blockchain. Niente più problemi, basta impostare la funzione di richiamata con le opzioni desiderate e attendere che nuove transazioni avviino i processi. Ad esempio, un altro mio progetto completamente costruito attorno a questa funzione, puoi facilmente studiare direttamente come funziona .
Adoro l'open source, è uno dei più grandi successi dell'umanità. Dato che sono l'unico sviluppatore e ho raggiunto uno stato in cui tutte le mie esigenze sono risolte, ti invito a utilizzare e contribuire .
Fonte: habr.com
