自去年以來,咱們正在開發區塊鏈(Blockchain)業務。最近使用過Ethereum並使用PHP,因此我想咱們應該聊聊這個話題。php
這裏有個前提:git
本文的主要內容:github
咱們將使用Ubuntu 14.04 LTS。安裝操做系統後,輸入預先肯定的命令。web
$ sudo apt-get update $ sudo apt-get upgrade
以後我設置了SSH,iptables,ntp等等。apache
而後是Apache + PHP。PHP版本將爲5.5。編程
$ sudo apt - get install php 5 libapache 2 - mod - php 5 php 5 - curl
此次咱們將使用GO語言製做的以太坊節點,go-ethereum
簡稱geth。json
首先讓咱們添加一個存儲庫。vim
$ sudo apt-get install software-properties-common $ sudo add-apt-repository -y ppa:ethereum / ethereum $ sudo add-apt-repository -y ppa:ethereum / ethereum-dev
以後,只需安裝它便可。api
$ sudo apt-get update $ sudo apt-get install ethereum
安裝完成後當即啓動geth。
首先,建立一個數據目錄並描述第一個塊(創世塊)的設置。cors
$ mkdir~ / eth_private_net $ vim~ / eth_private_net / my_genesis.json { 「nonce」:「0x0000000000000042」, 「timestamp」:「0x0」, 「parentHash」:「0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000」, 「extraData」:「0x0」, 「gasLimit」:「0xffffffff」, 「難度」:「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
處於控制檯模式時,啓動成功。
指定了幾個選項,解釋總結以下。
好了,準備PHP的下一個調用,可是在此以前讓咱們在geth方面作更多準備。
經過JSON-RPC從PHP訪問。在這裏,咱們將設置鄰域。
首先,將獲取當前的賬戶信息。咱們還使用上次啓動的geth控制檯。
> eth.accounts []
咱們尚未建立一個賬戶,因此須要將建立它。
> personal.newAccount("password") "0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b" > eth.accounts ["0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b"]
賬戶現已建立。咱們設置它,以便在挖礦時能夠得到獎勵。
> miner.setEtherbase(eth.accounts [0])
接下來,因爲當前節點不容許RPC調用,所以添加一個選項並再次啓動它。首先讓咱們結束geth。
> 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的幾個選項。解釋以下。
節點端如今準備就緒。接下來將是來自PHP的調用。
最後就是爲何從PHP訪問,而是有他們,由於這是至關困難,當你寫代碼的時候可使用這個。
正如你在README中看到的,你只須要建立一個類。
讓咱們經過將它放在與測試腳本相同的目錄中來使用它。
$ cd /home/yoshida/php-eth/ $ ls -l ethereum.php json-rpc.php $ vim test.php <?php require_once 'ethereum.php'; $ethereum = new Ethereum('localhost', '8956'); print_r($ethereum->eth_accounts());
當咱們運行這個腳本時,應該有一個賬戶列表以下。
$ php test.php Array ( [0] => 0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b )
若是沒法鏈接,請檢查端口設置等。
到目前爲止,咱們簡單的解釋了它,但感受使用PHP開發是否是出乎意料地容易?
當涉及智能合約時,它會變得有點複雜,咱們到時候再寫一篇。
======================================================================
另外若是你想直接看看區塊鏈在以太坊中是如何使用的,能夠學習下面的教程:
php以太坊,主要是介紹使用php進行智能合約開發交互,進行帳號建立、交易、轉帳、代幣開發以及過濾器和事件等內容。
匯智網原創翻譯,轉載請標明出處。這裏是原文