android和java程式設計師使用web3j進行區塊鏈以太坊開發詳解
如何使用web3j為Java應用或Android App增加以太坊區塊鏈支援,涉及以太坊中的核心概念,例如賬戶管理包括賬戶的建立、錢包建立、交易轉賬,交易與狀態、智慧合約開發與互動、過濾器和事件等,同時如何使用web3j提供的API開發介面與以太坊進行互動,這裡推薦個教程是java和android工程師學習以太坊應用開發的不二選擇。
以太坊概述
以太坊是備受關注的區塊鏈,它基於密碼學技術和P2P通訊技術 構建了一個去中心化的平臺,所有的交易同步儲存在每個節點中, 通過將區塊單向級聯成鏈,以太坊有效的保證了交易的不可篡改:
智慧合約平臺
以太坊是第一個實現了虛擬機器的區塊鏈,因此為智慧合約 - Smart Contract - 的執行提供了良好的支援環境。也正因為這個原因,以太坊被稱為區塊鏈 2.0,以區別於比特幣代表的以數字加密貨幣為核心特徵的區塊鏈1.0。
可以將智慧合約理解為機器之間的合同約定,在滿足一定條件時自動 執行約定好的邏輯,例如在保險理賠流程中,如果理賠條件滿足就自動 將賠償金釋放給出險人,這個流程就可以使用智慧合約來實現。
有多種語言可以開發以太坊智慧合約,但目前最常用的是類似於JavaScript的 Solidity語言。本課程中將採用Solidity講解智慧合約的開發。
JSON RPC與web3j
如果我們希望構造一個去中心化應用(DApp),除了智慧合約的開發, 通常還需要使用其他開發語言為使用者提供操作智慧合約的使用者介面,例如 開發一個網頁、一個手機App或者一個桌面應用。這些程式碼都需要與以太坊進行互動。
以太坊規定了每個節點需要實現的JSON RPC API 應用開發介面,該介面是傳輸無關的,應用程式可以通過HTTP、websocket或IPC等多種 通訊機制來使用該介面協議操作以太坊節點:
理論上你可以使用任何語言基於JSON RPC介面開發出以太坊之上的 去中心化應用,不過為了提高開發效率,更好的辦法是 使用特定語言的JSON RPC封裝庫,這些庫封裝了JSON RPC的協議細節, 有助於開發人員聚焦在業務邏輯的實現上。
web3j是一個輕量級的用於整合以太坊功能的Java開發庫,它是Java版本的以太坊JSON RPC 介面協議封裝實現,如果需要將你的Java應用或Android應用接入以太坊,用web3j就對了。
web3j體系概述
web3j的功能組織在不同的包中,下圖展示了org.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的開發介面為主線來展開課程內容,同時穿插講解以太坊的一些基本 概念,例如:賬戶、交易和智慧合約的開發等。
課程內容概述
hello,web3j 將通過一個簡單的java應用的開發來講解使用web3j進行以太坊應用開發的最簡流程,通過這一部分的學習,你就可以在自己的java應用中引入以太坊支援了。
賬戶管理 將詳細介紹web3j提供的賬戶管理介面。如果你對開發錢包應用(中心化/去中心化)感興趣,這部分內容會有很大的幫助。web3j建立賬戶,建立錢包,轉賬特別是代幣轉賬等豐富的進行交易的功能。
狀態與交易 主要講解web3j提供的交易操作介面,同時也介紹一些重要的概念,例如狀態、裸交易、gas等。這部分內容將幫助你理清java應用與以太坊互動的大多數問題。
智慧合約 將通過一個投票合約的開發、編譯、程式碼生成、部署與互動的完整流程,講解使用web3j操作solitiy智慧合約的方法。
過濾器與事件 主要講解以太坊的通知機制和web3j的響應式封裝介面。
該web3j教程為每個知識點都提供了相應的預置程式碼,你可以在線上實驗環境的~/repo
目錄下檢視。
具體的課程地址:http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2
相關文章
- java使用spring boot和web3j開發以太坊區塊鏈dappJavaSpring BootWeb區塊鏈APP
- java和android app如何使用web3j開發以太坊智慧合約並進行交易JavaAndroidAPPWeb
- 使用API進行區塊鏈開發API區塊鏈
- 程式設計師如何切入區塊鏈去中心化應用開發程式設計師區塊鏈中心化
- 如何招聘面試區塊鏈以太坊開發人才面試區塊鏈
- 【區塊鏈】實戰·以太坊智慧合約程式設計引導區塊鏈程式設計
- 區塊鏈上程式設計:DApp 開發簡介區塊鏈程式設計APP
- 第6章 區塊鏈開發平臺:以太坊區塊鏈
- 區塊鏈程式設計(二)區塊鏈程式設計
- 區塊鏈2.0以太坊編輯器atom配置詳解區塊鏈
- 使用 Go 進行 iOS 和 Android 程式設計GoiOSAndroid程式設計
- 區塊鏈2.0以太坊錢包編譯詳解+連線私有鏈+修改區塊鏈編譯
- 以太坊及區塊鏈 程式資源整合區塊鏈
- 區塊鏈2.0以太坊配置solidity編譯器sublime詳解區塊鏈Solid編譯
- java併發程式設計 | 執行緒詳解Java程式設計執行緒
- 50行ruby程式碼開發一個區塊鏈區塊鏈
- 26個區塊鏈行業常用名詞解釋-區塊鏈交易所開發區塊鏈行業
- 區塊鏈 2.0 :以太坊(九)區塊鏈
- 區塊鏈之以太坊初探區塊鏈
- 從Java到區塊鏈:如何成為區塊鏈開發人員Java區塊鏈
- 招聘Golang區塊鏈開發工程師Golang區塊鏈工程師
- 區塊鏈錢包開發(Android篇)區塊鏈Android
- 區塊鏈設計聊天直播平臺搭建,區塊鏈技術應用開發方案區塊鏈
- NFT區塊鏈遊戲系統開發技術方案丨NFT區塊鏈遊戲系統開發原始碼詳解區塊鏈遊戲原始碼
- 區塊鏈2.0架構:以太坊區塊鏈的介紹區塊鏈架構
- Java 併發程式設計 | 執行緒池詳解Java程式設計執行緒
- 從CRUD程式設計切換到事件溯源和區塊鏈程式設計程式設計事件區塊鏈
- 區塊鏈直銷軟體開發搭建步驟詳解區塊鏈
- 區塊鏈程式設計go(四)-交易區塊鏈程式設計Go
- 區塊鏈開發公司區塊鏈對銀行業意味這什麼?區塊鏈行業
- Java併發程式設計:執行緒封閉和ThreadLocal詳解Java程式設計執行緒thread
- 以太坊DApp開發入門教程——區塊鏈投票系統APP區塊鏈
- 區塊鏈公鏈開發,區塊鏈應用場景解決方案介紹區塊鏈
- 區塊鏈開發_建立區塊鏈公鏈,聯盟鏈,私有鏈區塊鏈
- 區塊鏈搭建開發公司談銀行使用區塊鏈的好處區塊鏈
- php工程師進行以太坊開發的教程PHP工程師
- 【杭州西湖區】招聘區塊鏈開發/Go工程師 薪資18-30K 區塊鏈行業深耕多年區塊鏈Go工程師行業
- 區塊鏈: 暴富的捷徑與程式設計師的舞臺區塊鏈程式設計師