Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 9838|Răspunde: 4

Kit de dezvoltare EOS Blockchain PHP

[Copiază linkul]
Postat pe 11.12.2018 08:56:36 | | |
Această postare a fost editată ultima dată de jimi2018 la 2018-12-11 09:06

1. Prezentare generală a pachetului de dezvoltare
Scopul EosTool este de a elimina dificultățile dezvoltării aplicațiilor blockchain EOS folosind PHP, cum ar fi:
  • Apelați funcțiile sale prin interfața RPC a Nodeos și Keosd
  • Generează chei private și publice în format EOS offline
  • Folosește cheia ta privată locală pentru a genera semnături de tranzacții conforme cu EOS
  • Serializați obiectele tranzacțiilor în formatul packed_trx cerut de Nodeos
Se poate considera că EosTool este o versiune PHP a eosjs, care poate fi folosită pentru a implementa complet funcțiile clientului oficial EOS, Cleos, și poate fi adăugat cu ușurință la suportul blockchain-ului EOS în aplicațiile PHP, îmbunătățind semnificativ eficiența dezvoltării.

Prietenii interesați pot accesa direct acest site pentru a descărca kitul de dezvoltare EOS blockchain:http://t.cn/EUZAODQ

EosTool rulează în mediul Php 7.1+, versiunea actuală este 1.0.0, iar lista fișierelor principale de cod este următoarea:

Fișiere de codilustra
eostool/src/client/NodeClient.phpClasa pachetului de interfață RPC a nodeos-urilor software node
eostool/src/client/WalletClient.phpClasa de încapsulare a interfeței RPC a software-ului de portofel KEOSD
eostool/src/client/RpcOutput.phpRPC returnează clasa de încapsulare rezultată
eostool/src/Crypto/PrivateKey.phpClasa cheie privată EOS
eostool/src/Crypto/PublicKey.phpClasa cheie publică EOS
eostool/src/Crypto/Signature.phpClasa de semnătură EOS
eostool/src/Serializer/AbiType.phpClasa de pachete tip ABI a EOS
eostool/src/Serializer/AbiTypeFactory.phpClasa de fabrică tip ABI
eostool/src/Serializer/SerialBuffer.phpClasa de implementare a bufferului serializat
eostool/src/Serializer/Serializer.phpClasa de implementare Serializer
eostool/src/Signer/Signer.phpInterfață semnatară
eostool/src/Signer/KeosdSigner.phpClasa de implementare Keosd Signer
eostool/src/Signer/LocalSigner.phpImplementarea semnatar local offline
eostool/src/Contract.phpClasa contractuală
eostool/src/EosTool.phpClasa de intrare în pachetul de dezvoltare
eostool/testeCatalogul cazurilor de testare unitară
eostool/phpunit.xmlProfiluri de teste unitare
eostool/vendorPachete de dependență terțe
eostool/composer.jsonFișier de configurare al compozitorului
2. Accesează serverul nod
Folosește clasa NodeClient pentru a accesa interfața rpc a nodeos. De exemplu, următorul cod accesează interfața get_info a pluginului chain pentru un nod Nodeos care rulează nativ:
2.1 Gruparea apelurilor RPC

EosTool adoptă o metodă de denumire consecventă, iar metoda de apel a NodeClient poate fi infersă conform API-ului: gruparea API-ului corespunde unei proprietăți cu același nume ca NodeClient, iar API-ul corespunde unei metode convertite de camelCase sub același atribut cu același nume ca gruparea Clientului No. De exemplu:



PluginuriGruparea API-urilorRPC APIMetoda NodeClient
chain_api_pluginLanțget_info$nc->lanț->getInfo()
history_api_pluginIstoricget_transaction$nc->history->getTransaction()
net_api_pluginnetStatut$nc->net->status()
producer_api_pluginProducătorget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizeIa-ți$nc->dbsize->get()

Documentație oficială pentru RPC API:https://developers.eos.io/eosio-nodeos/reference

2.2 Parametrii apelului RPC

Pentru Nodeos, unele apeluri necesită transmiterea unor parametri suplimentari, cum ar fi interfața get_block a pluginului de lanț; când folosești EosTool pentru a efectua un apel, trebuie doar să organizezi parametrii într-un tablou asociat, codul exemplu fiind următorul:



2.3 Apelurile RPC returnează valori

Rezultatul returnat al tuturor apelurilor RPC este o instanță RpcOutput, iar apelarea metodei hasError() poate determina dacă apelul este greșit, iar în continuare poți folosi metoda getError() pentru a obține informații despre eroare.
Răspunsul apelului RPC poate fi obținut prin metoda getResult(), care este un obiect StdClass convertit din rezultatul JSON original, astfel încât poate fi extras ușor informații despre atribute, cum ar fi:

2.4 Accesul la nodurile mainnet/testnet

La crearea unei instanțe NodeClient, pot fi trecute execuții suplimentare de parametri pentru a defini nodurile mainnet sau testnet EOS accesibile. De exemplu, folosește următorul cod pentru a accesa un nod mainnet:

