Wie liest man Ethereum-Transaktionseingabedaten, ohne ABI zu kennen?

Wie man Informationen über Transaktionen erhält, indem man dataEigentum und logsRezept liest. https://etherscan.io/tx/0x91bfd54de4f05effe1cede58848ef87b97f334256326ce33d298149b8ce22051

const abi = requrie("./abi")
const abiDecoder = require("abi-decoder").addABI(abi)
const web3 = require("web3")

web3.eth.getTransactionReceipt("0x91bfd54de4f05effe1cede58848ef87b97f334256326ce33d298149b8ce22051").then((receipt: any) => {
console.log(abiDecoder.decodeLogs(receipt.logs)); // [undefined] 

web3.eth.getTransaction("0x91bfd54de4f05effe1cede58848ef87b97f334256326ce33d298149b8ce22051").then((trans: any) => {
console.log(abiDecoder.decodeMethod(trans.input)) // undefined

Antworten (1)

Um die Werte des dataEigentums dieser Transaktion zu verstehen, müssen Sie die Serialisierung von Solidity-Daten ( https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI#examples ) studieren und die Daten zurückentwickeln in dieser Transaktion übergeben.

Selbst wenn Sie dies ohne die ABI geschafft haben, können Sie natürlich keine Informationen über den Vertrag (Variablennamen, Funktionssignaturen usw.) erhalten.

Es könnte auch hilfreich sein, einen Blick auf eine Frage zu werfen, die ich gestellt habe: Deploying Contract with Constructor Arguments via Geth RPCdata , das diesen Prozess durchführte, aber in die andere Richtung (Serialisierung von Argumenten, die innerhalb der Eigenschaft verwendet werden sollen ), obwohl ich in diesem Beispiel Zugriff hatte zum ABI.