Web3j 4.x手機錢包開發教程【含Java源碼】

本教程講解如何使用Web3j 4.x和Infura提供的以太坊節點開發安卓手機以太坊錢包應用,教程包括項目依賴配置、以太坊節點選擇、以太坊錢包地址建立、測試以太幣的獲取、執行以太幣轉帳交易等內容,並提供完整的參考實現源碼下載。java

一、項目配置

使用Web3j的第一步是在Android項目中添加Web3j依賴。因爲Web3j有一個maven插件,這就很簡單了:只須要在你項目的build.gradle文件中添加mavencentral,而後將web3j做爲一個依賴項加入build.gradle文件(確保你使用的是android版本)。android

repositories {
    mavenCentral()
    google()
    jcenter()
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'org.web3j:core:4.1.0-android'
}

要系統高效地學習web3j,推薦匯智網的在線互動教程 《web3j以太坊開發詳解》, 教程內容涵蓋以太坊中的核心概念,例如帳戶管理、狀態與交易、智能合約開發與交互、過濾器 和事件等,同時也詳細說明如何使用web3j與以太坊區塊鏈進行交互,是java工程師學習 以太坊應用開發的不二選擇。git

二、決定要使用的節點類型

錢包應用必須經過一個以太坊節點才能與以太坊區塊鏈通訊,咱們能夠部署本身的節點,也可使用第三方提供的雲端節點,例如Infura的開放節點。我決定使用Infura的緣由在於不須要本身同步區塊鏈數據,由於這個同步過程要花很多時間並且很繁瑣,所以我但願儘可能避免搭建本身的節點。github

你能夠在Infura註冊而後獲得一個API Key,就能夠像下面這樣建立一個Web3j對象接入Rinkeby測試網絡了:web

// FIXME: Add your own API key here
web3 = Web3j.build(new HttpService("https://rinkeby.infura.io/v3/YOURKEY"));
try {
      Web3ClientVersion clientVersion = web3.web3ClientVersion().sendAsync().get();
      if(!clientVersion.hasError()){
      //Connected
      }
       else {
         //Show Error
       }
}
catch (Exception e) {
  //Show Error
}

注意上面代碼中的URL ——https://rinkeby.infura.io/v3/YOURKEY,YOURKEY須要用你的API KEY替換掉,這個url中的rinkeby表示可使用這個url接入以太坊的rinkeby測試鏈,容易理解,把rinkeby換成mainnet,就能夠接入以太坊的主網了,例如:網絡

https://mainnet.infura.io/v3/YOURKEY

一切正常的話,上面的代碼就能夠接入以太坊的Rinkeby測試鏈了!app

三、建立錢包

如今讓咱們建立一個錢包來發送或接收一些測試鏈的以太幣。爲此咱們須要首先在用戶的設備中建立一個錢包文件:maven

//FIXME: Use your own password here
private final String password = "medium";
private String walletPath = getFilesDir().getAbsolutePath();
private File walletDir  = new File(walletPath);

try{
   WalletUtils.generateNewWalletFile(password, walletDir);
 }
catch (Exception e){
  //Display an Error
}

四、獲取地址並載入錢包

很好,如今咱們有了一個錢包,如今來獲取錢包地址,而後從Rinkeby Faucet爲該地址獲取一些測試用的以太幣:學習

try {
  Credentials credentials = WalletUtils.loadCredentials(password, walletDir);
  Toast.makeText(this, "Your address is " + credentials.getAddress(), Toast.LENGTH_LONG).show();

}
catch (Exception e){ 
  //Show Error
}

五、發送交易

錢包裏如今已經有了一些以太幣,讓咱們再把這些測試幣轉回去:區塊鏈

try{
  Credentials credentials = WalletUtils.loadCredentials(password, walletDir); TransactionReceipt receipt = Transfer.sendFunds(web3,credentials,"0x31B98D14007bDEe637298086988A0bBd31184523",new BigDecimal(1),Convert.Unit.ETHER).sendAsync().get(); 
  Toast.makeText(this, "Transaction complete: " +receipt.getTransactionHash(), Toast.LENGTH_LONG).show();
} 
catch (Exception e){ 
  //Show Error
}

六、結論

在這個教程中,咱們建立了一個簡單的Android手機應用來收發以太幣,你能夠在這裏下載完整實現代碼。


原文連接:Web3j 4.x Android以太坊錢包實現教程 — 匯智網

相關文章
相關標籤/搜索