1. 程式人生 > >Android通過web3j以太坊智慧合約互動

Android通過web3j以太坊智慧合約互動

如果要下載整個以太坊區塊鏈並保持本地節點同步。當區塊鏈佔用了我計算機上超過100GB的空間。這在臺式計算機上可能有意義,但在移動裝置上則不太合理。

解決此限制的一種方法是使用像Infura這樣的服務。Infura允許你連線到遠端以太坊節點並執行交易,而無需擔心維護和同步本地節點。

為了能夠使用本機Java程式碼與智慧合約進行交易,我們使用一個名為Web3j的庫。Web3j為你提供生成智慧合約java封裝包的實用程式,以及通過HTTP和IPC完整實現以太坊的JSON-RPC客戶端API。它提供了更多功能,但剛說的這些對這個“Android Ethereum hello world”示例來說最重要的功能。

我想要與之互動的示例智慧合約是一個Greeter。它在區塊鏈上儲存可以讀取或更新的問候訊息。它看起來像這樣:

contract greeter is mortal {
    /* define variable greeting of the type string */
    string greeting;

    /* this runs when the contract is executed */
    function greeter(string _greeting) public {
        greeting = _greeting;
    }

    /* change greeting */
    function changeGreeting(string _greeting) public {
        greeting = _greeting;
    }

    /* main function */
    function greet() constant returns (string) {
        return greeting;
    }
}

為了能夠建立封裝包,我們首先要編譯這個智慧合約:

solc greeter.sol --bin --abi --optimize -o <output-dir>/

要生成執行的封裝包:

web3j solidity generate /path/to/<smart-contract>.bin /path/to/<smart-contract>.abi -o /path/to/src/main/java -p com.your.organisation.name

Java部分

首先,我們需要獲得以太坊區塊鏈互動的Web3例項。它看起來像這樣:

InfuraHttpService infuraHttpService = new InfuraHttpService(url);
Web3j web3j = Web3jFactory.build("https://ropsten.infura.io/YOUR_API_KEY");

現在我們可以讀取合約幾乎是即時的。

Greeter greeter = Greeter.load(greeterContractAddress, web3j, credentials, gasPrice, gasLimit);
Future<Utf8String> greeting = greeter.greet();
Utf8String greetingUtf8 = greeting.get();
String result = greetingUtf8.getValue();

但交易不是即時的,可能需要幾分鐘才能得到驗證。

Greeter greeter = Greeter.load(greeterContractAddress, web3j, credentials, gasPrice, gasLimit);
TransactionReceipt transactionReceipt = greeter.changeGreeting(new Utf8String(greetingToWrite)).get(timeout);
String result = "Successful transaction. Gas used: " + transactionReceipt.getGasUsed();

如果希望快速進行web3j、java、以太坊開發,那請看我們精心打造的教程:
java以太坊開發教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。

其他以太坊教程如下:

  • 以太坊入門教程,主要介紹智慧合約與dapp應用開發,適合入門。
  • 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
  • python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
  • php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和交易等內容。
  • C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和交易等。
  • php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
  • java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Java程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
  • EOS入門教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。

匯智網原創翻譯,轉載請標明出處。這裡是原文

相關推薦

Android通過web3j智慧合約互動

如果要下載整個以太坊區塊鏈並保持本地節點同步。當區塊鏈佔用了我計算機上超過100GB的空間。這在臺式計算機上可能有意義,但在移動裝置上則不太合理。 解決此限制的一種方法是使用像Infura這樣的服務。Infura允許你連線到遠端以太坊節點並執行交易,而無需擔心維護和同步本地

Android如何與智慧合約互動

如果要下載整個以太坊區塊鏈並保持本地節點同步。當區塊鏈佔用了我計算機上超過100GB的空間。這在臺式計算機上可能有意義,但在移動裝置上則不太合理。 解決此限制的一種方法是使用像Infura這樣的服務。Infura允許你連線到遠端以太坊節點並執行交易,而無需擔心

web3j智慧合約流程淺析

這次的專案,主要在智慧合約開發上。這裡簡單講講隱藏在合約下面的一些東西。solidity合約的編寫以及邏輯處理,請自行度娘。1、web3jweb3j是一套訪問以太坊http rpc服務的java sdk。有什麼業務,主要看etherum-harmony提供的介面,而不是以太坊

web3j教程:java使用web3j開發智慧合約交易

從廣義上講,有web3j支援三種類型的以太坊交易: 1.以太幣從一方交易到另一方 2.建立一個智慧合約 3.與智慧合約交易 為了進行這些交易,必須有以太幣(以太坊區塊鏈的代幣)存在於交易發生的以太坊賬戶中。這是為了支付gas成本,這是為支付參與交易的以太坊客戶端的交

java如何在Spring Boot中用web3j開始開發智慧合約

通過Spring的依賴注入將web3j整合到Spring Boot應用程式中。此處提供了示例應用程式: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

java類庫web3j開發智慧合約快速入門

web3j簡介 web3j是一個輕量級、高度模組化、響應式、型別安全的Java和Android類庫提供豐富API,用於處理以太坊智慧合約及與以太坊網路上的客戶端(節點)進行整合。 可以通過它進行以太坊區塊鏈的開發,而無需為你的java應用平臺編寫整合程式碼。

