使用Java查询以太坊(ETH)交易信息
以太坊(Ethereum)是一种开源的区块链平台,它允许开发者通过智能合约构建和部署去中心化应用。在以太坊网络上,交易是非常重要的组成部分,了解如何查询以太坊交易信息对于开发者和区块链研究人员来说是非常有用的。
Java是一种广泛使用的编程语言,拥有丰富的开发库和工具。使用Java编写脚本可以方便地查询以太坊交易信息。
查询交易详情
要查询以太坊交易的详细信息,可以使用以太坊的JSON-RPC接口,并通过Java的HTTP库发送HTTP请求。以下是一个简单的示例代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class EthTransactionInfo {
public static void main(String[] args) {
String transactionHash = "0x1234567890abcdef"; // 替换为要查询的交易哈希值
try {
String apiUrl = "https://api.etherscan.io/api?module=proxy&action=eth_getTransactionByHash&txhash=" + transactionHash;
URL url = new URL(apiUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String output;
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上述代码中,我们使用以太坊的Etherscan API来获取指定交易哈希值的交易详情。将transactionHash
替换为您要查询的实际交易哈希值,并执行代码,您将获得该交易的详细信息。
发送交易
要使用Java发送以太坊交易,您需要一个以太坊节点,并且必须具备相应的私钥和账户地址。以下是一个简单的示例代码:
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.protocol.http.HttpService;
import org.web3j.tx.Transfer;
import org.web3j.utils.Convert;
import java.math.BigDecimal;
public class EthTransactionSender {
public static void main(String[] args) {
String privateKey = "0x1234567890abcdef"; // 替换为您的私钥
String toAddress = "0xabcdef1234567890"; // 替换为目标地址
try {
Web3j web3j = Web3j.build(new HttpService("https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID")); // 替换为您的Infura项目ID
Credentials credentials = Credentials.create(privateKey);
BigDecimal amount = BigDecimal.valueOf(0.1); // 替换为要发送的以太币数量
TransactionReceipt receipt = Transfer.sendFunds(web3j, credentials, toAddress, amount, Convert.Unit.ETHER).send();
System.out.println("Transaction Hash: " + receipt.getTransactionHash());
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上述代码中,我们使用了Web3j库来与以太坊节点进行交互,并通过Infura提供的API进行连接。将privateKey
替换为您的私钥,toAddress
替换为目标地址,以及其他必要的参数,然后执行代码,即可发送以太坊交易。
查询交易状态
要查询以太坊交易的状态,可以使用以太坊的JSON-RPC接口,并通过Java的HTTP库发送HTTP请求。以下是一个示例代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class EthTransactionStatus {
public static void main(String[] args) {
String transactionHash = "0x1234567890abcdef"; // 替换为要查询的交易哈希值
try {
String apiUrl = "https://api.etherscan.io/api?module=proxy&action=eth_getTransactionReceipt&txhash=" + transactionHash;
URL url = new URL(apiUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String output;
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上述代码中,我们使用以太坊的Etherscan API来获取指定交易哈希值的交易状态。将transactionHash
替换为您要查询的实际交易哈希值,并执行代码,您将获得该交易的状态。