С прошлого года мы развиваем блокчейн-бизнес. Я недавно использовал 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, перепечатан, пожалуйста, укажите источник. Вот оригинальный текст.