观前提示:
©版权所有:本教程由先圣编写,如需转载,请标明出处。
本文受众: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
|
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 { String url = "https://goerli.infura.io/v3/72cc4dbd0f0749089cb4da266cf833bf"; Web3j web3j = Web3j.build(new HttpService(url));
String key = "f866c2e8c812819299e58794502eb71b0324aee71894328171f81b375339cf17"; Credentials credentials = Credentials.create(key);
String toAddress = "0x0017eEC9A38a98372D33D23722A73E2D68a4b838"; double money = 0.01;
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)); }
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测试网