java玩轉區塊鏈-基礎篇--賬戶
- java環境配置
- 基礎概念
- 賬戶
- maven包參考
- 創建賬戶代碼
- 代碼解釋
- (1)
- (2)
- (3)
- (4)
可以不讓搞,但是不允許你不會
java環境配置
- jdk版本,jdk1.8+;
- IDE環境,ideas;
- 依賴包,web3;
- 區塊鏈網路,開發網,Ganache;
基礎概念
區塊鏈網路: 提供區塊鏈交易的網路,測驗網和正式網由以太坊提供,開發網路可以本地安裝,ganache,Hardhat是兩個可以本地安裝的區塊鏈服務器,ganache是本教程使用的開發區塊鏈服務器,
web3:與區塊鏈進行互動的網路協議,web3目前有python,nodejs,java,typeScript等語言實作
賬戶:區塊鏈上的一個token
錢包:管理用戶擁有token的dapp
賬戶
區塊鏈中所有的資源都是token,這些token就是我們所謂的賬戶,賬戶分為兩類:
- 外部擁有的帳戶,由私鑰控制并且沒有與之關聯的代碼
- 合約賬戶,由其合約代碼控制并具有與其關聯的代碼
每個賬戶由 余額、nonce、storageRoot 和 codeHash 等資訊組成的狀態,并由一個 20 位元組的地址標識,
ganache(不清楚ganache安裝的請參考環境搭建)上查看賬戶資訊方式如下,

圖中(1)是賬戶的地址(token),(2)點擊查看具體資訊,

圖中privateKey為私鑰,
區塊鏈上只有token資訊沒有歸屬人資訊,區塊鏈并不知道這個token是誰的資產,所以已經擁有了token資產的同學看緊自己的錢袋子,不能把privateKey泄漏給其他人,
maven包參考
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.web3j/web3j-unit -->
<dependency>
<groupId>org.web3j</groupId>
<artifactId>web3j-unit</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.web3j</groupId>
<artifactId>web3j-maven-plugin</artifactId>
<version>4.6.5</version>
<configuration>
<soliditySourceFiles/>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>central</id>
<name>central</name>
<url>https://maven.aliyun.com/repository/central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>jcenter</id>
<name>jcenter</name>
<url>http://jcenter.bintray.com/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>maven-net-cn</id>
<name>Maven China Mirror</name>
<url>https://dl.bintray.com/ethereum/maven</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
創建賬戶代碼

package com.eth.account;
import org.web3j.crypto.Credentials;
import org.web3j.crypto.WalletUtils;
import org.web3j.model.DocumentRegistry;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.http.HttpService;
import org.web3j.tx.gas.StaticGasProvider;
import java.io.File;
import java.math.BigInteger;
public class CreateAccount {
public static void main(String[] args) throws Exception {
String walletPassword = "mypassword"; //(1)
String walletDirectory = "/Users/beijixiongzzj/Documents"; //(2)
String filename = WalletUtils.generateNewWalletFile(walletPassword, new File(walletDirectory)); //(3)
System.out.println("生成密鑰檔案:" + walletDirectory + "/" + filename);
System.out.println("開始決議密鑰->:");
Credentials credentials = WalletUtils.loadCredentials(walletPassword, walletDirectory + "/" + filename); //(4)
System.out.println("Account address: " + credentials.getAddress()); //(5)
System.out.println("Account private key: " + credentials.getEcKeyPair().getPrivateKey().toString(16)); //(6)
System.out.println("Account public key: " + credentials.getEcKeyPair().getPublicKey().toString(16)); //(7)
}
}
執行結果
生成密鑰檔案:/Users/beijixiongzzj/Documents/UTC–2021-10-01T12-33-54.33000000Z–a8a97958d136c1656b9dbd83f28c8238d97265ba.json
開始決議密鑰->:
Account address: 0xa8a97958d136c1656b9dbd83f28c8238d97265ba
Account private key: ca448f923bd5886ce1213b5ba831580324b9b56422199aa3486db5f04f1f4627
Account public key: 29627a520b60b0c2c61f0896199bbbe711063c4027204325d14c5f48d8087fedbff3a6408a4f7aa154801fa13a85c1b726fdd5bf04100c7b765f861d106188ba
代碼解釋
以下為代碼塊中注釋的代碼行的解釋
(1)
定義一個變數“walletPassword“,這個密碼用戶為生成的密鑰檔案進行加密
(2)
定義一個變數,代表的是“/Users/beijixiongzzj/Documents“這個目錄,是生成加密檔案存在的本地目錄
(3)
WalletUtils.generateNewWalletFile該api用戶生成一個密鑰檔案,回傳的是生成的密鑰檔案的地址
(4)
加載密鑰檔案決議出公鑰私鑰
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/304600.html
標籤:區塊鏈
