0%

Java×以太坊 1批量生成以太坊钱包

观前提示:

©版权所有:本教程由先圣编写,如需转载,请标明出处。

本文受众:Web3从业人员、程序员

浏览推荐:为了最佳观感,本文地址为:https://blog.120.show/2023/5

正文开始:

准备环境:

Java-JDK 1.8以上版本(建议IDEA集成)

Maven(建议IDEA集成)

IDEA编辑器(也可以使用VScode或其他编辑器)

创建Maven项目:

本文使用IDEA版本为2022版,如有界面差异,请选择对应的版本。

打开IDEA、新建空项目、选择Maven+JDK1.8以上、创建。

image-20230710232653248

添加Web3j依赖库:

在pom.xml文件中,添加以下依赖:

1
2
3
4
5
6
7
8
<dependencies>
<!-- web3J依赖 -->
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>5.0.0</version>
</dependency>
</dependencies>

复制主要代码:

创建一个名为GenerateEtherWallet的Java类,然后复制下面代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.math.BigInteger;
import java.security.*;
import org.web3j.crypto.*;
import org.web3j.utils.Numeric;

public class GenerateEtherWallet {
public static void main(String[] args) throws Exception {
// 生成随机的私钥
SecureRandom secureRandom = new SecureRandom();
byte[] privateKeyBytes = new byte[32];
secureRandom.nextBytes(privateKeyBytes);
String privateKey = Numeric.toHexStringNoPrefix(privateKeyBytes);

// 通过私钥生成公钥和地址
ECKeyPair keyPair = ECKeyPair.create(new BigInteger(privateKey, 16));
String publicKey = keyPair.getPublicKey().toString(16);
String address = Keys.getAddress(keyPair.getPublicKey());

// 输出私钥、公钥和地址
System.out.println("私钥:" + privateKey);
System.out.println("公钥:" + publicKey);
System.out.println("地址:" + address);
}
}

运行项目:

按F10+Shift 或者 点击绿色三角形 开始运行项目。

控制台正常应该显示:

私钥:dce017abd29d8ba884794e72157718a90e2f72af1f6cc6329b8333e49e874f25
公钥:a583e78eb4aa39f1a7581e8febc9401aa2e66bc40d10e26f7cfc0af0e14dfedb80b57eed8180f485d0504a5ae796ee2d973831ecbbdaf0ca860d9951b1858e1c
地址:17a04150123b23cfb2c21b599e68d2a0d35dbf6b

修改代码:

如果需要生成多个钱包,加入循环即可。如果不懂代码,可以简单复制下面的代码(for循环):

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
26
27
28
29
30
31
32
import java.math.BigInteger;
import java.security.*;
import org.web3j.crypto.*;
import org.web3j.utils.Numeric;

public class GenerateEtherWallet {
public static void main(String[] args) throws Exception {
// 修改中间的 i < 10 这一项,需要1000个就改成 i<1000
for (int i = 0; i < 10; i++) {
System.out.println("第" + (i+1) + "个钱包:");
GenerateEtherWallet.newWallet();
}
}

public static void newWallet(){
// 生成随机的私钥
SecureRandom secureRandom = new SecureRandom();
byte[] privateKeyBytes = new byte[32];
secureRandom.nextBytes(privateKeyBytes);
String privateKey = Numeric.toHexStringNoPrefix(privateKeyBytes);

// 通过私钥生成公钥和地址
ECKeyPair keyPair = ECKeyPair.create(new BigInteger(privateKey, 16));
String publicKey = keyPair.getPublicKey().toString(16);
String address = Keys.getAddress(keyPair.getPublicKey());

// 输出私钥、公钥和地址
System.out.println("私钥:" + privateKey);
System.out.println("公钥:" + publicKey);
System.out.println("地址:" + address);
}
}

具体看//后面的注释内容,i<10表示将运行10次方法,即生成10个钱包。

如果你需要10000个钱包,改成i<10000即可。

参考资料:

AI-ChatGPT问答

以太坊-面向Java开发者的以太坊资源