Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 9838|Risposta: 4

Kit di sviluppo EOS Blockchain PHP

[Copiato link]
Pubblicato su 11/12/2018 08:56:36 | | |
Questo post è stato modificato l'ultima volta da jimi2018 il 11-12-2018 alle 09:06

1. Panoramica del pacchetto di sviluppo
Lo scopo di EosTool è eliminare il problema dello sviluppo di applicazioni blockchain EOS usando PHP, come ad esempio:
  • Chiama le sue funzioni tramite l'interfaccia RPC di Nodeos e Keosd
  • Genera chiavi private e pubbliche in formato EOS offline
  • Usa la tua chiave privata locale per generare firme di transazione conformi a EOS
  • Serializzare gli oggetti delle transazioni nel formato packed_trx richiesto da Nodeos
Si può considerare che EosTool sia una versione PHP di eosjs, che può essere utilizzata per implementare completamente le funzioni del client ufficiale EOS Cleos, e può anche essere facilmente aggiunta al supporto della blockchain EOS nelle applicazioni PHP, migliorando notevolmente l'efficienza dello sviluppo.

Gli amici interessati possono anche andare direttamente a questo per scaricare il kit di sviluppo EOS blockchain PHP:http://t.cn/EUZAODQ

EosTool gira in un ambiente Php 7.1+, la versione attuale è la 1.0.0 e l'elenco dei file di codice principali è il seguente:

File di codiceillustrare
eostool/src/client/NodeClient.phpLa classe del pacchetto di interfaccia RPC del software node nodeos
eostool/src/client/WalletClient.phpLa classe di incapsulamento dell'interfaccia RPC del software wallet KEOSD
eostool/src/client/RpcOutput.phpRPC restituisce la classe di incapsulamento risultante
eostool/src/Crypto/PrivateKey.phpClasse chiave privata EOS
eostool/src/Crypto/PublicKey.phpClasse di chiave pubblica EOS
eostool/src/Crypto/Signature.phpClasse firma EOS
eostool/src/Serializer/AbiType.phpClasse di pacchetto tipo ABI di EOS
eostool/src/Serializer/AbiTypeFactory.phpClasse di fabbrica tipo ABI
eostool/src/Serializer/SerialBuffer.phpClasse di implementazione del buffer serializzato
eostool/src/Serializer/Serializer.phpClasse di implementazione Serializer
eostool/src/Signer/Signer.phpInterfaccia firmatario
eostool/src/Signer/KeosdSigner.phpClasse di implementazione Keosd Signer
eostool/src/Signer/LocalSigner.phpImplementazione locale offline del signer
eostool/src/Contract.phpClasse contrattuale
eostool/src/EosTool.phpClasse di ingresso del pacchetto di sviluppo
eostool/testCatalogo dei casi di test unitari
eostool/phpunit.xmlProfili dei test unitari
eostool/fornitorePacchetti di dipendenza di terze parti
eostool/composer.jsonFile di configurazione del compositore
2. Accedere al node server
Usa la classe NodeClient per accedere all'interfaccia rpc di Nodeos. Ad esempio, il seguente codice accede all'interfaccia get_info del plugin chain per un nodo Nodeos in esecuzione nativa:
2.1 Raggruppamento delle chiamate RPC

EosTool adotta un metodo di denominazione coerente, e il metodo di chiamata di NodeClient può essere dedotto secondo l'API: il raggruppamento API corrisponde a una proprietà con lo stesso nome del NodeClient, e l'API corrisponde a un metodo convertito da camelCase con lo stesso attributo omonimo del raggruppamento del Client di No. Per esempio:



PluginRaggruppamento APIRPC APIMetodo NodeClient
chain_api_plugincatenaget_info$nc->catena->getInfo()
history_api_pluginStoriaget_transaction$nc->storia->getTransaction()
net_api_pluginReteStato$nc->net->status()
producer_api_pluginProduttoreget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizeOttieni$nc->dbsize->get()

Documentazione ufficiale per l'API RPC:https://developers.eos.io/eosio-nodeos/reference

2.2 Parametri di chiamata RPC

Per Nodeos, alcune chiamate richiedono di passare parametri aggiuntivi, come l'interfaccia get_block del plugin della catena; quando si utilizza EosTool per effettuare una chiamata, basta organizzare i parametri in un array associato, il codice di esempio è il seguente:



2.3 Le chiamate RPC restituiscono valori

Il risultato di ritorno di tutte le chiamate RPC è un'istanza RpcOutput, e chiamare il suo metodo hasError() può determinare se la chiamata è errata, e puoi inoltre usare il metodo getError() per ottenere informazioni sugli errori.
La risposta della chiamata RPC può essere ottenuta tramite il metodo getResult(), che è un oggetto StdClass convertito dal risultato JSON originale, quindi può essere facilmente estratta informazioni sugli attributi, come:

2.4 Accesso ai nodi mainnet/testnet

Quando si crea un'istanza NodeClient, possono essere passate esecuzioni di parametri aggiuntivi per definire i nodi mainnet o testnet EOS ad cui accedere. Ad esempio, usa il seguente codice per accedere a un nodo mainnet:

