php程序員如何開發區塊鏈、以太坊、智能合約的教程 頂 原 薦

以太坊是備受關注的區塊鏈,它基於密碼學技術和P2P通信技術 構建了一個去中心化的平臺,所有的交易同步保存在每個節點中, 通過將區塊單向級聯成鏈,以太坊有效的保證了交易的不可篡改:

chain

智能合約平臺

以太坊是第一個實現了虛擬機的區塊鏈,因此爲智能合約 - Smart Contract - 的運行提供了良好的支持環境。也正因爲這個原因,以太坊被稱爲區塊鏈 2.0,以區別於比特幣代表的以數字加密貨幣爲核心特徵的區塊鏈1.0。

可以將智能合約理解爲機器之間的合同約定,在滿足一定條件時自動 執行約定好的邏輯,例如在保險理賠流程中,如果理賠條件滿足就自動 將賠償金釋放給出險人,這個流程就可以使用智能合約來實現。

有多種語言可以開發以太坊智能合約,但目前最常用的是類似於JavaScript的 Solidity語言。本課程中將採用Solidity講解智能合約的開發。

JSON-RPC

如果我們希望構造一個去中心化應用(DApp),除了智能合約的開發, 通常還需要使用其他開發語言爲用戶提供操作智能合約的用戶接口,例如 開發一個網頁、一個手機App或者一個桌面應用。這些代碼都需要與以太坊 進行交互。

以太坊規定了每個節點需要實現的JSON RPC API 應用開發接口,該接口是傳輸無關的,應用程序可以通過HTTP、websocket或IPC等多種 通信機制來使用該接口協議操作以太坊節點:

json rpc

理論上你可以使用任何語言基於JSON RPC接口開發出以太坊之上的 去中心化應用,不過爲了提高開發效率,更好的辦法是 使用特定語言的JSON RPC封裝庫,這些庫封裝了JSON RPC的協議細節, 有助於開發人員聚焦在業務邏輯的實現上。

不過在php社區中,目前還缺乏得到統一認可的、相對比較成熟的以太坊開發包,在DApp的開發過程中,往往需要綜合利用多方面的代碼資源才能解決 問題。

課程地址: http://xc.hubwiz.com/course/5b36629bc02e6b6a59171de3

課程內容

本課程的目的是幫助php工程師快速掌握開發以太坊應用的技能,同時穿插 講解以太坊的一些基本概念,例如:賬戶、交易和智能合約的開發等。

第二章 Hi,以太坊 這一章將通過一個簡單的php應用的開發來講解使用 php進行以太坊應用開發的最簡流程,通過這一部分的學習,你就可以在自己 的php應用中引入基本的以太坊支持了。

第三章 賬戶管理 這一章將詳細介紹以太坊的賬戶管理接口。如果你 對開發中心化錢包應用感興趣,或者需要在自己的網站中動態創建賬戶(例如,你 希望爲網站增加對以太坊支付的支持),那麼這部分內容會有很大的幫助。

第四章 理解狀態與交易 這一章主要講解以太坊的交易操作接口,同時也介紹一些 重要的概念,例如狀態、裸交易、gas等。這部分內容將幫助你理清php 應用與以太坊交互的大多數問題。

第五章 智能合約的開發、部署與交互 這一章將通過一個ERC20代幣合約的開發、編譯、代碼生成、部署與交互 的完整流程,講解使用php操作solitiy合約的方法。如果你希望爲自己的 網站增加代幣支持,這一部分的內容是必須的。

第六章 過濾器與事件 這一章主要講解以太坊的通知機制以及如何在php中使用過濾器來監視 塊和交易的生成與合約事件的觸發。

課程爲每個知識點都提供了相應的預置代碼,你可以在實驗環境的~/repo 目錄下查看。

課內php的小例子

使用php獲取節點版本信息。

我們在php代碼中發送http請求包就可以了。你可以使用任何一個你喜歡的http庫例如curl、guzzle等, 甚至直接使用socket來調用以太坊的JSON RPC API。

例如,下面的代碼使用guzzle庫:

<?php
$client = new GuzzleHttp\Client();
$opts = [
  'json' => [
    'jsonrpc' => '2.0',
    'method' => 'web3_clientVersion',
    'params' => [],
    'id' => time()
  ]
];
$rsp = $client->post('http://localhost:8545',$opts);
echo $rsp->getBody() . PHP_EOL;
?>

把上面的內容保存爲raw-test.php,然後執行:

~$ php rpc-guzzle.php

你應當就可以看到結果了。

大家可以訪問這裏php以太坊,本教程詳細講解如何使用Php開發語言爲網站增加以太坊區塊鏈支持,課程內容即涉及以太坊中的核心概念,例如賬戶管理、狀態與交易、智能合約開發與交互、過濾器和事件等,同時也詳細說明如何使用Php與以太坊進行交互,是Php工程師學習以太坊應用開發的不二選擇。

另外推薦幾個教程:

  • web3j教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j開發詳解。
  • 以太坊教程,主要介紹智能合約與dapp應用開發,適合入門。
  • 以太坊開發,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章