天天看點

java程式員使用web3j進行以太坊開發詳解

如何使用web3j為Java應用或Android App增加以太坊區塊鍊支援,教程内容即涉及以太坊中的核心概念,例如賬戶管理包括賬戶的建立、錢包建立、交易轉賬,交易與狀态、智能合約開發與互動、過濾器和事件等,同時也詳細說明如何使用web3j提供的API開發接口與以太坊進行互動,是java工程師學習以太坊應用開發的不二選擇。

以太坊概述

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

java程式員使用web3j進行以太坊開發詳解

智能合約平台

以太坊是第一個實作了虛拟機的區塊鍊,是以為智能合約 - Smart Contract - 的運作提供了良好的支援環境。也正因為這個原因,以太坊被稱為區塊鍊 2.0,以差別于比特币代表的以數字加密貨币為核心特征的區塊鍊1.0。

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

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

課程位址:http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2

JSON RPC與web3j

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

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

java程式員使用web3j進行以太坊開發詳解

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

web3j是一個輕量級的用于內建以太坊功能的Java開發庫,它是Java版本的以太坊JSON RPC 接口協定封裝實作,如果需要将你的Java應用或Android應用接入以太坊,用web3j就對了。

web3j體系概述

web3j的功能組織在不同的包中,下圖展示了

org.web3j

主要包之間的依賴關系:

java程式員使用web3j進行以太坊開發詳解

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的開發接口為主線來展開課程内容,同時穿插講解以太坊的一些基本 概念,例如:賬戶、交易和智能合約的開發等。

課程位址:http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2

課程内容概述

  1. hello,web3j 将通過一個簡單的java應用的開發來講解使用web3j進行以太坊應用開發的最簡流程,通過這一部分的學習,你就可以在自己的java應用中引入以太坊支援了。
  2. 賬戶管理 将詳細介紹web3j提供的賬戶管理接口。如果你對開發錢包應用(中心化/去中心化)感興趣,這部分内容會有很大的幫助。web3j建立賬戶,建立錢包,轉賬特别是代币轉賬等豐富的進行交易的功能。
  3. 狀态與交易 主要講解web3j提供的交易操作接口,同時也介紹一些重要的概念,例如狀态、裸交易、gas等。這部分内容将幫助你理清java應用與以太坊互動的大多數問題。
  4. 智能合約 将通過一個投票合約的開發、編譯、代碼生成、部署與互動的完整流程,講解使用web3j操作solitiy智能合約的方法。
  5. 過濾器與事件 主要講解以太坊的通知機制和web3j的響應式封裝接口。

該web3j教程為每個知識點都提供了相應的預置代碼,你可以在線上實驗環境的

~/repo

目錄下檢視。