Sau vizitează un nod de pe testnet-ul Jungle:


3. Accesează serverul portofelului
Noua versiune a Keosd nu mai oferă documentație pentru API-ul RPC, ceea ce ar putea însemna că a început să alunece spre marginea stack-ului software EOS. Totuși, puteți accesa versiunea veche a documentației la această adresă:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Folosește clasa WalletClient pentru a accesa interfața rpc a Keosd. De exemplu, următorul cod accesează interfața list_wallets a Keosd care rulează nativ:
Deoarece API-ul Keosd nu mai este grupat, metoda corespunzătoare RPC este agățată direct de obiectul WalletClient, ceea ce reprezintă o diferență. La fel ca NodeClient, apelul către WalletClient returnează un obiect RpcOutput.

Keosd versiunea 1.4 folosește socket-uri UNIX în loc de HTTP pentru a oferi interfețe RPC implicit, ceea ce poate fi considerat mai sigur de folosit IPC, având în vedere că, în majoritatea cazurilor, Keosd rulează nativ. Prin urmare, aceasta este și opțiunea implicită de instanțiere pentru WalletClient și, în majoritatea cazurilor, nu este necesar să se introducă parametri suplimentari pentru a instanția WalletClient.

4. Chei private și publice

Algoritmul cheie al EOS este similar cu Bitcoin, dar cu unele ajustări și definirea propriului format.
Folosește metoda statică a clasei PrivateKey new() pentru a genera o cheie privată aleatorie. De exemplu:
metoda toEos() este folosită pentru a converti obiectele cu cheie privată într-un format personalizat pentru EOS.

4.1 Derivarea cheilor publice
Cheia publică poate fi derivată din cheia privată, cum ar fi:


În mod similar, folosește metoda toEos() pentru a converti cheia publică într-un format personalizat pentru EOS.

4.2 Importul cheilor private EOS
Poți converti o cheie privată formatată EOS într-un obiect EosTool PrivateKey, de exemplu, codul de mai jos importă cheia privată EOS specificată și afișează cheia publică EOS corespunzătoare:

4.3 Semnătura autoritară
Metoda sign() a PrivateKey suportă atât semnături normale, cât și semnături autoritare cerute de nodurile EOS. De exemplu, următorul cod returnează o semnătură simplă:

Introduceți parametri suplimentari pentru a obține o semnătură autoritară pentru datele specificate:



5. Serializare
EOS necesită ca tranzacțiile să fie serializate înainte de a se face commit la push_transaction nod, ceea ce este, de asemenea, o parte inevitabilă a operării tranzacțiilor EOS în PHP.
În EosTool, clasa Serializer este folosită pentru operațiuni de serializare. De exemplu, următorul cod serializează o tranzacție de transfer EOS într-un format de flux de cod cu 16 zecimale care poate fi trimis către un nod EOS:


Metoda statică fromAbi() din Serializer este folosită pentru a construi o instanță de serializer bazată pe un abi specificat, iar apoi metoda serialize() a instanței este folosită pentru a serializa tipul specificat de date pentru a obține un flux de cod hexazecimal.

6. Semnătură
EosTool oferă două moduri de a semna tranzacțiile: folosind Keosd pentru semnare sau folosind o cheie privată locală.
Folosește clasa KeosdSigner pentru a finaliza semnarea folosind serverul portofelului. De exemplu:

Folosind clasa LocalSigner, poți evita utilizarea keosd și poți folosi direct semnarea cheii private offline. De exemplu:
folosește EosTool\Signer\LocalSigner;

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



7. Trimiterea tranzacțiilor
Datele unei tranzacții trebuie normalizate, serializate, semnate și ambalate printr-o serie de operații înainte de a putea fi trimise nodului Nodeos pentru difuzare. Clasa EosTool oferă metoda transact() pentru a izola aceste operații plictisitoare.
De exemplu, codul de mai jos creează o instanță EosTool folosind NodeClient și LocalSigner, apoi trimite o tranzacție:
Este convenabil să schimbi semnatarul în KeosdSigner, de exemplu:


8. Invocarea unei singure acțiuni contractuale
Folosește metoda pushAction() a EosTool pentru a chema o singură acțiune contractuală. De exemplu, următorul cod apelează metoda hi() din contractul de găzduire al contului Tommy:



9. Implementarea contractului
Implementați contractul folosind metoda setContract() a EosTool, de exemplu:
Prietenii interesați pot accesa aici:http://t.cn/EUZAODQ




Postat pe 11.12.2018 08:59:58 |
Mulțumesc, foarte util
 Proprietarul| Postat pe 11.12.2018 09:06:52 |
Vara Postat la 2018-12-11 08:59
Mulțumesc, foarte util

Mulțumesc pentru sprijin.
Postat pe 11.12.2018 09:11:46 |
Am citit mult conținut pe site-ul tău și simt că unele dintre ele sunt articole străine traduse
Postat pe 11.12.2018 09:32:07 |
Uită-te la mulțumesc, șefule, că te-ai îmbogățit
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com