如何通過solc編譯solidity編寫的智慧合約

solc:solidity的編譯器 solidity編寫的以太坊智慧合約可通過命令列編譯工具solc來進行編譯,成為以太坊虛擬機器中的程式碼。solc編譯後最終部署到鏈上形成我們所見到的各種智慧合約。 作為一個solidity命令列編譯工具,我們來看看官網都

智慧合約學習筆記:網頁互動

沒搞過web程式,花了幾天研究一下,總算是搞懂了網頁與以太坊節點的互動流程。 網頁與智慧合約互動,需要使用web3.js,它實現了通用JSON PRC規範,通過JSON RPC協議與以太坊節點進行互動。除了js以外,以太坊還提供了Java、Python等語言的API,對於沒有提供API的語言

智慧合約學習筆記:使用Truffle框架開發部署智慧合約

truffle是一個智慧合約的開發框架,具體的就不介紹了,我們主要是說說怎麼使用這個框架來進行智慧合約的開發,官網戳這裡。 文章目錄 #安裝 首先我們要先安裝npm和truffle,安裝命令如下 sudo apt install npm sudo n

智慧合約學習筆記:開發流程及工具鏈使用

本文主要介紹開發流程和工具鏈的使用,安裝過程百度上有好多,這裡就不贅述了 網上隨便找了一個智慧合約的例子,咱們來做一個投票系統,先用傳統的中心化方案去實現,然後在過度到區塊鏈1.0,最後再用區塊鏈2.0,感受一下開發思想的不同。 業務分析 傳統

區塊鏈技術進階-深入詳解智慧合約語言 solidity(含原始碼)-熊麗兵-專題視訊課程...

區塊鏈技術進階-深入詳解以太坊智慧合約語言 solidity(含原始碼)—103人已學習 課程介紹         區塊鏈開發技術進階-深入詳解以太坊智慧合約語言 solidity視訊培訓教程:本課

iOS應用程式如何呼叫智慧合約

以太坊智慧合約有各種各樣的用例,但到目前為止,從你的iOS應用程式中呼叫它們非常困難。不過如果使用以太坊iOS開發套件和EtherKit,這種情況會改善很多,你可以立即開始使用。在本教程結束時,你將能夠呼叫其ABI(應用程式二進位制介面)中定義的任何公共合約函式。 對於這個專案,我們將使

如何實現一鍵呼叫智慧合約

今天有人問如何用按鈕呼叫智慧合約,我不知道在哪裡找,所以我決定寫這個,很快就可以。 在這篇文章中,我將給出一個簡單但有希望有效的演示,說明JavaScript開發人員如何建立一個能夠呼叫智慧合約的網頁,並通過單擊即可向其匯款(以太幣)。 要做到這一點,使用者將需要使用支援Web

olidity語言開發智慧合約中的繼承

我們已經探索了很多主題,在編寫智慧合約時我們發現經常使用相同的模式:例如,智慧合約具有在建構函式中設定的所有者,然後生成修改器以便僅讓所有者使用一些功能。如果我們制定實施這些功能的基礎合約並在未來的智慧合約中重複使用它們那該怎麼辦?你一定猜得到,我們將使用繼承。 在Solidity中,繼承與經典的面向物

關於智慧合約在專案實戰過程中的設計及經驗總結(1)

此文已由作者蘇州授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗 1.智慧合約的概述 近幾年,區塊鏈概念的大風吹遍了全球各地,有的人覺得這是一個大風口,有的人覺得他是個泡沫。眾所周知,比特幣是區塊鏈1.0,而以太坊被稱為了區塊鏈2.0,而區塊鏈1.0和2.0最主要的差別就在於以太坊擁有

關於智慧合約在專案實戰過程中的設計及經驗總結(2)

此文已由作者蘇州授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗 7.智慧合約經驗分享 1)智慧合約開發的工具的問題 古人云“工欲善其事必先利其器”,同意良好的智慧合約的開發工具對智慧合約的開發效率有極大的提升。以下是一些比較好的智慧合約的開發組合: &nb

智慧合約的奇幻漂流

“A smart contract is a computer program executed in a secure environment that directly controls digital assets.” – Vitalik Buterin 作為以太坊

區塊鏈開發(二)部署並執行第一個智慧合約

        網路上不少部署智慧合約的文章,但是都有一個共同的特點,就是採用命令列的方式來部署,先是建立SOLC的編譯環境,然後部署Geth或者Eth節點,然後一步一步生成錢包、ABI、合約地址進行部署,對初學者來說晦澀難懂而且容易失敗,本文主要介紹如何在圖形化介面下一鍵部

WEB頁面訪問智慧合約--使用Web3

準備工作  使用remix IDE開發智慧合約程式碼,並部署合約到測試鏈上。請參考《使用remix釋出智慧合約》  安裝Ganache,使用Ganache模擬一個以太坊坊節點。請參考《Ganache模擬以太坊區塊鏈節點》 Web3簡介 Web3JS是

智慧合約的編譯器使用

注意 本節不適用於solcjs,即使在命令列模式下使用也不適用。 Solidity儲存庫的構建目標之一是solidity solc命令列編譯器。使用為您提供所有選項的說明。編譯器可以生成各種輸出,範圍從簡單的二進位制檔案和抽象語法樹(解析樹)上的彙編到氣體使用的