Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 9838|Отговор: 4

EOS Blockchain PHP Development Kit

[Копирай линк]
Публикувано в 11.12.2018 г. 8:56:36 ч. | | |
Този пост беше последно редактиран от jimi2018 на 11.12.2018 09:06

1. Преглед на пакета за разработка
Целта на EosTool е да премахне неудобството при разработването на EOS блокчейн приложения с PHP, като например:
  • Извикай функциите му чрез RPC интерфейса на Nodeos и Keosd
  • Генериране на частни и публични ключове в EOS формат офлайн
  • Използвайте локалния си частен ключ, за да генерирате подписи за транзакции, съвместими с EOS,
  • Сериализирайте транзакционните обекти в packed_trx формат, изискван от Nodeos
Може да се счита, че EosTool е PHP версия на eosjs, която може да се използва за пълно реализиране на функциите на официалния клиент на EOS Cleos, а също така лесно може да бъде добавена към поддръжката на блокчейн EOS в PHP приложения, значително подобрявайки ефективността на разработката.

Заинтересовани приятели могат също да отидат директно на тази страница, за да изтеглят EOS блокчейн PHP разработката:http://t.cn/EUZAODQ

EosTool работи в среда Php 7.1+, текущата версия е 1.0.0, а списъкът с основни кодови файлове е както следва:

Кодови файловеилюстрирам
eostool/src/client/NodeClient.phpКласът RPC интерфейсен пакет на възлови софтуерни nodeos
eostool/src/client/WalletClient.phpКласът на инкапсулация на RPC интерфейса на портфейл софтуера KEOSD
eostool/src/client/RpcOutput.phpRPC връща получения клас на капсулиране
eostool/src/Crypto/PrivateKey.phpКлас на EOS частен ключ
eostool/src/Crypto/PublicKey.phpКлас на EOS публичен ключ
eostool/src/Crypto/Signature.phpПодписен клас EOS
eostool/src/Serializer/AbiType.phpКласът ABI тип пакет на EOS
eostool/src/Serializer/AbiTypeFactory.phpЗаводски клас тип ABI
eostool/src/Serializer/SerialBuffer.phpКлас на реализация на сериализиран буфер
eostool/src/Serializer/Serializer.phpКлас на реализация на сериализатор
eostool/src/Signer/Signer.phpИнтерфейс за подписване
eostool/src/Signer/KeosdSigner.phpКлас на имплементация на Keosd signer
eostool/src/Signer/LocalSigner.phpРеализация на локални офлайн signer
eostool/src/Contract.phpДоговорен клас
eostool/src/EosTool.phpКлас на участие в пакета за разработка
eostool/тестовеКаталог на тестови случаи
eostool/phpunit.xmlПрофили на единични тестове
eostool/доставчикПакети за зависимости от трети страни
eostool/composer.jsonКонфигурационен файл на композитора
2. Достъп до node server
Използвайте класа NodeClient за достъп до rpc интерфейса на nodeos. Например, следният код достъпва get_info интерфейса на верижния плъгин за нативно работещ Nodeos възел:
2.1 Групиране на RPC повиквания

EosTool използва последователен метод за именуване, а методът за извикване на NodeClient може да се изведе според API-то: групирането на API съответства на свойство със същото име като NodeClient, а API съответства на метод, конвертиран от camelCase под същия атрибут със същото име като групирането на Client of No. Например:



ПлъгиниГрупиране на APIRPC APINodeClient метод
chain_api_pluginверигаget_info$nc->chain->getInfo()
history_api_pluginИсторияget_transaction$nc->history->getTransaction()
net_api_pluginНетСтатус$nc->net->status()
producer_api_pluginПродуцентget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizeВземи$nc->dbsize->get()

Официална документация за RPC API:https://developers.eos.io/eosio-nodeos/reference

2.2 Параметри на RPC повикване

За Nodeos някои извиквания изискват предаване на допълнителни параметри, като интерфейса get_block на верижния плъгин; когато използвате EosTool за извикване, просто организирайте параметрите в свързан масив, като примерният код е следният:



2.3 RPC извиквания връщат стойности

Резултатът от всички RPC извиквания е RpcOutput инстанция, а извикването на неговия hasError() метод може да определи дали повикването е грешно, а можете допълнително да използвате метода getError() за получаване на информация за грешка.
Отговорът на RPC повикването може да се получи чрез метода getResult(), който е StdClass обект, преобразуван от оригиналния JSON резултат, така че лесно може да се извлече атрибутна информация, като например:

2.4 Достъп до основните/тестовите възли

При създаване на инстанция на NodeClient могат да се подадат допълнителни изпълнения на параметри, за да се дефинират основните или тестовите възли на EOS за достъп. Например, използвайте следния код за достъп до основен възел:

Или посетете възел в тестовата мрежа Jungle:


