Transactions

乙太幣:在不發送交易的情況下獲取交易雜湊

  • November 2, 2022

我的交易失敗了,所以當我呼叫 ethers.wallet.sendTransaction(tx) 時,它沒有給我一個可以用來調試它的雜湊值。tx 對像有 4 個欄位:from、to、data、value。如果我做

   const txSigned = await wallet.signTransaction({
     ...tx,
     gasPrice,
     gasLimit: BigNumber.from("2000000"),
   });
   console.log("Tx hash wrong:", ethers.utils.keccak256(txSigned));

那麼這個出現的值實際上並不匹配正確的交易雜湊。有誰知道我如何使用乙太幣來獲得這樣的交易雜湊,以調試失敗的交易?我可以手動轉到本地鏈本身並查看失敗的 tx 雜湊,但這不能在我的程式碼本身內部進行操作。

在事務完成之前無法獲取事務雜湊。因為要生成交易雜湊,一些欄位是必需的,這些欄位在交易完成之前不可用

您正確計算了雜湊- 它是已keccak256簽名交易的雜湊。其他地方有問題。

嘗試通過 發送簽名的 tx provider.sendTransaction,因為signer.sendTransaction可以重新計算 gas 或 smth。否則,雜湊將不同。

或者,在手動簽署交易時,您會錯過該chainId欄位並通過Wallet它簽名會添加chainId.

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