我在哪裡可以找到我的待處理交易?
我想知道在哪裡可以找到未送出帳戶的目前待處理事務。甚至可能嗎?如何獲取待處理交易的交易雜湊?任何用於此目的的 API?
好吧,我知道一種應該可行的方法。
使用 web3js 或 geth 控制台並呼叫任何函式/事務。如果您使用該
.sendTransaction()
方法,它將返回交易雜湊,然後您將使用它來查找您的交易狀態。接下來,使用 Etherscan API,您可以使用事務端點:
https://etherscan.io/api?module=localchk&action=txexist&txhash=<<TX HASH>>
響應應如下所示:
{"status":"1","message":"OK","result":"False"}
接下來使用 Etherscan 交易 API。它不會告訴您它是否處於掛起狀態,但如果事務是成功/錯誤,它將返回不同的響應:
https://api-rinkeby.etherscan.io/api?module=transaction&action=getstatus&txhash=<<TX HASH>>&apikey=<<API KEY>>
{"status":"1","message":"OK","result":{"isError":"0","errDescription":""}}
如果
isError
是0
那麼它是成功的/如果isError
是1
那麼交易失敗。總而言之,只要你從 獲取交易雜湊
.sendTransaction()
(所以你知道這是一個有效的交易),你現在可以用 打第一個端點,?action=txexists
如果 tx 存在,它將返回。然後你可以點擊第二個端點來查看 TX 是通過還是失敗。因此,在您需要點擊第二個端點之前,您將知道 TX 處於掛起狀態,因為它還不存在。如果上述方法對您來說太混亂了,那麼下面是 Etherscan.io 目前如何獲取待處理的交易。
我從他們的網站原始碼中提取了它。
var interval; var loopcounter = 1; // startTxPendingCheck is a global window variable set by another script if (startTxPendingCheck) { var div = document.getElementById('spinnerwait'); div.style.display = 'block'; interval = setTimeout(checkForConfirmedTx, 2000); function checkForConfirmedTx() { if (loopcounter < 45) { $.ajax({ url: "/api?module=localchk&action=txexist&txhash=" + txHash, type: "GET", success: function(data) { if (data.result == "True") { window.location.href = "/tx/" + txHash; } }, dataType: "json" }) loopcounter = loopcounter + 1; interval = setTimeout(checkForConfirmedTx, 20000); } else { stopInterval(); } } function stopInterval() { console.log("stopInterval called"); var div = document.getElementById('spinnerwait'); div.style.display = 'none'; clearTimeout(interval); } function startInterval() { console.log("startInterval called"); clearTimeout(interval); var div = document.getElementById('spinnerwait'); div.style.display = 'block'; interval = setTimeout(checkForConfirmedTx, 5000); } }
要查找所有待處理交易,請訪問https://etherscan.io/並蒐索您的帳戶地址。您將獲得所有交易及其法規。此外,etherscan 還為您提供了一個 API來獲取所有這些詳細資訊。