Šį pranešimą paskutinį kartą redagavo jimi2018 2018-12-11 09:06
1. Kūrimo paketo apžvalga"EosTool" tikslas yra pašalinti EOS blokų grandinės programų kūrimo naudojant PHP skausmą, pvz.: - Iškvieskite jo funkcijas per "Nodeos" ir "Keosd" RPC sąsają
- Generuokite privačius ir viešuosius raktus EOS formatu neprisijungę
- Naudokite vietinį privatųjį raktą EOS suderinamiems operacijų parašams generuoti
- Serializuokite operacijų objektus į "Nodeos" reikalaujamą packed_trx formatą
Galima manyti, kad EosTool yra PHP eosjs versija, kuri gali būti naudojama norint visiškai įgyvendinti EOS oficialaus kliento Cleos funkcijas, taip pat ją galima lengvai pridėti prie EOS blokų grandinės palaikymo PHP programose, žymiai pagerinant kūrimo efektyvumą.
Susidomėję draugai taip pat gali eiti tiesiai į tai ir atsisiųsti EOS blokų grandinės PHP kūrimo rinkinį:http://t.cn/EUZAODQ
EosTool veikia Php 7.1+ aplinkoje, dabartinė versija yra 1.0.0, o pagrindinių kodo failų sąrašas yra toks:
| Kodo failai | Iliustruoti | | eostool/src/client/NodeClient.php | Mazgo programinės įrangos mazgų RPC sąsajos paketo klasė | | eostool/src/client/WalletClient.php | Piniginės programinės įrangos RPC sąsajos kapsuliavimo klasė KEOSD | | eostool/src/client/RpcOutput.php | RPC grąžina gautą inkapsuliavimo klasę | | eostool/src/Crypto/PrivateKey.php | EOS privataus rakto klasė | | eostool/src/Crypto/PublicKey.php | EOS viešojo rakto klasė | | eostool/src/Crypto/Signature.php | EOS parašo klasė | | eostool/src/Serializer/AbiType.php | EOS ABI tipo paketo klasė | | eostool/src/Serializer/AbiTypeFactory.php | ABI tipo gamyklinė klasė | | eostool/src/Serializer/SerialBuffer.php | Nuosekliojo buferio diegimo klasė | | eostool/src/Serializer/Serializer.php | Serializatoriaus diegimo klasė | | eostool/src/Signer/Signer.php | Pasirašančiojo sąsaja | | eostool/src/Signer/KeosdSigner.php | Keosd signataro diegimo klasė | | eostool/src/Signer/LocalSigner.php | Vietinio autonominio pasirašymo diegimas | | eostool/src/Contract.php | Sutarties klasė | | eostool/src/EosTool.php | Kūrimo paketo pradinė klasė | | eostool/testai | Vieneto testavimo atvejų katalogas | | eostool/phpunit.xml | Vieneto bandymo profiliai | | eostool/pardavėjas | Trečiųjų šalių priklausomybės paketai | | eostool/composer.json | Kompozitoriaus konfigūracijos failas | 2. Pasiekite mazgo serverįNaudokite NodeClient klasę, kad pasiektumėte nodeos rpc sąsają. Pavyzdžiui, šis kodas pasiekia grandinės papildinio get_info sąsają, skirtą natūraliai veikiančiam "Nodeos" mazgui: 2.1 RPC skambučių grupavimas
"EosTool" taiko nuoseklų pavadinimų suteikimo metodą, o "NodeClient" iškvietimo metodą galima nustatyti pagal API: API grupavimas atitinka to paties pavadinimo savybę kaip ir "NodeClient", o API atitinka metodą, konvertuotą "camelCase" tuo pačiu atributu tuo pačiu pavadinimu, kaip ir "Client of No" grupavimas. Pavyzdžiui:
| Įskiepiai | API grupavimas | RPC API | NodeClient metodas | | chain_api_plugin | grandinė | get_info | $nc->chain->getInfo() | | history_api_plugin | Istorija | get_transaction | $nc->history->getTransaction() | | net_api_plugin | grynasis | Būsena | $nc->net->status() | | producer_api_plugin | prodiuseris | get_runtime_options | $nc->producer->getRunTimeOptions() | | dbsize_api_plugin | dbsize | gauti | $nc->dbsize->get() |
Oficiali RPC API dokumentacija:https://developers.eos.io/eosio-nodeos/reference
2.2 RPC skambučio parametrai
"Nodeos" kai kuriems iškvietimams reikia perduoti papildomus parametrus, pvz., grandinės papildinio get_block sąsają, kai naudojate "EosTool" skambučiui, tiesiog sutvarkykite parametrus į susijusį masyvą, pavyzdinis kodas yra toks:
2.3 RPC iškvietimai grąžina reikšmes
Visų RPC iškvietimų grąžinamas rezultatas yra RpcOutput egzempliorius, o iškvietus jo hasError() metodą galima nustatyti, ar iškvietimas neteisingas, ir toliau galite naudoti getError() metodą, kad gautumėte informaciją apie klaidą. RPC iškvietimo atsakymą galima gauti naudojant getResult() metodą, kuris yra StdClass objektas, konvertuotas iš pradinio JSON rezultato, todėl jį galima lengvai išgauti atributo informaciją, pvz.:
2.4 Prieiga prie pagrindinio tinklo / testavimo tinklo mazgų
Kuriant "NodeClient" egzempliorių, galima perduoti papildomus parametrų vykdymus, kad būtų galima apibrėžti EOS pagrindinį tinklą arba testavimo tinklo mazgus. Pavyzdžiui, norėdami pasiekti pagrindinio tinklo mazgą, naudokite šį kodą:
Arba apsilankykite "Jungle" testavimo tinklo mazge:
3. Pasiekite piniginės serverįNaujoje "Keosd" versijoje nebeteikiama RPC API dokumentacija, o tai gali reikšti, kad ji pradėjo slysti į EOS programinės įrangos rietuvės kraštą. Tačiau seną dokumentacijos versiją galite pasiekti šiuo adresu: https://developers.eos.io/eosio-nodeos/v1.1.0/reference
Naudokite "WalletClient" klasę, kad pasiektumėte "Keosd" rpc sąsają. Pavyzdžiui, šis kodas pasiekia list_wallets Keosd sąsają, kuri veikia savaime: Kadangi "Keosd" API nebėra sugrupuota, atitinkamas RPC metodas pakabinamas tiesiai ant "WalletClient" objekto, o tai yra skirtumas. Kaip ir "NodeClient", iškvietimas į "WalletClient" grąžina RpcOutput objektą.
Keosd 1.4 versija naudoja UNIX lizdus, o ne HTTP, kad pagal numatytuosius nustatymus teiktų RPC sąsajas, kurios gali būti laikomos saugesnėmis naudoti IPC, atsižvelgiant į tai, kad daugeliu atvejų Keosd veikia savaime. Todėl tai taip pat yra numatytoji "WalletClient" instanciavimo parinktis, ir daugeliu atvejų nereikia perduoti jokių papildomų parametrų, kad būtų galima sukurti "WalletClient". 4. Privatūs ir viešieji raktai
EOS pagrindinis algoritmas yra panašus į Bitcoin, tačiau su tam tikrais patobulinimais ir apibrėžiant savo formatą. Naudokite statinį PrivateKey klasės new() metodą, kad sugeneruotumėte atsitiktinį privatųjį raktą. Pavyzdžiui: toEos() metodas naudojamas privataus rakto objektams konvertuoti į pasirinktinį EOS formatą.
4.1 Viešojo rakto išvedimas Viešasis raktas gali būti išvestas iš privataus rakto, pvz.:
Panašiai naudokite metodą toEos(), kad konvertuotumėte viešąjį raktą į pasirinktinį EOS formatą.
4.2 Importuokite EOS privačius raktus EOS formatuotą privatųjį raktą galite konvertuoti į "EosTool PrivateKey" objektą, pavyzdžiui, žemiau pateiktas kodas importuoja nurodytą EOS privatųjį raktą ir rodo atitinkamą EOS viešąjį raktą:
4.3 Autoritetingas parašas PrivateKey sign() metodas palaiko tiek įprastus parašus, tiek autoritetingus parašus, reikalingus EOS mazgams. Pavyzdžiui, šis kodas pateikia paprastą parašą:
Perduokite papildomus parametrus, kad gautumėte autoritetingą parašą nurodytiems duomenims:
5. Serializacija
EOS reikalauja, kad operacijos būtų nuoseklingos prieš atliekant mazgo push_transaction, o tai taip pat yra neišvengiama EOS operacijų PHP dalis. "EosTool" serializatoriaus klasė naudojama serializavimo operacijoms. Pavyzdžiui, šis kodas nuosekliai suskirsto EOS perdavimo operaciją į 16 dešimtainių kodų srauto formatą, kurį galima pateikti EOS mazgui:
Statinis metodas fromAbi() of Serializer naudojamas sukurti serializatoriaus egzempliorių, pagrįstą nurodytu abi, o tada egzemplioriaus serialize() metodas naudojamas nurodyto tipo duomenims nuoseklizuoti, kad būtų gautas šešioliktainis kodo srautas. 6. Parašas"EosTool" siūlo du būdus pasirašyti operacijas: naudojant "Keosd" pasirašymui arba naudojant vietinį privatų raktą. Naudokite KeosdSigner klasę, kad užbaigtumėte pasirašymą naudodami piniginės serverį. Pavyzdžiui:
Naudodami LocalSigner klasę galite išvengti keosd naudojimo ir tiesiogiai naudoti privataus rakto pasirašymą neprisijungus. Pavyzdžiui: naudokite EosTool\Signer\LocalSigner;
$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3']; $signer = naujas LocalSigner($prvKeys); $signatures = $signer->ženklas($tx,$pubKeys,$chainId);
7. Sandorio pateikimas
Sandorio duomenys turi būti normalizuoti, nuosekliai, pasirašyti ir supakuoti atliekant keletą operacijų, kad juos būtų galima pateikti Nodeos mazgui transliuoti. EosTool klasė pateikia transact() metodą, skirtą šioms varginančioms operacijoms izoliuoti. Pavyzdžiui, toliau pateiktas kodas sukuria "EosTool" egzempliorių naudojant "NodeClient" ir "LocalSigner", o tada pateikia operaciją: Patogu pakeisti pasirašantį asmenį į KeosdSigner, pavyzdžiui:
8. Pateikite vieną sutarties veiksmąNaudokite "EosTool" metodą pushAction(), kad iškviestumėte vieną sutarties veiksmą. Pavyzdžiui, šis kodas iškviečia "Tommy" paskyros prieglobos sutarties hi() metodą:
9. Įdiekite sutartįĮdiekite sutartį naudodami "EosTool" metodą setContract(), pvz.: Susidomėję draugai gali eiti čia:http://t.cn/EUZAODQ
|