Transactions
如何解碼交易中的輸入數據?
我正在使用以下命令向包含一些數據的帳戶發送交易:
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)
以可讀格式返回數據。
為了解碼數據,您可以使用名為 abi-decoder的庫
您需要為要解碼的智能合約提供 ABI,然後粘貼輸入數據。非常簡單。
如果您的輸入數據恰好是智能合約創建“建構子”,那麼唯一的失敗將會發生,那麼在這種情況下,您將不得不更改庫以適應它。