Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 9838|Odpověď: 4

EOS Blockchain PHP vývojová sada

[Kopírovat odkaz]
Zveřejněno 11.12.2018 8:56:36 | | |
Tento příspěvek byl naposledy upraven jimi2018 dne 11. 12. 2018 v 09:06

1. Přehled vývojového balíčku
Účelem EosTool je eliminovat komplikace spojené s vývojem EOS blockchainových aplikací pomocí PHP, například:
  • Funkce lze volat přes RPC rozhraní Nodeos a Keosd
  • Generování soukromých a veřejných klíčů ve formátu EOS offline
  • Použijte svůj lokální soukromý klíč k generování transakčních podpisů kompatibilních s EOS
  • Serializujte transakční objekty do packed_trx formátu požadovaného Nodeosem
Lze považovat EosTool za PHP verzi eosjs, kterou lze použít k plné implementaci funkcí oficiálního klienta EOS Cleos, a také ji lze snadno přidat k podpoře EOS blockchainu v PHP aplikacích, což výrazně zvyšuje efektivitu vývoje.

Zájemci si také mohou přímo stáhnout vývojovou sadu EOS blockchain PHP:http://t.cn/EUZAODQ

EosTool běží v prostředí Php 7.1+, aktuální verze je 1.0.0 a seznam hlavních kódových souborů je následující:

Kódové souboryilustrovat
eostool/src/klient/NodeClient.phpTřída balíčků RPC rozhraní pro nodeos softwaru nodes
eostool/src/klient/WalletClient.phpTřída zapouzdření rozhraní RPC v peněženkovém softwaru KEOSD
eostool/src/klient/RpcOutput.phpRPC vrací výslednou třídu zapouzdření
eostool/src/Crypto/PrivateKey.phpTřída soukromého klíče EOS
eostool/src/Crypto/PublicKey.phpTřída veřejného klíče EOS
eostool/src/Crypto/Signature.phpTřída podpisu EOS
eostool/src/Serializer/AbiType.phpTřída ABI typu balíků EOS
eostool/src/Serializer/AbiTypeFactory.phpTovární třída typu ABI
eostool/src/Serializer/SerialBuffer.phpImplementační třída serializovaného bufferu
eostool/src/Serializer/Serializer.phpImplementační třída serializéru
eostool/src/Signer/Signer.phpRozhraní signer
eostool/src/Signer/KeosdSigner.phpKeosd signer implementační třída
eostool/src/Signer/LocalSigner.phpImplementace lokálního offline signeru
eostool/src/Contract.phpSmluvní třída
eostool/src/EosTool.phpVstupní třída vývojového balíčku
EOSTOOL/TestyKatalog případů jednotkových testů
eostool/phpunit.xmlProfily jednotkových testů
eostool/prodejceBalíčky závislostí třetích stran
eostool/composer.jsonKonfigurační soubor composer
2. Přístup k uzlovému serveru
Použijte třídu NodeClient pro přístup k rpc rozhraní nodeos. Například následující kód přistupuje k get_info rozhraní řetězcového pluginu pro nativně běžící uzel Nodeos:
2.1 Skupinování hovorů RPC

EosTool používá konzistentní metodu pojmenování a volací metodu NodeClient lze odvodit podle API: seskupení API odpovídá vlastnosti stejného jména jako NodeClient a API odpovídá metodě převedené camelCase pod stejným atributem stejného jména jako skupina Client of No. Například:



PluginySkupinování APIRPC APIMetoda NodeClient
chain_api_pluginŘetězget_info$nc->chain->getInfo()
history_api_pluginHistorieget_transaction$nc->history->getTransaction()
net_api_pluginnetStav$nc->net->status()
producer_api_pluginProducentget_runtime_options$nc->producent->getRunTimeOptions()
dbsize_api_plugindbsizeDostaň$nc->dbsize->get()

Oficiální dokumentace pro RPC API:https://developers.eos.io/eosio-nodeos/reference

2.2 Parametry volání RPC

U Nodeos některé volání vyžadují předání dalších parametrů, například get_block rozhraní chain pluginu, při použití EosTool k volání stačí uspořádat parametry do příslušného pole, ukázkový kód je následující:



2.3 Návratové hodnoty volání RPC

Výsledek všech RPC volání je instance RpcOutput a volání metody hasError() může určit, zda je volání nesprávné, a dále můžete použít metodu getError() k získání chybových informací.
Odpověď volání RPC lze získat metodou getResult(), což je objekt StdClass převedený z původního výsledku JSON, takže lze snadno extrahovat informace o atributech, například:

2.4 Přístup k mainnet/testnet uzlům

