0%

Java×以太坊 3Goerli测试网转账GETH

观前提示:

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

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

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

正文开始:

我默认你已经有一定的Java基础和看过我之前的两篇文章。(没有的话请先观看)

直接上代码SendETH:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**
* @author HMB-XS
* @date 2023年09月12日15:39:19
**/
import java.math.BigDecimal;
import java.math.BigInteger;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.methods.response.EthGetBalance;
import org.web3j.protocol.http.HttpService;
import org.web3j.protocol.core.DefaultBlockParameterName;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tx.Transfer;
import org.web3j.utils.Convert;

public class SendETH {

public static void main(String[] args) throws Exception {
// 填写你的infura个人key
String url = "https://goerli.infura.io/v3/72cc4dbd0f0749089cb4da266cf833bf";
// 初始化web3j客户端
Web3j web3j = Web3j.build(new HttpService(url));

// 填写的的私钥,建议新建小号测试
String key = "f866c2e8c812819299e58794502eb71b0324aee71894328171f81b375339cf17";
// 填入您的以太坊钱包私钥
Credentials credentials = Credentials.create(key);

// 填入目标地址 此处可随机
String toAddress = "0x0017eEC9A38a98372D33D23722A73E2D68a4b838";
// 填入转账金额 测试可以少转一点
double money = 0.01;

// 获取对方账号余额ETH
System.out.println("对方账号原余额:" + GetBalance(web3j,toAddress));
// 构建交易
TransactionReceipt tx = Transfer.sendFunds(
web3j, credentials, toAddress,
BigDecimal.valueOf(money), Convert.Unit.ETHER)
.send();
// 获取交易的哈希
System.out.println("交易哈希:" + tx.getTransactionHash());

// 再次获取对方账号余额
System.out.println("对方账号新余额:" + GetBalance(web3j,toAddress));
}

/**
* 将查询封装成方法
* @param web3j web3j对象
* @param address 要查询的地址
* @return 返回余额ETH
*/
public static BigDecimal GetBalance(Web3j web3j,String address)throws Exception{
EthGetBalance ethGetBalance = web3j.ethGetBalance(address, DefaultBlockParameterName.LATEST).sendAsync().get();
return Convert.fromWei(ethGetBalance.getBalance().toString(), Convert.Unit.ETHER);
}
}

里面要填写私钥,所以建议用新建的小号测试。

我在上面的代码里面写了两次查询对方余额,这种多余的代码开源删除掉,已优化。

获取到的交易对象tx可以有很多信息,具体的可以直接去点,点的出来什么就有什么。

交易由Transfer.sendFunds构建,这是发送交易最简单的方式。

测试结果:

对方账号原余额:0.12
交易哈希:0x74eb9d417296769e8575eb02a6909e0f986a4a9a5da50b59ed3497b3a930ad7e
对方账号新余额:0.13

参考资料:

AI-ChatGPT问答

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

Java×以太坊 2利用infura连接到以太坊Goerli测试网