web3j如何获取交易状态
Web3j how to get transaction status
我正在使用 web3j 查询以太坊区块链。现在我想检查交易是否被挖掘或刚刚发送到网络。
我怎样才能做到这一点?
可以考虑使用web3.eth.getTransactionReceipt(hash [, callback])
.
它将return null
用于未决交易和一个对象,如果交易成功。
如前所述,您可以使用 web3.eth.getTransactionReceipt(hash [, callback])
它将 return 具有 状态 的对象。对于不成功的交易,它将是 false。
/**
* 通过hash查询交易状态,处理状态。成功success,失败fail,未知unknown
* @param hash
* @return
*/
public String txStatus(String hash){
if(StringUtils.isBlank(hash)) {
return STATUS_TX_UNKNOWN;
}
try {
EthGetTransactionReceipt resp = web3j.ethGetTransactionReceipt(hash).send();
if(resp.getTransactionReceipt().isPresent()) {
TransactionReceipt receipt = resp.getTransactionReceipt().get();
String status = StringUtils.equals(receipt.getStatus(), "0x1") ?
"success" : "fail";
return status;
}
}catch (Exception e){
log.info("txStatusFail {}", e.getMessage(), e);
}
return "hash_unknown";
}
我正在使用 web3j 查询以太坊区块链。现在我想检查交易是否被挖掘或刚刚发送到网络。 我怎样才能做到这一点?
可以考虑使用web3.eth.getTransactionReceipt(hash [, callback])
.
它将return null
用于未决交易和一个对象,如果交易成功。
如前所述,您可以使用 web3.eth.getTransactionReceipt(hash [, callback])
它将 return 具有 状态 的对象。对于不成功的交易,它将是 false。
/**
* 通过hash查询交易状态,处理状态。成功success,失败fail,未知unknown
* @param hash
* @return
*/
public String txStatus(String hash){
if(StringUtils.isBlank(hash)) {
return STATUS_TX_UNKNOWN;
}
try {
EthGetTransactionReceipt resp = web3j.ethGetTransactionReceipt(hash).send();
if(resp.getTransactionReceipt().isPresent()) {
TransactionReceipt receipt = resp.getTransactionReceipt().get();
String status = StringUtils.equals(receipt.getStatus(), "0x1") ?
"success" : "fail";
return status;
}
}catch (Exception e){
log.info("txStatusFail {}", e.getMessage(), e);
}
return "hash_unknown";
}