Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 9838|Atsakyti: 4

EOS Blockchain PHP kūrimo rinkinys

[Kopijuoti nuorodą]
Paskelbta 2018-12-11 08:56:36 | | |
Šį 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 failaiIliustruoti
eostool/src/client/NodeClient.phpMazgo programinės įrangos mazgų RPC sąsajos paketo klasė
eostool/src/client/WalletClient.phpPiniginės programinės įrangos RPC sąsajos kapsuliavimo klasė KEOSD
eostool/src/client/RpcOutput.phpRPC grąžina gautą inkapsuliavimo klasę
eostool/src/Crypto/PrivateKey.phpEOS privataus rakto klasė
eostool/src/Crypto/PublicKey.phpEOS viešojo rakto klasė
eostool/src/Crypto/Signature.phpEOS parašo klasė
eostool/src/Serializer/AbiType.phpEOS ABI tipo paketo klasė
eostool/src/Serializer/AbiTypeFactory.phpABI tipo gamyklinė klasė
eostool/src/Serializer/SerialBuffer.phpNuosekliojo buferio diegimo klasė
eostool/src/Serializer/Serializer.phpSerializatoriaus diegimo klasė
eostool/src/Signer/Signer.phpPasirašančiojo sąsaja
eostool/src/Signer/KeosdSigner.phpKeosd signataro diegimo klasė
eostool/src/Signer/LocalSigner.phpVietinio autonominio pasirašymo diegimas
eostool/src/Contract.phpSutarties klasė
eostool/src/EosTool.phpKūrimo paketo pradinė klasė
eostool/testaiVieneto testavimo atvejų katalogas
eostool/phpunit.xmlVieneto bandymo profiliai
eostool/pardavėjasTrečiųjų šalių priklausomybės paketai
eostool/composer.jsonKompozitoriaus 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:



ĮskiepiaiAPI grupavimasRPC APINodeClient metodas
chain_api_plugingrandinėget_info$nc->chain->getInfo()
history_api_pluginIstorijaget_transaction$nc->history->getTransaction()
net_api_plugingrynasisBūsena$nc->net->status()
producer_api_pluginprodiuserisget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizegauti$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




Paskelbta 2018-12-11 08:59:58 |
Ačiū Labai naudinga
 Savininkas| Paskelbta 2018-12-11 09:06:52 |

Ačiū už palaikymą.
Paskelbta 2018-12-11 09:11:46 |
Aš perskaičiau daug turinio jūsų svetainėje, ir manau, kad kai kurie iš jų yra išversti užsienio straipsniai
Paskelbta 2018-12-11 09:32:07 |
Pažvelkite į ačiū viršininkui, kad praturtėjote
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com