Šo ziņu pēdējo reizi rediģēja jimi2018 2018-12-11 09:06
1. Izstrādes paketes pārskatsEosTool mērķis ir novērst sāpes, kas saistītas ar EOS blokķēdes lietojumprogrammu izstrādi, izmantojot PHP, piemēram: - Izsauciet tās funkcijas, izmantojot Nodeos un Keosd RPC saskarni
- Ģenerējiet privātās un publiskās atslēgas EOS formātā bezsaistē
- Vietējās privātās atslēgas izmantošana, lai ģenerētu ar EOS saderīgus darījumu parakstus
- Serializējiet transakciju objektus Nodeos pieprasītajā packed_trx formātā
Var uzskatīt, ka EosTool ir eosjs PHP versija, ko var izmantot, lai pilnībā īstenotu EOS oficiālā klienta Cleos funkcijas, un to var arī viegli pievienot EOS blokķēdes atbalstam PHP lietojumprogrammās, ievērojami uzlabojot izstrādes efektivitāti.
Ieinteresētie draugi var arī doties tieši uz to, lai lejupielādētu EOS blokķēdes PHP izstrādes komplektu:http://t.cn/EUZAODQ
EosTool darbojas Php 7.1+ vidē, pašreizējā versija ir 1.0.0, un galveno koda failu saraksts ir šāds:
| Kodu faili | Ilustrētu | | eostool/src/client/NodeClient.php | Mezglu programmatūras mezglu RPC interfeisa pakotnes klase | | eostool/src/client/WalletClient.php | Maka programmatūras KEOSD RPC interfeisa iekapsulēšanas klase | | eostool/src/client/RpcOutput.php | RPC atgriež iegūto iekapsulēšanas klasi | | eostool / src / Kriptogrāfija / PrivateKey.php | EOS privātās atslēgas klase | | eostool / src / Kriptogrāfija / PublicKey.php | EOS publiskās atslēgas klase | | eostool/src/Crypto/Signature.php | EOS paraksta klase | | eostool/src/Serializer/AbiType.php | EOS ABI tipa paku klase | | eostool/src/Serializer/AbiTypeFactory.php | ABI tipa rūpnīcas klase | | eostool/src/Serializer/SerialBuffer.php | Seriālizētā bufera ieviešanas klase | | eostool/src/Serializer/Serializer.php | Serializatora ieviešanas klase | | eostool/src/parakstītājs/Signer.php | Parakstītāja interfeiss | | eostool/src/parakstītājs/KeosdSigner.php | Keosd parakstītāja ieviešanas klase | | eostool/src/parakstītājs/LocalSigner.php | Lokālā bezsaistes parakstītāja ieviešana | | eostool/src/Contract.php | Līguma klase | | eostool/src/EosTool.php | Izstrādes paketes ieejas klase | | eostool/testi | Vienības testa gadījumu katalogs | | EOSTOOL/phpunit.xml | Vienības testa profili | | eostool/pārdevējs | Trešo pušu atkarības pakotnes | | eostool/composer.json | Komponista konfigurācijas fails | 2. Piekļūstiet mezglu serverimIzmantojiet NodeClient klasi, lai piekļūtu nodeos rpc interfeisam. Piemēram, šāds kods piekļūst ķēdes spraudņa get_info saskarnei vietējā Nodeos mezglā: 2.1 RPC zvanu grupēšana
EosTool izmanto konsekventu nosaukumu piešķiršanas metodi, un NodeClient izsaukuma metodi var secināt saskaņā ar API: API grupēšana atbilst rekvizītam ar tādu pašu nosaukumu kā NodeClient, un API atbilst metodei, ko pārveidojis camelCase ar tādu pašu atribūtu ar tādu pašu nosaukumu kā Client of No grupēšana. Piemēram:
| Spraudņi | API grupēšana | RPC API | NodeClient metode | | chain_api_plugin | ķēde | get_info | $nc->chain->getInfo() | | history_api_plugin | Vēsture | get_transaction | $nc->history->getTransaction() | | net_api_plugin | neto | statuss | $nc->net->status() | | producer_api_plugin | Producents | get_runtime_options | $nc->producer->getRunTimeOptions() | | dbsize_api_plugin | dbsize | iegūt | $nc->dbsize->get() |
RPC API oficiālā dokumentācija:https://developers.eos.io/eosio-nodeos/reference
2.2 RPC zvana parametri
Nodeos dažiem zvaniem ir nepieciešams nodot papildu parametrus, piemēram, ķēdes spraudņa get_block saskarni, izmantojot EosTool, lai veiktu zvanu, vienkārši organizējiet parametrus saistītajā masīvā, parauga kods ir šāds:
2.3 RPC izsaukumi atgriež vērtības
Visu RPC izsaukumu atgrieztais rezultāts ir RpcOutput instance, un, izsaucot tās hasError() metodi, var noteikt, vai izsaukums ir nepareizs, un varat turpināt izmantot getError() metodi, lai iegūtu informāciju par kļūdām. RPC izsaukuma atbildi var iegūt, izmantojot getResult() metodi, kas ir StdClass objekts, kas konvertēts no sākotnējā JSON rezultāta, tāpēc to var viegli iegūt atribūta informāciju, piemēram:
2.4 Piekļuve mainnet/testnet mezgliem
Veidojot NodeClient instanci, var nodot papildu parametru izpildi, lai definētu EOS galveno tīklu vai testtīkla mezglus, kuriem piekļūt. Piemēram, izmantojiet šādu kodu, lai piekļūtu galvenā tīkla mezglam:
Vai arī apmeklējiet mezglu Džungļu testtīklā:
3. Piekļūstiet maka serverimJaunā Keosd versija vairs nenodrošina RPC API dokumentāciju, kas var nozīmēt, ka tā ir sākusi slīdēt uz malu EOS programmatūras kaudzē. Tomēr jūs varat piekļūt vecajai dokumentācijas versijai šajā adresē: https://developers.eos.io/eosio-nodeos/v1.1.0/reference
Izmantojiet WalletClient klasi, lai piekļūtu Keosd rpc interfeisam. Piemēram, šāds kods piekļūst Keosd list_wallets saskarnei, kas darbojas vietējā veidā: Tā kā Keosd API vairs nav grupēts, RPC atbilstošā metode ir tieši piekarināta WalletClient objektam, kas ir atšķirība. Tāpat kā NodeClient, izsaukums uz WalletClient atgriež objektu RpcOutput.
Keosd versija 1.4 izmanto UNIX ligzdas, nevis HTTP, lai nodrošinātu RPC interfeisus pēc noklusējuma, ko var uzskatīt par drošāku IPC izmantošanai, ņemot vērā, ka vairumā gadījumu Keosd darbojas vietēji. Tāpēc šī ir arī WalletClient noklusējuma instancēšanas opcija, un vairumā gadījumu nav jānodod papildu parametri, lai izveidotu WalletClient. 4. Privātās un publiskās atslēgas
EOS galvenais algoritms ir līdzīgs Bitcoin, bet ar dažiem uzlabojumiem un definējot savu formātu. Izmantojiet PrivateKey klases new() statisko metodi, lai ģenerētu nejaušu privāto atslēgu. Piemēram: toEos() metode tiek izmantota, lai pārvērstu privātās atslēgas objektus EOS pielāgotā formātā.
4.1 Publiskās atslēgas atvasināšana Publisko atslēgu var atvasināt no privātās atslēgas, piemēram:
Līdzīgi izmantojiet metodi toEos(), lai konvertētu publisko atslēgu uz pielāgotu EOS formātu.
4.2 Importējiet EOS privātās atslēgas EOS formatētu privāto atslēgu var pārvērst par EosTool PrivateKey objektu, piemēram, zemāk esošais kods importē norādīto EOS privāto atslēgu un parāda atbilstošo EOS publisko atslēgu:
4.3 Autoritatīvs paraksts PrivateKey sign() metode atbalsta gan parastos parakstus, gan autoritatīvus parakstus, kas nepieciešami EOS mezgliem. Piemēram, šāds kods atgriež vienkāršu parakstu:
Nododiet papildu parametrus, lai iegūtu autoritatīvu parakstu norādītajiem datiem:
5. Serializācija
EOS pieprasa, lai darījumi tiktu serializēti pirms mezgla push_transaction, kas arī ir neizbēgama EOS darījumu darbības daļa PHP. Programmā EosTool serializācijas operācijām tiek izmantota klase Serializer. Piemēram, šāds kods serializē EOS pārsūtīšanas transakciju 16 decimāldaļu kodu plūsmas formātā, ko var iesniegt EOS mezglā:
Statiskā metode fromAbi() of Serializer tiek izmantota, lai izveidotu serializatora instanci, pamatojoties uz norādīto abi, un pēc tam instances serialize() metode tiek izmantota, lai serializētu norādīto datu tipu, lai iegūtu heksadecimālo koda plūsmu. 6. ParakstsEosTool piedāvā divus veidus, kā parakstīt darījumus: izmantojot Keosd parakstīšanai vai izmantojot vietējo privāto atslēgu. Izmantojiet KeosdSigner klasi, lai pabeigtu parakstīšanu, izmantojot maka serveri. Piemēram:
Izmantojot klasi LocalSigner, varat izvairīties no keosd izmantošanas un tieši izmantot bezsaistes privātās atslēgas parakstīšanu. Piemēram: izmantojiet EosTool\Signer\LocalSigner;
$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3']; $signer = jauns LocalSigner($prvKeys); $signatures = $signer->zīme($tx,$pubKeys,$chainId);
7. Darījuma iesniegšana
Darījuma dati ir jānormalizē, jāserializē, jāparaksta un jāiepako, izmantojot virkni operāciju, pirms tos var iesniegt Nodeos mezglā apraidei. EosTool klase nodrošina transact() metodi, lai izolētu šīs garlaicīgās darbības. Piemēram, tālāk norādītais kods izveido EosTool instanci, izmantojot NodeClient un LocalSigner, un pēc tam iesniedz darījumu: Parakstītāju ir ērti nomainīt uz KeosdSigner, piemēram:
8. Izsauciet vienu līguma darbībuIzmantojiet EosTool pushAction() metodi, lai izsauktu vienu līguma darbību. Piemēram, šis kods izsauc Tommy konta mitināšanas līguma hi() metodi:
9. Izvietojiet līgumuIzvietojiet līgumu, izmantojot EosTool setContract() metodi, piemēram: Ieinteresētie draugi var doties šeit:http://t.cn/EUZAODQ
|