Při vytváření instance NodeClient lze předávat další provádění parametrů, které definují EOS mainnet nebo testnet uzly pro přístup. Například použijte následující kód pro přístup k uzlu hlavní sítě:

Nebo navštivte uzel na Jungle testnetu:


3. Přístup k serveru peněženky
Nová verze Keosd již neposkytuje dokumentaci RPC API, což může znamenat, že se začala posouvat na okraj softwarového stacku EOS. Nicméně ke starší verzi dokumentace máte přístup na této adrese:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Použijte třídu WalletClient pro přístup k RPC rozhraní Keosd. Například následující kód přistupuje k list_wallets rozhraní Keosd, které běží nativně:
Protože Keosd API již není seskupené, odpovídá RPC metodě je přímo zavěšena na objektu WalletClient, což je rozdíl. Stejně jako u NodeClient, volání WalletClient vrací objekt RpcOutput.

Verze Keosd 1.4 používá UNIX sockety místo HTTP pro poskytování RPC rozhraní ve výchozím nastavení, což může být považováno za bezpečnější pro použití IPC, vzhledem k tomu, že Keosd běží nativně. Proto je to také výchozí možnost instancování WalletClienta a ve většině případů není nutné předávat žádné další parametry k vytvoření WalletClient.

4. Soukromé a veřejné klíče

Klíčový algoritmus EOS je podobný Bitcoinu, ale s několika úpravami a definováním vlastního formátu.
Použijte statickou metodu třídy PrivateKey new() k vytvoření náhodného soukromého klíče. Například:
metoda toEos() se používá k převodu objektů soukromého klíče do vlastního formátu pro EOS.

4.1 Odvození veřejného klíče
Veřejný klíč lze odvodit z privátního klíče, například:


Podobně použijte metodu toEos() k převodu veřejného klíče do vlastního formátu pro EOS.

4.2 Import soukromých klíčů EOS
Soukromý klíč formátovaný v EOS můžete převést na objekt EosTool PrivateKey, například níže uvedený kód importuje specifikovaný privátní klíč EOS a zobrazí odpovídající veřejný klíč EOS:

4.3 Autoritativní podpis
Metoda sign() v PrivateKey podporuje jak běžné, tak autoritativní podpisy požadované uzly EOS. Například následující kód vrací prostý podpis:

Předejte další parametry pro získání autoritativního podpisu pro zadaná data:



5. Serializace
EOS vyžaduje, aby byly transakce před uložením push_transaction uzlu serializovány, což je také nevyhnutelná součást provozu EOS transakcí v PHP.
V EosToolu se třída Serializer používá pro operace serializace. Například následující kód serializuje EOS přenosovou transakci do formátu kódového proudu o 16 desetinných číslech, který lze odeslat uzlu EOS:


Statická metoda fromAbi() v Serializeru se používá ke konstrukci instance serializeru na základě specifikovaného abi, a poté se metoda serializace() instance používá k serializaci specifikovaného typu dat za účelem získání hexadecimálního kódového proudu.

6. Podpis
EosTool nabízí dva způsoby podepisování transakcí: pomocí Keosd pro podepisování nebo pomocí lokálního soukromého klíče.
Použijte třídu KeosdSigner k dokončení podpisu pomocí serveru peněženky. Například:

Použitím třídy LocalSigner se můžete vyhnout používání keosd a přímo použít offline podepisování privátních klíčů. Například:
používat EosTool\Signer\LocalSigner;

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



7. Podání transakce
Transakční data musí být normalizována, serializována, podepsána a zabalena prostřednictvím řady operací, než mohou být odeslána uzlu Nodeos k vysílání. Třída EosTool poskytuje metodu transact() pro izolaci těchto únavných operací.
Například níže uvedený kód vytvoří instanci EosTool pomocí NodeClient a LocalSigner a poté odešle transakci:
Je pohodlné změnit signer na KeosdSigner, například:


8. Uplatnit jednu smluvní žalobu
Použijte metodu pushAction() v EosToolu k volání jedné smluvní akce. Například následující kód volá metodu hi() z Tommy smlouvy o hostingu účtu:



9. Nasadit smlouvu
Například použijte smlouvu pomocí metody setContract() od EosTool:
Zájemci mohou navštívit zde:http://t.cn/EUZAODQ




Zveřejněno 11.12.2018 8:59:58 |
Díky. Velmi užitečné.
 Pronajímatel| Zveřejněno 11.12.2018 9:06:52 |

Děkuji za podporu.
Zveřejněno 11.12.2018 9:11:46 |
Na vašem webu jsem četl spoustu obsahu a mám pocit, že některé z nich jsou přeložené zahraniční články
Zveřejněno 11.12.2018 9:32:07 |
Podívej se na děkuji šéfe, že jsi zbohatl
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com