Oppure visita un nodo sul testnet della Giungla:


3. Accedere al server wallet
La nuova versione di Keosd non fornisce più documentazione API RPC, il che potrebbe significare che ha iniziato a spostarsi al margine dello stack software EOS. Tuttavia, puoi accedere alla vecchia versione della documentazione a questo indirizzo:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Usa la classe WalletClient per accedere all'interfaccia rpc di Keosd. Ad esempio, il seguente codice accede all'interfaccia list_wallets di Keosd che gira nativamente:
Poiché l'API di Keosd non è più raggruppata, il metodo corrispondente RPC è direttamente collegato all'oggetto WalletClient, che rappresenta una differenza. Come NodeClient, la chiamata a WalletClient restituisce un oggetto RpcOutput.

Keosd versione 1.4 utilizza socket UNIX invece di HTTP per fornire di default interfacce RPC, che possono essere considerate più sicure da usare da IPC considerando che nella maggior parte dei casi Keosd gira nativamente. Pertanto, questa è anche l'opzione di istanziazione predefinita per WalletClient e, nella maggior parte dei casi, non è necessario passare parametri aggiuntivi per istanziare il WalletClient.

4. Chiavi private e pubbliche

L'algoritmo chiave di EOS è simile a Bitcoin, ma con alcune modifiche e definizione di un proprio formato.
Usa il metodo statico della classe PrivateKey new() per generare una chiave privata casuale. Per esempio:
il metodo toEos() viene utilizzato per convertire oggetti chiave private in un formato personalizzato per EOS.

4.1 Derivazione della chiave pubblica
La chiave pubblica può essere derivata dalla chiave privata, ad esempio:


Allo stesso modo, usa il metodo toEos() per convertire la chiave pubblica in un formato personalizzato per EOS.

4.2 Importazione delle Chiavi Private EOS
Puoi convertire una chiave privata formattata in EOS in un oggetto EosTool PrivateKey, ad esempio, il codice qui sotto importa la chiave privata EOS specificata e ne mostra la corrispondente chiave pubblica EOS:

4.3 Firma autorevole
Il metodo sign() di PrivateKey supporta sia le firme normali che le firme autorevole richieste dai nodi EOS. Ad esempio, il seguente codice restituisce una firma semplice:

Inserire parametri aggiuntivi per ottenere una firma autorevole per i dati specificati:



5. Serializzazione
EOS richiede che le transazioni siano serializzate prima di effettuare il commit del push_transaction del nodo, che è anch'essa una parte inevitabile del funzionamento delle transazioni EOS in PHP.
In EosTool, la classe Serializer viene utilizzata per le operazioni di serializzazione. Ad esempio, il seguente codice serializza una transazione di trasferimento EOS in un formato codestream a 16 decimali che può essere inviato a un nodo EOS:


Il metodo statico fromAbi() di Serializer viene utilizzato per costruire un'istanza serializer basata su un abi specificato, e poi il metodo serialize() dell'istanza viene usato per serializzare il tipo di dato specificato e ottenere un flusso di codice esadecimale.

6. Firma
EosTool offre due modi per firmare le transazioni: usare Keosd per firmare oppure usare una chiave privata locale.
Usa la classe KeosdSigner per completare la firma usando il server wallet. Per esempio:

Utilizzando la classe LocalSigner, puoi evitare di usare keosd e utilizzare direttamente la firma di chiave privata offline. Per esempio:
usa EosTool\Signer\LocalSigner;

$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'];
$signer = nuovo LocalSigner($prvKeys);
$signatures = $signer->segno($tx,$pubKeys,$chainId);



7. Presentazione della transazione
I dati di una transazione devono essere normalizzati, serializzati, firmati e confezionati attraverso una serie di operazioni prima di poter essere inviati al nodo Nodeos per la trasmissione. La classe EosTool fornisce il metodo transact() per isolare queste operazioni noiose.
Ad esempio, il codice qui sotto crea un'istanza EosTool usando NodeClient e LocalSigner, e poi invia una transazione:
È comodo cambiare il firmatario in KeosdSigner, ad esempio:


8. Invocare un'unica azione contrattuale
Usa il metodo pushAction() di EosTool per chiamare un'unica azione contrattuale. Ad esempio, il seguente codice chiama il metodo hi() del contratto di hosting dell'account Tommy:



9. Utilizzare il contratto
Distribuisci il contratto usando il metodo setContract() di EosTool, ad esempio:
Gli amici interessati possono andare qui:http://t.cn/EUZAODQ




Pubblicato su 11/12/2018 08:59:58 |
Grazie, molto utile
 Padrone di casa| Pubblicato su 11/12/2018 09:06:52 |

Grazie per il supporto.
Pubblicato su 11/12/2018 09:11:46 |
Ho letto molti contenuti sul tuo sito, e sento che alcuni di essi sono articoli stranieri tradotti
Pubblicato su 11/12/2018 09:32:07 |
Guarda un po' grazie capo per esserti arricchito
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com