Transactions

如何解碼交易中的輸入數據?

  • April 15, 2022

我正在使用以下命令向包含一些數據的帳戶發送交易:

eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(1,"ether"),data:web3.toHex("http://localhost:8545")})

通過提取事務日誌(使用 testRPC 執行),我得到了這個結果:

  tx hash         : 0xf654aee5ed23f9aeebd2d73c69c7b9c21a4862787966d09bcb09ed44efc1f252
  nonce           : 0
  blockHash       : 0x6ff8a0e3ac606abd2ede4331b82af52a0daa98448025051fb3b3d50f749aa49f
  blockNumber     : 1
  transactionIndex: 0
  from            : 0xf64918835bc21dff9e8210a807b3964d1be35dd0
  to              : 0x08f986b7535c2b72687d3cb193135f1c6e27c336
  value           : 1000000000000000000
  time            : 1483614904 Thu, 05 Jan 2017 11:15:04 GMT
  gasPrice        : 1
  gas             : 90000
  input           : 0x687474703a2f2f6c6f63616c686f73743a38353435

我想解碼最後一行“輸入”並嘗試獲取“ http://localhost:8545 ”。我在這里這裡看到了一些與我的問題類似的工作,但這不適用於我的情況。此外,我嘗試過,.toString('hex'))但它仍然是十六進制。

我怎樣才能做到這一點?

提前致謝

您可以web3.toAscii(transactionID.input)以可讀格式返回數據。

閱讀web3.toAscii

為了解碼數據,您可以使用名為 abi-decoder的庫

您需要為要解碼的智能合約提供 ABI,然後粘貼輸入數據。非常簡單。

如果您的輸入數據恰好是智能合約創建“建構子”,那麼唯一的失敗將會發生,那麼在這種情況下,您將不得不更改庫以適應它。

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