【问题标题】:How could I decode the input data of a transaction?如何解码交易的输入数据?
【发布时间】:2019-06-04 09:53:54
【问题描述】:

我在 java 中使用 web3j 来获取交易的输入数据。我可以得到数据,但问题是如何解码这些数据。

输入数据: “0x070ec83b000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000015118f200000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000 ..........” P>

String inputdata = null;

Optional<Transaction> tx = web3.ethGetTransactionByHash(txHash).send().getTransaction();

if (tx.isPresent()) {
    inputdata = tx.get().getInput();
}

//DECODE

byte[] bytes = Hex.decodeHex(inputdata.substring(2).toCharArray());
System.out.println(new String(bytes, "UTF-8"));

当你执行代码时,你得到的是各种字符。

output

【问题讨论】:

  • 可能是编码错误。试试其他的,比如 US-ASCII。也就是说,试试这个 System.out.println(new String(bytes, "US-ASCII"))
  • 我按照你的建议做了,我得到了这个“È;Qò à à`1juan12.456.123-9Inacap45.566.963-8 odontologo0xasdasetcdasdaetc120920198232358”:/

标签: java decode web3-java


【解决方案1】:

我对 nodeJS 不太了解,但这里是如何在 python 中做到这一点,以防万一。

txn = web3.eth.get_transaction(txHash)                                  
txnInput = routerContract.decode_function_input(txn.input) 
print(txnInput)

【讨论】:

  • web3js 没有那个功能
猜你喜欢
  • 2021-09-06
  • 2023-01-24
  • 2022-07-06
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 2022-07-22
  • 1970-01-01
  • 2016-03-17
相关资源
最近更新 更多