Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 9838|Ответ: 4

Комплект разработки EOS Blockchain PHP

[Скопировать ссылку]
Опубликовано 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 Blockchain PHP:http://t.cn/EUZAODQ

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

Кодовые файлыиллюстрировать
eostool/src/client/NodeClient.phpКласс пакетов интерфейса RPC для узлов
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Интерфейс signer
eostool/src/Signer/KeosdSigner.phpКласс реализации Keosd signer
eostool/src/Signer/LocalSigner.phpРеализация локального офлайн-знака
eostool/src/Contract.phpКонтрактный класс
eostool/src/EosTool.phpКласс входа в пакет разработки
eostool/тестыКаталог модульных тестовых случаев
eostool/phpunit.xmlПрофили модульных тестов
eostool/vendorСторонние пакеты зависимостей
eostool/composer.jsonКонфигурационный файл composer
2. Доступ к серверу узлов
Используйте класс NodeClient для доступа к интерфейсу rpc nodeos. Например, следующий код обращается к интерфейсу get_info плагина цепи для нативно запущенного узла Nodeos:
2.1 Группировка вызовов RPC

EosTool использует согласованный метод именования, и метод вызова NodeClient можно вывести по API: группировка API соответствует свойству с тем же именем, что и NodeClient, а API — методу, преобразованному CamelCase под тем же атрибутом того же имени, что и группировка клиента No. Например:



ПлагиныГруппировка APIRPC APIМетод NodeClient
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 Доступ к узлам mainnet/testnet

При создании экземпляра NodeClient могут передаваться дополнительные исполнения параметров для определения узлов EOS mainnet или testnet для доступа. Например, используйте следующий код для доступа к узлу основной сети:

Или посетите узел в тестовой сети 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 похож на Bitcoin, но с некоторыми изменениями и определением собственного формата.
Используйте статический метод класса 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 класс сериализаторов используется для операций сериализации. Например, следующий код сериализует транзакцию передачи EOS в формате 16-десятичного кодового потока, который может быть отправлен на узел EOS:


Статический метод fromAbi() из Serializer используется для построения экземпляра сериализатора на основе заданного abi, а затем метод serialize() этого экземпляра сериализируется для сериализации указанного типа данных с целью получения шестнадцатеричного потока кода.

6. Подпись
EosTool предлагает два способа подписания транзакций: использование Keosd для подписи или локальный приватный ключ.
Используйте класс KeosdSigner для завершения подписи с помощью сервера кошелька. Например:

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

$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'];
$signer = новый LocalSigner($prvKeys);
$signatures = $signer->знак($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