3. Достъп до сървъра на портфейла
Новата версия на Keosd вече не предоставя документация за RPC API, което може да означава, че тя започва да се измества към ръба в софтуерния стек на EOS. Въпреки това, можете да получите достъп до старата версия на документацията на този адрес:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Използвайте класа WalletClient, за да получите достъп до rpc интерфейса на Keosd. Например, следният код достъпва list_wallets интерфейса на Keosd, който работи нативно:
Тъй като API-то на Keosd вече не е групирано, съответният метод на RPC се задържа директно върху обекта WalletClient, което е разлика. Подобно на NodeClient, повикването към WalletClient връща обект RpcOutput.

Keosd версия 1.4 използва UNIX сокети вместо HTTP, за да предостави RPC интерфейси по подразбиране, което може да се счита за по-безопасно за IPC, тъй като в повечето случаи Keosd работи нативно. Затова това е и опцията за инстанциация по подразбиране за WalletClient и в повечето случаи не е необходимо да се въвеждат допълнителни параметри за създаване на WalletClient.

4. Частни и публични ключове

Алгоритъмът за ключове на EOS е подобен на Биткойн, но с някои промени и дефиниране на собствен формат.
Използвайте статичния метод на клас PrivateKey new(), за да генерирате случаен частен ключ. Например:
методът toEos() се използва за конвертиране на частни ключови обекти в персонализиран формат за EOS.

4.1 Извеждане на публичен ключ
Публичният ключ може да бъде изведен от частния ключ, като:


По подобен начин, използвайте метода toEos() за конвертиране на публичния ключ в персонализиран формат за EOS.

4.2 Импортиране на частни ключове на EOS
Можете да конвертирате частен ключ, форматиран в EOS, в обект PrivateKey на EosTool, например кодът по-долу импортира посочения EOS частен ключ и показва съответния му публичен ключ на EOS:

4.3 Авторитетен подпис
Методът sign() на PrivateKey поддържа както нормални подписи, така и авторитативни подписи, необходими от възлите на EOS. Например, следният код връща обикновен подпис:

Подайте допълнителни параметри, за да получите авторитетен подпис за зададените данни:



5. Сериализация
EOS изисква транзакциите да бъдат сериализирани преди комитирането на възел push_transaction, което също е неизбежна част от оперативните EOS транзакции в PHP.
В EosTool класът Serializer се използва за операции по сериализация. Например, следният код сериализира EOS трансферна транзакция в 16-десетичен кодов поток, който може да бъде подаден към EOS възел:


Статичният метод fromAbi() на Serializer се използва за конструиране на инстанция на сериализатор, базирана на определен abi, а след това методът serialize() на инстанцията се използва за сериализация на зададения тип данни с цел получаване на шестнадесетичен поток от код.

6. Подпис
EosTool предлага два начина за подписване на транзакции: използване на Keosd за подписване или използване на локален частен ключ.
Използвайте класа KeosdSigner, за да завършите подписването чрез сървъра на портфейла. Например:

Използвайки класа LocalSigner, можете да избегнете използването на keosd и директно да използвате офлайн подписване на частни ключове. Например:
използвайте EosTool\Signer\LocalSigner;

$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'];
$signer = нов LocalSigner($prvKeys);
$signatures = $signer->sign($tx,$pubKeys,$chainId);



7. Подаване на транзакцията
Данните от транзакцията трябва да бъдат нормализирани, сериализирани, подписани и пакетирани чрез серия от операции, преди да могат да бъдат предадени на възела Nodeos за излъчване. Класът EosTool предоставя метода transact() за изолиране на тези досадни операции.
Например, кодът по-долу създава EosTool инстанция с помощта на NodeClient и LocalSigner, след което изпраща транзакция:
Удобно е да се смени подписващият на KeosdSigner, например:


8. Да се позове на единен договорен иск
Използвайте метода pushAction() на EosTool, за да извикнете едно действие по договор. Например, следният код извиква метода hi() на договора за хостване на акаунта Tommy:



9. Разгръщане на договора
Разгръщайте договора чрез метода setContract() на EosTool, например:
Заинтересовани приятели могат да посетят тук:http://t.cn/EUZAODQ




Публикувано в 11.12.2018 г. 8:59:58 ч. |
Благодаря. Много полезно.
 Хазяин| Публикувано в 11.12.2018 г. 9:06:52 ч. |
Лято Публикувано на 11.12.2018 08:59
Благодаря. Много полезно.

Благодаря за подкрепата.
Публикувано в 11.12.2018 г. 9:11:46 ч. |
Чел съм много съдържание на вашия сайт и смятам, че някои от тях са преведени чуждестранни статии
Публикувано в 11.12.2018 г. 9:32:07 ч. |
Виж благодаря, шефе, че забогатяваш
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com