Transactions
我可以查看轉賬狀態嗎?
我正在嘗試設置一個使用 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 個步驟
- 待處理(tx 已發送但未開採):您不會在呼叫中獲得很多參數,例如 blockHash
- 已批准(開採並成功執行):狀態參數將為真
- 拒絕(已探勘但執行失敗):狀態參數將為 false
我建議你使用一個庫來做這些檢查,比如 ethers.js 或 web3js,它們會自動訂閱並通知你,你甚至可以選擇只有在多次確認時才接受交易(在你的 tx 所在的塊頂部的塊開採)恰好可以防止 51% 的攻擊
https://web3js.readthedocs.io/en/v1.7.1/callbacks-promises-events.html?highlight=receipt
祝你好運!