Ezt a bejegyzést utoljára jimi2018 szerkesztette: 2018-12-11, 09:06
1. Fejlesztési csomag áttekintéseAz EosTool célja, hogy megszüntetze az EOS blokklánc alkalmazások PHP-vel történő fejlesztésének fájdalmát, például: - Hívjuk a funkcióit a Nodeos és Keosd RPC interfészén keresztül
- Privát és nyilvános kulcsok generálása EOS formátumban offline
- Használd a helyi privát kulcsodat EOS-kompatibilis tranzakciós aláírások generálására
- A tranzakciós objektumok sorializálása a Nodeos által előírt packed_trx formátumba
Úgy tekinthető, hogy az EosTool az eosjs PHP verziója, amely teljes mértékben megvalósítható az EOS hivatalos kliens Cleos funkcióinak megvalósítására, és könnyen hozzáadható az EOS blokklánc támogatásához a PHP alkalmazásokban, jelentősen javítva a fejlesztési hatékonyságot.
Az érdeklődő barátok közvetlenül erre is ellátogathatnak, hogy letöltsék az EOS blokklánc PHP fejlesztő készletet:http://t.cn/EUZAODQ
Az EosTool Php 7.1+ környezetben fut, a jelenlegi verzió 1.0.0, és a fő kódfájlok listája a következő:
| Kódfájlok | illusztrál | | eostool/src/client/NodeClient.php | A csomóponti szoftver nodeók RPC interfész csomagosztálya | | eostool/src/client/WalletClient.php | A KEOSD pénztárcaszoftver RPC interfész kapszulázási osztálya | | eostool/src/client/RpcOutput.php | Az RPC visszaadja a kapott kapszulázási osztályt | | eostool/src/Crypto/PrivateKey.php | EOS privát kulcs osztály | | eostool/src/Crypto/PublicKey.php | EOS nyilvános kulcs osztály | | eostool/src/Crypto/Signature.php | EOS aláírásos osztály | | eostool/src/Serializer/AbiType.php | Az EOS ABI típusú csomagosztálya | | eostool/src/Serializer/AbiTypeFactory.php | ABI típusú gyári osztály | | eostool/src/Serializer/SerialBuffer.php | Serializált pufferimplementációs osztály | | eostool/src/Serializer/Serializer.php | Serializer implementációs osztály | | eostool/src/signer/Signer.php | Aláíró interfész | | eostool/src/Signer/KeosdSigner.php | Keosd aláíró implementációs osztály | | eostool/src/Signer/LocalSigner.php | Helyi offline aláíró megvalósítás | | eostool/src/Contract.php | Szerződésosztály | | eostool/src/EosTool.php | Fejlesztési csomag belépési osztály | | eostool/vizsgálatok | Egységteszt eset katalógus | | eostool/phpunit.xml | Egységteszt profilok | | eostool/vendor | Harmadik fél függőségi csomagok | | Eostool/composer.json | Composer konfigurációs fájl | 2. Hozzáférés a csomópont szerverhezHasználd a NodeClient osztályt a nodeos rpc interfészének eléréséhez. Például a következő kód hozzáfér a láncplugin get_info felületéhez egy natívan futó Nodeos csomópontnál: 2.1 RPC híváscsoportosítás
Az EosTool egy következetes elnevezési módszert alkalmaz, és a NodeClient hívó módszere az API alapján következtethető: az API csoportosítás egy azonos nevű tulajdonságnak felel meg, mint a NodeClient, az API pedig egy olyan metódusnak felel meg, amelyet a camelCase ugyanazzal a név attribútummal konvertál, mint a No kliens csoportosítása. Például:
| Pluginek | API csoportosítás | RPC API | NodeClient módszer | | chain_api_plugin | Lánc | get_info | $nc->chain->getInfo() | | history_api_plugin | Történelem | get_transaction | $nc->history->getTransaction() | | net_api_plugin | háló | Státusz | $nc->net->status() | | producer_api_plugin | producer | get_runtime_options | $nc->producer->getRunTimeOptions() | | dbsize_api_plugin | dbsize | Fogd | $nc->dbsize->get() |
Hivatalos dokumentáció az RPC API-hoz:https://developers.eos.io/eosio-nodeos/reference
2.2 RPC hívási paraméterek
Nodeos esetén egyes hívások további paraméterek továbbítását igényelnek, például a láncplugin get_block interfészét, amikor EosTool-t használunk híváshoz, egyszerűen rendezd a paramétereket egy kapcsolódó tömbbe, a mintakód a következő:
2.3 RPC hívások értéket adnak vissza
Az összes RPC hívás visszanyerő eredménye egy RpcOutput példány, és a hasError() metódus hívása meghatározhatja, hogy a hívás hibás-e, továbbá a getError() módszerrel is használhatod hibainformációt. Az RPC hívás válasza a getResult() módszerrel érhető el, amely egy StdClass objektum, amelyet az eredeti JSON eredményből konvertáltak, így könnyen kinyerhető attribútuminformációk, például:
2.4 Hozzáférés a mainnet/testnet csomópontokhoz
NodeClient instance létrehozásakor további paramétervégrehajtások is bekerülhetnek, hogy meghatározzák az EOS mainnet vagy tesztnet csomópontokat. Például a következő kódot használjuk egy főhálózati csomópont eléréséhez:
Vagy látogass meg egy csomópontot a Jungle teszthálózaton:
3. Hozzáférés a pénztárca szerverhezA Keosd új verziója már nem kínál RPC API dokumentációt, ami azt jelentheti, hogy az EOS szoftver stackjében már a szélére csúszik. Azonban a dokumentáció régi verzióját ezen a címen érheti el: https://developers.eos.io/eosio-nodeos/v1.1.0/reference
Használd a WalletClient osztályt a Keosd rpc felületének eléréséhez. Például a következő kód eléri a Keosd list_wallets interfészét, amely natív módon fut: Mivel a Keosd API-ja már nem csoportosítható, az RPC megfelelő módszer közvetlenül a WalletClient objektumra van csatlakoztatva, ami különbség. Ahogy a NodeClient, a WalletClient-hez való hívás is egy RpcOutput objektumot ad vissza.
A Keosd 1.4-es verziója alapértelmezés szerint UNIX socketeket használ HTTP helyett, hogy RPC interfészeket biztosítson, ami biztonságosabbnak tekinthető IPC használatra, mivel a Keosd legtöbb esetben natív módon fut. Ezért ez a WalletClient alapértelmezett instantiációs opciója is, és a legtöbb esetben nem szükséges további paramétereket továbbítani a WalletClient indításához. 4. Magán- és nyilvános kulcsok
Az EOS kulcsfontosságú algoritmusa hasonló a Bitcoinhoz, de néhány finomhangolással és saját formátumot határoz meg. Használd a PrivateKey class, new() statikus módszerét véletlenszerű privát kulcs generálásához. Például: toEos() módszert arra használják, hogy privát kulcsú objektumokat egyedi formátumba alakítsanak EOS számára.
4.1 Nyilvános kulcs levezetés A nyilvános kulcs levezethető a privát kulcsból, például:
Hasonlóképpen, használd a toEos() módszert, hogy a nyilvános kulcsot egyedi formátumra konvertáld EOS számára.
4.2 EOS privát kulcsok importálása Egy EOS formátumú privát kulcsot átalakíthatsz EosTool PrivateKey objektummá, például az alábbi kód importálja a megadott EOS privát kulcsot, és megjeleníti annak megfelelő EOS nyilvános kulcsát:
4.3 Tekintélyalapú aláírás A PrivateKey sign() módszere támogatja mind a normál aláírásokat, mind az EOS csomópontok által előírt hiteles aláírásokat. Például a következő kód egyszerű aláírást ad vissza:
Adjon be további paramétereket, hogy hiteles aláírást kapjon a megadott adatokhoz:
5. Sorozatosítás
Az EOS megköveteli, hogy a tranzakciókat a node push_transaction kötése előtt serializálják, ami szintén elkerülhetetlen része az EOS tranzakciók PHP-ben történő üzemeltetésének. Az EosToolban a Serializer osztályt használják serializációs műveletekhez. Például a következő kód egy EOS átviteli tranzakciót egy 16 decimális kódfolyam formátumba sorol, amelyet egy EOS csomópontnak lehet beküldeni:
A Serializer fromAbi() statikus módszerét használják egy meghatározott abi alapján sorozatizátor példány létrehozására, majd a példány serialize() módszerét használják a megadott adattípus sorializálására, hogy hatdizimális kódfolyamot kapjunk. 6. AláírásAz EosTool kétféleképpen is aláírja a tranzakciókat: Keosd aláírásához vagy helyi privát kulcs használatával. Használd a KeosdSigner osztályt az aláírás befejezéséhez a pénztárca szerveren. Például:
A LocalSigner osztály használatával elkerülheted a keosd használatát, és közvetlenül használhatod az offline privát kulcs aláírást. Például: használd az EosTool\Signer\LocalSigner;
$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3']; $signer = új LocalSigner($prvKeys); $signatures = $signer->jel($tx,$pubKeys,$chainId);
7. Tranzakció benyújtása
Egy tranzakciós adatot normalizálni, sorolni, aláírni és csomagolni kell egy sor műveleten keresztül, mielőtt továbbítható volna a Nodeos csomópontnak sugárzásra. Az EosTool osztály biztosítja a transact() módszert, amellyel ezeket a fárasztó műveleteket elkülönítik. Például az alábbi kód létrehoz egy EosTool példányt a NodeClient és a LocalSigner segítségével, majd tranzakciót küld be: Kényelmes az aláíró KeosdSignerre váltása, például:
8. Egyetlen szerződéses eljárás alkalmazásaHasználd az EosTool pushAction() módszerét egyetlen szerződéses akció meghívására. Például a következő kód hívja a Tommy fiók hárasztó szerződésének hi() módszerét:
9. Telepítsd a szerződéstTelepítsük a szerződést az EosTool setContract() módszerével, például: Érdeklődő barátok itt fordulhatnak:http://t.cn/EUZAODQ
|