Web3js

我在哪裡可以找到我的待處理交易?

  • July 19, 2018

我想知道在哪裡可以找到未送出帳戶的目前待處理事務。甚至可能嗎?如何獲取待處理交易的交易雜湊?任何用於此目的的 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":""}}

如果isError0那麼它是成功的/如果isError1那麼交易失敗。

總而言之,只要你從 獲取交易雜湊.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來獲取所有這些詳細資訊。

引用自:https://ethereum.stackexchange.com/questions/29604