來源:轉(zhuǎn)載 發(fā)布時間:2018-08-13 13:47:22 閱讀量:894
摘要: 以太坊是備受關(guān)注的區(qū)塊鏈,它基于密碼學(xué)技術(shù)和P2P通信技術(shù) 構(gòu)建了一個去中心化的平臺,所有的交易同步保存在每個節(jié)點中, 通過將區(qū)塊單向級聯(lián)成鏈,以太坊有效的保證了交易的不可篡改: 智能合約平臺 以太坊是第一個實現(xiàn)了虛擬機的區(qū)塊鏈,因此為智能合約 - Smart Contract - 的運行提供了良好的支持環(huán)境。
智能合約平臺
以太坊是第一個實現(xiàn)了虛擬機的區(qū)塊鏈,因此為智能合約 - Smart Contract - 的運行提供了良好的支持環(huán)境。也正因為這個原因,以太坊被稱為區(qū)塊鏈 2.0,以區(qū)別于比特幣代表的以數(shù)字加密貨幣為核心特征的區(qū)塊鏈1.0。
可以將智能合約理解為機器之間的合同約定,在滿足一定條件時自動 執(zhí)行約定好的邏輯,例如在保險理賠流程中,如果理賠條件滿足就自動 將賠償金釋放給出險人,這個流程就可以使用智能合約來實現(xiàn)。
有多種語言可以開發(fā)以太坊智能合約,但目前最常用的是類似于JavaScript的 Solidity語言。本課程中將采用Solidity講解智能合約的開發(fā)。
JSON-RPC
如果我們希望構(gòu)造一個去中心化應(yīng)用(DApp),除了智能合約的開發(fā), 通常還需要使用其他開發(fā)語言為用戶提供操作智能合約的用戶接口,例如 開發(fā)一個網(wǎng)頁、一個手機App或者一個桌面應(yīng)用。這些代碼都需要與以太坊 進行交互。
以太坊規(guī)定了每個節(jié)點需要實現(xiàn)的JSON RPC API 應(yīng)用開發(fā)接口,該接口是傳輸無關(guān)的,應(yīng)用程序可以通過HTTP、websocket或IPC等多種 通信機制來使用該接口協(xié)議操作以太坊節(jié)點:
理論上你可以使用任何語言基于JSON RPC接口開發(fā)出以太坊之上的 去中心化應(yīng)用,不過為了提高開發(fā)效率,更好的辦法是 使用特定語言的JSON RPC封裝庫,這些庫封裝了JSON RPC的協(xié)議細節(jié), 有助于開發(fā)人員聚焦在業(yè)務(wù)邏輯的實現(xiàn)上。
不過在php社區(qū)中,目前還缺乏得到統(tǒng)一認可的、相對比較成熟的以太坊開發(fā)包,在DApp的開發(fā)過程中,往往需要綜合利用多方面的代碼資源才能解決 問題。
課程地址:
http://xc.hubwiz.com/course/5b36629bc02e6b6a59171de3
課程內(nèi)容
本課程的目的是幫助php工程師快速掌握開發(fā)以太坊應(yīng)用的技能,同時穿插 講解以太坊的一些基本概念,例如:賬戶、交易和智能合約的開發(fā)等。
第二章 Hi,以太坊
這一章將通過一個簡單的php應(yīng)用的開發(fā)來講解使用 php進行以太坊應(yīng)用開發(fā)的最簡流程,通過這一部分的學(xué)習(xí),你就可以在自己 的php應(yīng)用中引入基本的以太坊支持了。
第三章 賬戶管理
這一章將詳細介紹以太坊的賬戶管理接口。如果你 對開發(fā)中心化錢包應(yīng)用感興趣,或者需要在自己的網(wǎng)站中動態(tài)創(chuàng)建賬戶(例如,你 希望為網(wǎng)站增加對以太坊支付的支持),那么這部分內(nèi)容會有很大的幫助。
第四章 理解狀態(tài)與交易
這一章主要講解以太坊的交易操作接口,同時也介紹一些 重要的概念,例如狀態(tài)、裸交易、gas等。這部分內(nèi)容將幫助你理清php 應(yīng)用與以太坊交互的大多數(shù)問題。
第五章 智能合約的開發(fā)、部署與交互
這一章將通過一個ERC20代幣合約的開發(fā)、編譯、代碼生成、部署與交互 的完整流程,講解使用php操作solitiy合約的方法。如果你希望為自己的 網(wǎng)站增加代幣支持,這一部分的內(nèi)容是必須的。
第六章 過濾器與事件
這一章主要講解以太坊的通知機制以及如何在php中使用過濾器來監(jiān)視 塊和交易的生成與合約事件的觸發(fā)。
課程為每個知識點都提供了相應(yīng)的預(yù)置代碼,你可以在實驗環(huán)境的~/repo 目錄下查看。
課內(nèi)php的小例子
使用php獲取節(jié)點版本信息。
我們在php代碼中發(fā)送http請求包就可以了。你可以使用任何一個你喜歡的http庫例如curl、guzzle等, 甚至直接使用socket來調(diào)用以太坊的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;?>
把上面的內(nèi)容保存為raw-test.php,然后執(zhí)行:
~$ php rpc-guzzle.php
你應(yīng)當就可以看到結(jié)果了。
大家可以訪問這里php以太坊,本教程詳細講解如何使用Php開發(fā)語言為網(wǎng)站增加以太坊區(qū)塊鏈支持,課程內(nèi)容即涉及以太坊中的核心概念,例如賬戶管理、狀態(tài)與交易、智能合約開發(fā)與交互、過濾器和事件等,同時也詳細說明如何使用Php與以太坊進行交互,是Php工程師學(xué)習(xí)以太坊應(yīng)用開發(fā)的不二選擇。
另外推薦幾個教程:
- web3j教程,主要是針對java和android程序員進行區(qū)塊鏈以太坊開發(fā)的web3j開發(fā)詳解。
- 以太坊教程,主要介紹智能合約與dapp應(yīng)用開發(fā),適合入門。
- 以太坊開發(fā),主要是介紹使用node.js、mongodb、區(qū)塊鏈、ipfs實現(xiàn)去中心化電商DApp實戰(zhàn),適合進階。