Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 9838|Svar: 4

EOS Blockchain PHP utvecklingskit

[Kopiera länk]
Publicerad på 2018-12-11 08:56:36 | | |
Detta inlägg redigerades senast av jimi2018 den 2018-12-11 09:06

1. Översikt av utvecklingspaket
Syftet med EosTool är att eliminera besväret med att utveckla EOS-blockkedjeapplikationer med PHP, såsom:
  • Anropa dess funktioner via RPC-gränssnittet mellan Nodeos och Keosd
  • Generera privata och publika nycklar i EOS-format offline
  • Använd din lokala privata nyckel för att generera EOS-kompatibla transaktionssignaturer
  • Serialisera transaktionsobjekt till det packed_trx-format som krävs av Nodeos
Det kan anses att EosTool är en PHP-version av eosjs, som kan användas för att fullt ut implementera funktionerna hos EOS officiella klient Cleos, och det kan också enkelt läggas till stödet för EOS-blockkedjan i PHP-applikationer, vilket avsevärt förbättrar utvecklingseffektiviteten.

Intresserade vänner kan också gå direkt till detta för att ladda ner EOS blockchain PHP-utvecklingskit:http://t.cn/EUZAODQ

EosTool körs i en Php 7.1+-miljö, den nuvarande versionen är 1.0.0, och listan över huvudkodfiler är följande:

Kodfilerillustrera
eostool/src/klient/NodeClient.phpRPC-gränssnittspaketklassen av nodmjukvarunoder
eostool/src/client/WalletClient.phpRPC-gränssnittsklassen för plånboksprogramvaran KEOSD
eostool/src/klient/RpcOutput.phpRPC returnerar den resulterande inkapslingsklassen
eostool/src/Crypto/PrivateKey.phpEOS privatnyckelklass
eostool/src/Crypto/PublicKey.phpEOS publik nyckelklass
eostool/src/Crypto/Signature.phpEOS signaturklass
eostool/src/Serializer/AbiType.phpEOS:s ABI-typpaketklass
eostool/src/Serializer/AbiTypeFactory.phpABI-typ fabriksklass
eostool/src/Serializer/SerialBuffer.phpSerialiserad buffertimplementeringsklass
eostool/src/Serializer/Serializer.phpSerializer-implementeringsklass
eostool/src/Signer/Signer.phpSignergränssnitt
eostool/src/Signer/KeosdSigner.phpKeosd-signer-implementeringsklass
eostool/src/Signer/LocalSigner.phpLokal offline-signerarimplementation
eostool/src/Contract.phpKontraktsklass
eostool/src/EosTool.phpUtvecklingspaketets inträdesklass
eostool/testerEnhetstestfallkatalog
eostool/phpunit.xmlEnhetstestprofiler
eostool/leverantörTredjepartsberoendepaket
Eostool/composer.jsonComposer konfigurationsfil
2. Åtkomst till nodservern
Använd NodeClient-klassen för att komma åt nodeos rpc-gränssnitt. Till exempel får följande kod tillgång till get_info-gränssnittet i kedjepluginet för en nativt körande Nodeos-nod:
2.1 RPC-samtalsgruppering

EosTool använder en konsekvent namngivningsmetod, och anropsmetoden för NodeClient kan härledas enligt API:et: API-grupperingen motsvarar en egenskap med samma namn som NodeClient, och API:et motsvarar en metod konverterad av camelCase under samma attribut med samma namn som gruppen Client of No. Till exempel:



PluginsAPI-grupperingRPC APINodeClient-metoden
chain_api_pluginKedjaget_info$nc->chain->getInfo()
history_api_pluginHistoriaget_transaction$nc->history->getTransaction()
net_api_pluginnätStatus$nc->net->status()
producer_api_pluginproducentget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizeHämta$nc->dbsize->get()

Officiell dokumentation för RPC API:https://developers.eos.io/eosio-nodeos/reference

2.2 RPC-anropsparametrar

För Nodeos kräver vissa anrop att ytterligare parametrar skickas in, såsom get_block-gränssnittet för kedjepluginet, när man använder EosTool för att göra ett anrop, organisera bara parametrarna i en tillhörande array, exempelkoden är följande:



2.3 RPC-anrop returnerar värden

Returresultatet för alla RPC-anrop är en RpcOutput-instans, och att anropa dess hasError()-metod kan avgöra om anropet är fel, och du kan dessutom använda getError()-metoden för att få fram felinformation.
Svaret på RPC-anropet kan erhållas via getResult()-metoden, som är ett StdClass-objekt konverterat från det ursprungliga JSON-resultatet, så det kan enkelt extraheras attributinformation, såsom:

2.4 Tillgång till mainnet/testnet-noder

När man skapar en NodeClient-instans kan ytterligare parameterexekveringar skickas in för att definiera EOS-mainnet eller testnet-noder att komma åt. Använd till exempel följande kod för att komma åt en mainnet-nod:

Eller besök en nod på Jungle testnet:


3. Få tillgång till plånboksservern
Den nya versionen av Keosd tillhandahåller inte längre RPC API-dokumentation, vilket kan innebära att den har börjat glida ut i gränsen i EOS-mjukvarustacken. Du kan dock komma åt den gamla versionen av dokumentationen på denna adress:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Använd klassen WalletClient för att komma åt Keosds rpc-gränssnitt. Till exempel går följande kod åt det list_wallets gränssnittet i Keosd som körs nativt:
Eftersom Keosds API inte längre är grupperat hängs den RPC-metod som motsvarar direkt på WalletClient-objektet, vilket är en skillnad. Precis som NodeClient returnerar anropet till WalletClient ett RpcOutput-objekt.

Keosd version 1.4 använder UNIX-sockets istället för HTTP för att tillhandahålla RPC-gränssnitt som standard, vilket kan anses säkrare att använda IPC med tanke på att Keosd i de flesta fall körs native. Därför är detta också standardinstansieringsalternativet för WalletClient, och i de flesta fall behöver inga ytterligare parametrar skickas in för att instansiera WalletClient.

4. Privata och offentliga nycklar

EOS nyckelalgoritm liknar Bitcoin, men med vissa justeringar och definierar sitt eget format.
Använd den statiska metoden i PrivateKey-klassen new() för att generera en slumpmässig privat nyckel. Till exempel:
metoden toEos() används för att konvertera privata nyckelobjekt till ett anpassat format för EOS.

4.1 Härledning av offentliga nyckelr
Den publika nyckeln kan härledas från den privata nyckeln, till exempel:


Använd på liknande sätt toEos()-metoden för att konvertera den publika nyckeln till ett anpassat format för EOS.

4.2 Importera EOS privata nycklar
Du kan konvertera en EOS-formaterad privat nyckel till ett EosTool PrivateKey-objekt, till exempel importerar koden nedan den specificerade EOS-privata nyckeln och visar dess motsvarande EOS-publika nyckel:

4.3 Auktoritativ signatur
PrivateKeys sign()-metod stöder både normala signaturer och auktoritativa signaturer som krävs av EOS-noder. Till exempel returnerar följande kod en vanlig signatur:

Skicka in ytterligare parametrar för att få en auktoritativ signatur för den angivna datan:



5. Serialisering
EOS kräver att transaktioner serialiseras innan node push_transaction committas, vilket också är en oundviklig del av att driva EOS-transaktioner i PHP.
I EosTool används Serializer-klassen för serialiseringsoperationer. Till exempel serialiserar följande kod en EOS-överföringstransaktion till ett 16-decimalt kodströmsformat som kan skickas till en EOS-nod:


Den statiska metoden fromAbi() i Serializer används för att konstruera en serializerinstans baserad på en specificerad abi, och sedan används serialize()-metoden för instansen för att serialisera den angivna typen av data för att erhålla en hexadecimal kodström.

6. Signatur
EosTool erbjuder två sätt att signera transaktioner: att använda Keosd för signering eller att använda en lokal privat nyckel.
Använd KeosdSigner-klassen för att slutföra signeringen via plånboksservern. Till exempel:

Genom att använda LocalSigner-klassen kan du undvika att använda keosd och istället använda offline privat nyckelsignering. Till exempel:
använd EosTool\Signer\LocalSigner;

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



7. Transaktionsinlämning
En transaktionsdata måste normaliseras, serialiseras, signeras och paketeras genom en serie operationer innan den kan skickas till Nodeos-noden för sändning. EosTool-klassen tillhandahåller transact()-metoden för att isolera dessa tråkiga operationer.
Till exempel skapar koden nedan en EosTool-instans med NodeClient och LocalSigner, och skickar sedan in en transaktion:
Det är bekvämt att ändra signeraren till KeosdSigner, till exempel:


8. Åberopa en enda avtalsåtgärd
Använd EosTools pushAction()-metod för att anropa en enda kontraktsåtgärd. Till exempel anropar följande kod hi()-metoden i Tommy-kontovärderingskontraktet:



9. Genomför kontraktet
Distribuera kontraktet med EosTools setContract()-metod, till exempel:
Intresserade vänner kan gå hit:http://t.cn/EUZAODQ




Publicerad på 2018-12-11 08:59:58 |
Tack. Mycket användbart.
 Hyresvärd| Publicerad på 2018-12-11 09:06:52 |

Tack för stödet.
Publicerad på 2018-12-11 09:11:46 |
Jag har läst mycket innehåll på er sida, och jag känner att en del av det är översatta utländska artiklar
Publicerad på 2018-12-11 09:32:07 |
Titta på tack chefen för att du blev rik
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com