android和java工程師使用web3j進行區塊鏈以太坊開發教程
來源:互聯網
上載者:User
如何使用web3j為Java應用或Android App增加以太坊區塊鏈支援,本教程內容即涉及以太坊中的核心概念,例如賬戶管理組件括賬戶的建立、錢包建立、交易轉賬,交易與狀態、智能合約開發與互動、過濾器和事件等,同時也詳細說明如何使用web3j提供的API開發介面與以太坊進行互動,是java和android(安卓)工程師學習以太坊應用開發(DApp)的不二選擇。### 以太坊概述以太坊是備受關注的區塊鏈,它基於密碼學技術和P2P通訊技術 構建了一個去中心化的平台,所有的交易同步儲存在每個節點中, 通過將區塊單向級聯成鏈,以太坊有效保證了交易的不可篡改:![chain](http://xc.hubwiz.com/class/5b2b6e82c02e6b6a59171de2/img/sketch_blockchain.png)**智能合約平台**以太坊是第一個實現了虛擬機器的區塊鏈,因此為智能合約 - Smart Contract - 的運行提供了良好的支援環境。也正因為這個原因,以太坊被稱為區塊鏈 2.0,以區別於比特幣代表的以數字加密貨幣為核心特徵的區塊鏈1.0。可以將智能合約理解為機器之間的合約約定,在滿足一定條件時自動 執行約定好的邏輯,例如在保險理賠流程中,如果理賠條件滿足就自動 將賠償金釋放給出險人,這個流程就可以使用智能合約來實現。有多種語言可以開發以太坊智能合約,但目前最常用的是類似於JavaScript的 Solidity語言。本課程中將採用Solidity講解智能合約的開發。### JSON RPC與web3j如果我們希望構造一個去中心化應用(DApp),除了智能合約的開發, 通常還需要使用其他開發語言為使用者提供操作智能合約的使用者介面,例如 開發一個網頁、一個手機App或者一個案頭應用。這些代碼都需要與以太坊進行互動。以太坊規定了每個節點需要實現的JSON RPC API 應用程式開發介面,該介面是傳輸無關的,應用程式可以通過HTTP、websocket或IPC等多種 通訊機制來使用該介面協議操作以太坊節點:![web3j network](http://xc.hubwiz.com/class/5b2b6e82c02e6b6a59171de2/img/web3j_network.png)理論上你可以使用任何語言基於JSON RPC介面開發出以太坊之上的 去中心化應用,不過為了提高開發效率,更好的辦法是 使用特定語言的JSON RPC封裝庫,這些庫封裝了JSON RPC的協議細節, 有助於開發人員聚焦在商務邏輯的實現上。web3j是一個輕量級的用於整合以太坊功能的Java開發庫,它是Java版本的以太坊JSON RPC 介面協議封裝實現,如果需要將你的Java應用或Android應用接入以太坊,用web3j就對了。### web3j體系概述web3j的功能組織在不同的包中,展示了`org.web3j`主要包之間的依賴關係:![web3j packages](http://xc.hubwiz.com/class/5b2b6e82c02e6b6a59171de2/img/web3j-packages.png)**core**:JSON RPC協議的封裝主要由包`org.web3j.core`實現,它依賴於`org.web3j.crypto`包提供的密鑰與簽名相關的功能,以及`org.web3j.abi`包提供的java/solidity類型映射支援。**console**:`org.web3j.console`包實現了一個可以單獨啟動並執行命令列程式web3j,我們將使用它來 產生solidity合約的Java封裝類,其中,`org.web3j.codegen`包實現了從abi到java封裝類的代碼產生。**節點相關**:`org.web3j.infura`包封裝了對Infura公用節點旳http訪問服務介面, `org.web3j.geth`和`org.web3j.parity`則分別封裝了這兩種常用以太坊節點軟體旳管理介面。本課程的目的是協助java工程師快速掌握使用web3j開發以太坊應用的技能,因此 主要以web3j的開發介面為主線來展開課程內容,同時穿插講解以太坊的一些基本 概念,例如:賬戶、交易和智能合約的開發等。### 課程內容概述1.hello,web3j將通過一個簡單的java應用的開發來講解使用web3j進行以太坊應用開發的最簡流程,通過這一部分的學習,你就可以在自己的java應用中引入以太坊支援了。2.賬戶管理將詳細介紹web3j提供的賬戶管理介面。如果你對開發錢包應用(中心化/去中心化)感興趣,這部分內容會有很大的協助。web3j建立賬戶,建立錢包,轉賬特別是代幣轉賬等豐富的進行交易的功能。3.狀態與交易主要講解web3j提供的交易操作介面,同時也介紹一些重要的概念,例如狀態、裸交易、gas等。這部分內容將協助你理清java應用與以太坊互動的大多數問題。4.智能合約將通過一個投票合約的開發、編譯、代碼產生、部署與互動的完整流程,講解使用web3j操作solitiy智能合約的方法。5.過濾器與事件主要講解以太坊的通知機制和web3j的響應式封裝介面。該教程為每個知識點都提供了相應的預置代碼,你可以在線上實驗環境的`~/repo`目錄下查看。更詳細的內容點擊這裡開始學習:**[Web3j教程](http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2?affid=studygolang622)**,主要介紹java和android app通過web3j進行區塊鏈以太坊開發,非常適合java和android(安卓)程式員。原文轉自:http://blog.hubwiz.com/2018/06/22/web3j-course-recommend/152 次點擊