Рубрики
Uncategorized

Как PHP взаимодействует с Tai fang через JSON-RPC

Автор оригинала: David Wong.

С прошлого года мы развиваем блокчейн-бизнес. Я недавно использовал Ethereum и PHP, поэтому я думаю, что мы должны поговорить на эту тему.

Здесь есть предпосылка:

  • 1. Понимание цепочек блоков
  • 2. Понимание языков программирования

Основное содержание этой статьи заключается в следующем:

  • 1. Среда разработки
  • 2. Внедрение ETF
  • 3. Подготовьте вызовы JSON-RPC
  • 4. Доступ с PHP

1. Среда разработки

Мы будем использовать Ubuntu 14.04 LTS. После установки операционной системы введите заранее определенные команды.

$ sudo apt-get update
$ sudo apt-get upgrade

Затем я настроил SSH, iptables, NTP и так далее.

Затем Apache + PHP. Версия PHP будет 5.5.

$ sudo apt - get install php 5 libapache 2 - mod - php 5 php 5 - curl

2. Внедрение ETF

На этот раз мы будем использовать язык GO для создания узла Ethernet. go-ethereum Сокращенно Geth.

Сначала давайте добавим репозиторий.

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum / ethereum
$ sudo add-apt-repository -y ppa:ethereum / ethereum-dev

После этого вам просто нужно установить его.

$ sudo apt-get update
$ sudo apt-get install ethereum

Запустите geth сразу после установки. Сначала создайте каталог данных и опишите настройки для первого блока (Блок Генезиса).

$ mkdir~ / eth_private_net
$ vim~ / eth_private_net / my_genesis.json

{
"nonce":"0x0000000000000042",
"timestamp":"0x0",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"extraData":"0x0",
"gasLimit":"0xffffffff",
"Difficulty": "0x4000".
"mixhash":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"coinbase":"0x3333333333333333333333333333333333333333",
"alloc":{}
}

Затем создайте блок Genesis и запустите geth.

$ geth --datadir "/home/yoshida/eth_private_net" init /home/yoshida/eth_private_net/my_genesis.json
$ geth --networkid 57598955 --port 8955 --nodiscover --datadir "/home/yoshida/eth_private_net" console 2>> /home/yoshida/eth_private_net/geth_err.log

В режиме консоли запуск выполняется успешно.

Указано несколько вариантов, и пояснения кратко изложены ниже.

  • Сети, подключенные к общедоступному узлу.
  • Порт, который является резервным портом. Я изменил его на четыре цифры.
  • Нет обнаружения-параметр, который запрещает автоматический просмотр узлов.
  • Datadir-каталог, в котором хранятся данные в указанной цепочке блоков.
  • Консоль, которая одновременно запускает консоль.

Хорошо, приготовьтесь к следующему вызову PHP, но перед этим давайте лучше подготовимся.

3. Подготовьте вызовы JSON-RPC

Доступ с PHP через JSON-RPC. Здесь мы создадим окрестности.

Во-первых, вы получите информацию о текущем счете. Мы также используем последний запуск консоли get.

> eth.accounts
[]

Мы еще не создали учетную запись, поэтому нам нужно ее создать.

> personal.newAccount("password")
"0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b"
> eth.accounts
["0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b"]

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

> miner.setEtherbase(eth.accounts [0])

Затем, поскольку текущий узел не разрешает вызовы RPC, добавьте опцию и запустите ее снова. Давай сначала покончим с гетом.

> exit

Давайте добавим опции и перезапустим

$ geth --networkid 57598955 --port 8955 --nodiscover --rpc --rpcaddr "0.0.0.0" --rpcport "8956" --rpccorsdomain "*" --rpcapi "eth,net,web3,personal" --datadir "/home/yoshida/eth_private_net" console 2>> /home/yoshida/eth_private_net/geth_err.log

Было добавлено несколько опций для RPC. Объяснение заключается в следующем.

  • Rpc, обеспечивающий режим ожидания RPC.
  • Rpcaddr, IP-адрес для режима ожидания RPC.
  • Порт Rpc, используемый для прослушивания портов RPC. Я уменьшил номер порта до 4 цифр.
  • Домен Rpccorsdomain, который обеспечивает доступ к доменам RPC. Обратите внимание, что при публикации узла, если он имеет значение”*”, он будет разрешать все содержимое.

Сторона узла теперь готова. Далее следует вызов от PHP.

4. Доступ с PHP

Наконец, именно поэтому вы получаете доступ к нему с PHP, но они у вас есть, потому что это довольно сложно, и вы можете использовать это при написании кода.

Как вы можете видеть в README, вам просто нужно создать класс.

Давайте используем его, поместив в тот же каталог, что и тестовый сценарий.

$ cd /home/yoshida/php-eth/
$ ls -l
ethereum.php json-rpc.php
$ vim test.php
eth_accounts());

Когда мы запускаем этот скрипт, у нас должен быть список учетных записей следующим образом.

$ php test.php
Array
(
[0] => 0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b
)

Если вы не можете подключиться, проверьте настройки порта и т. Д.

До сих пор мы кратко объясняли это, но находим ли мы, что разработка с помощью PHP на удивление проста?

Когда дело доходит до смарт-контрактов, все становится немного сложнее. Тогда мы напишем еще одну.

======================================================================

Кроме того, если вы хотите непосредственно увидеть, как используются блокчейны в семинаре по Ethernet, вы можете ознакомиться со следующим руководством:

PHP Ethernet workshop в основном знакомит с использованием PHP для интеллектуального взаимодействия при разработке контрактов, создания учетных записей, транзакций, передачи, разработки токенов, фильтров и событий.

Оригинальный перевод Huizhi, перепечатан, пожалуйста, укажите источник. Вот оригинальный текст.