Transactions

我可以查看轉賬狀態嗎?

  • March 23, 2022

我正在嘗試設置一個使用 sendTransaction 方法接收付款的結構。但是有一個小問題。sendTransaction 方法工作正常,但使用者是否完成了傳輸?轉賬到目的地錢包了嗎?我無法控制有沒有辦法進行這些檢查?

你可以這樣想。

sendEthButton.addEventListener('click', () => {
 ethereum
   .request({
     method: 'eth_sendTransaction',
     params: [
       {
         from: accounts[0],
         to: {sellerAdress},
         value: {totalAmount}
       },
     ],
   })
   .then((txHash) => console.log(txHash))
   .catch((error) => console.error);
});

由於這種方法,轉移通知被發送到客戶的元遮罩。這裡沒有問題。但是客戶是否批准了 Metamask 的轉移請求?轉移完成了嗎?還是客戶沒有回復轉賬通知?有什麼方法可以做這樣的查詢嗎?

簡單來說,如何查看轉賬狀態以查看是否已完成支付?

您只需要使用 txHash 獲取收據

https://www.quicknode.com/docs/ethereum/eth_getTransactionReceipt https://web3js.readthedocs.io/en/v1.7.1/web3-eth.html#gettransactionreceipt

假設交易有 3 個步驟

  1. 待處理(tx 已發送但未開採):您不會在呼叫中獲得很多參數,例如 blockHash
  2. 已批准(開採並成功執行):狀態參數將為真
  3. 拒絕(已探勘但執行失敗):狀態參數將為 false

我建議你使用一個庫來做這些檢查,比如 ethers.js 或 web3js,它們會自動訂閱並通知你,你甚至可以選擇只有在多次確認時才接受交易(在你的 tx 所在的塊頂部的塊開採)恰好可以防止 51% 的攻擊

https://web3js.readthedocs.io/en/v1.7.1/callbacks-promises-events.html?highlight=receipt

祝你好運!

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