Ta objava je bila nazadnje urejena s strani jimi2018 dne 11. 12. 2018 ob 09:06
1. Pregled razvojnega paketaNamen EosToola je odpraviti težave pri razvoju EOS blockchain aplikacij z uporabo PHP, kot so: - Pokliči njegove funkcije preko RPC vmesnika Nodeos in Keosd
- Generiranje zasebnih in javnih ključev v EOS formatu brez povezave
- Uporabite svoj lokalni zasebni ključ za generiranje podpisov transakcij, skladnih z EOS-om
- Serializirajte transakcijske objekte v packed_trx format, ki ga zahteva Nodeos
Lahko štejemo, da je EosTool PHP različica eosjs, ki jo je mogoče uporabiti za popolno implementacijo funkcij uradnih EOS odjemalskih Cleos, prav tako pa jo je mogoče enostavno dodati v podporo EOS blockchainu v PHP aplikacijah, kar močno izboljša učinkovitost razvoja.
Zainteresirani prijatelji lahko tudi neposredno obiščejo to in prenesejo EOS blockchain PHP razvojni komplet:http://t.cn/EUZAODQ
EosTool teče v okolju Php 7.1+, trenutna različica je 1.0.0, seznam glavnih kodnih datotek pa je naslednji:
| Kodne datoteke | Ponazoritev | | eostool/src/client/NodeClient.php | Razred paketov RPC vmesnika med node-i programske opreme vozlišč | | eostool/src/client/WalletClient.php | Razred enkapsulacije RPC vmesnika v programski opremi denarnice KEOSD | | eostool/src/client/RpcOutput.php | RPC vrne nastali enkapsulacijski razred | | eostool/src/Crypto/PrivateKey.php | EOS razred zasebnega ključa | | eostool/src/Crypto/PublicKey.php | Razred javnega ključa EOS | | eostool/src/Crypto/Signature.php | Razred podpisa EOS | | eostool/src/Serializer/AbiType.php | EOS-ov razred ABI paketov | | eostool/src/Serializer/AbiTypeFactory.php | Tovarniški razred tipa ABI | | eostool/src/Serializer/SerialBuffer.php | Razred implementacije serializiranega medpomnilnika | | eostool/src/Serializer/Serializer.php | Razred implementacije serializatorjev | | eostool/src/Signer/Signer.php | Vmesnik za podpisovanje | | eostool/src/Signer/KeosdSigner.php | Keosd signer implementacijska klasa | | eostool/src/Signer/LocalSigner.php | Implementacija lokalnega offline podpisnika | | eostool/src/Contract.php | Pogodbeni razred | | eostool/src/EosTool.php | Vstopni razred razvojnega paketa | | Eostool/testi | Katalog enotnih testnih primerov | | eostool/phpunit.xml | Enotski testni profili | | eostool/prodajalec | Paketi odvisnosti tretjih oseb | | Eostool/composer.json | Konfiguracijska datoteka skladatelja | 2. Dostop do strežnika vozliščaUporabite razred NodeClient za dostop do rpc vmesnika nodeosa. Na primer, naslednja koda dostopa do get_info vmesnika verižnega vtičnika za nativno delujoče vozlišče Nodeos: 2.1 Združevanje klicev RPC
EosTool uporablja dosledno metodo poimenovanja, in klicno metodo NodeClient je mogoče sklepati glede na API: API skupina ustreza lastnosti z enakim imenom kot NodeClient, API pa ustreza metodi, ki jo camelCase pretvori pod isti atribut istega imena kot skupina Client of No. Na primer:
| Vtičniki | Združevanje API-jev | RPC API | Metoda NodeClient | | chain_api_plugin | Veriga | get_info | $nc->chain->getInfo() | | history_api_plugin | Zgodovina | get_transaction | $nc->history->getTransaction() | | net_api_plugin | Net | Status | $nc->net->status() | | producer_api_plugin | Producent | get_runtime_options | $nc->producent->getRunTimeOptions() | | dbsize_api_plugin | DBSIZE | Dobi | $nc->dbsize->get() |
Uradna dokumentacija za RPC API:https://developers.eos.io/eosio-nodeos/reference
2.2 Parametri klica RPC
Za Nodeos nekateri klici zahtevajo posredovanje dodatnih parametrov, kot je get_block vmesnik verižnega vtičnika; ko uporabljate EosTool za klic, preprosto organizirajte parametre v pripadajoče polje, vzorčna koda je naslednja:
2.3 Klici RPC klicev in povratne vrednosti
Povratni rezultat vseh RPC klicev je instanca RpcOutput, klicanje metode hasError() pa lahko ugotovi, ali je klic napačen, poleg tega pa lahko uporabite metodo getError() za pridobitev informacij o napaki. Odgovor klica RPC je mogoče pridobiti z metodo getResult(), ki je StdClass objekt, pretvorjen iz izvirnega JSON rezultata, zato je mogoče enostavno pridobiti informacije o atributih, kot so:
2.4 Dostop do mainnet/testnet vozlišč
Pri ustvarjanju instance NodeClient se lahko dodajo dodatne izvedbe parametrov za definiranje EOS mainnet ali testnet vozlišč za dostop. Na primer, uporabite naslednjo kodo za dostop do glavnega vozlišča:
Ali obiščite vozlišče na Jungle testnetu:
3. Dostop do strežnika denarniceNova različica Keosd ne zagotavlja več dokumentacije za RPC API, kar lahko pomeni, da se je začel premikati na rob programske opreme EOS. Vendar pa lahko do stare različice dokumentacije dostopate na tem naslovu: https://developers.eos.io/eosio-nodeos/v1.1.0/reference
Uporabi razred WalletClient za dostop do Keosd-jevega rpc vmesnika. Na primer, naslednja koda dostopa do list_wallets vmesnika Keosd, ki teče nativno: Ker Keosdov API ni več združen, je ustrezna metoda RPC neposredno pritrjena na objekt WalletClient, kar predstavlja razliko. Tako kot NodeClient, klic WalletClient vrne objekt RpcOutput.
Keosd različica 1.4 uporablja UNIX vtičnice namesto HTTP, da privzeto zagotavlja RPC vmesnike, kar je lahko varnejše za uporabo IPC, saj Keosd v večini primerov teče nativno. Zato je to tudi privzeta možnost za instanciranje WalletClientClient in v večini primerov ni treba prenesti dodatnih parametrov za instanciranje WalletClienta. 4. Zasebni in javni ključi
EOS-ov ključni algoritem je podoben Bitcoinu, vendar z nekaj prilagoditvami in definiranjem lastnega formata. Uporabite statično metodo razreda PrivateKey new() za generiranje naključnega zasebnega ključa. Na primer: metoda toEos() se uporablja za pretvorbo objektov zasebnega ključa v prilagojen format za EOS.
4.1 Izpeljava javnega ključa Javni ključ lahko izpeljemo iz zasebnega ključa, na primer:
Podobno uporabite metodo toEos() za pretvorbo javnega ključa v prilagojen format za EOS.
4.2 Uvoz zasebnih ključev EOS Zasebni ključ v EOS-formatu lahko pretvorite v EosTool PrivateKey objekt, na primer, spodnja koda uvozi določeni EOS zasebni ključ in prikaže njegov ustrezni EOS javni ključ:
4.3 Avtoritativni podpis Metoda sign() v PrivateKey podpira tako običajne kot avtoritativne podpise, ki jih zahtevajo EOS vozlišča. Na primer, naslednja koda vrne navaden podpis:
Dodajte dodatne parametre za pridobitev avtoritativnega podpisa za določene podatke:
5. Serializacija
EOS zahteva, da so transakcije serializirane pred vložitvijo vozlišča push_transaction, kar je prav tako neizogiben del delovanja EOS transakcij v PHP. V EosToolu se razred Serializator uporablja za operacije serializacije. Na primer, naslednja koda serializira EOS prenosno transakcijo v 16-decimalnem kodnem tokovnem formatu, ki ga je mogoče poslati EOS vozlišču:
Statična metoda fromAbi() iz Serializerja se uporablja za konstrukcijo instance serializerja na podlagi določenega abi, nato pa se metoda serializacije() instance uporabi za serializacijo določene vrste podatkov za pridobitev šestnajstiškega toka kod. 6. PodpisEosTool ponuja dva načina za podpisovanje transakcij: uporabo Keosd za podpisovanje ali uporabo lokalnega zasebnega ključa. Uporabite razred KeosdSigner za dokončanje podpisovanja preko strežnika denarnice. Na primer:
Z uporabo razreda LocalSigner se lahko izognete uporabi keosd in neposredno uporabite offline podpisovanje zasebnega ključa. Na primer: uporabi EosTool\Signer\LocalSigner;
$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3']; $signer = novi LocalSigner($prvKeys); $signatures = $signer->znak($tx,$pubKeys,$chainId);
7. Oddaja transakcije
Podatke transakcije je treba normalizirati, serializirati, podpisati in zapakirati skozi vrsto operacij, preden jih je mogoče poslati vozlišču Nodeos za oddajanje. Razred EosTool zagotavlja metodo transact() za izolacijo teh dolgočasnih operacij. Na primer, spodnja koda ustvari instanco EosTool z uporabo NodeClient in LocalSigner ter nato pošlje transakcijo: Priročno je spremeniti podpisnika v KeosdSigner, na primer:
8. Sprožite enotno pogodbeno tožboUporabite metodo pushAction() v EosToolu za klic ene same pogodbene akcije. Na primer, naslednja koda kliče metodo hi() iz pogodbe o gostovanju Tommy računa:
9. Uvedba pogodbeNa primer, uvedite pogodbo z uporabo metode setContract() podjetja EosTool: Zainteresirani prijatelji lahko obiščejo tukaj:http://t.cn/EUZAODQ
|