Bei Verwendung der web3 JS-Bibliothek gibt es Hooks, um eine Transaktion anhand ihres Hashs ( web3.eth.getTransaction()
) zu erfassen, der eine input
Eigenschaft enthält, die die Datennutzlast der Transaktion darstellt. Die ersten vier Bytes davon sind der Funktionsselektor, der ein Fragment eines Hashs ist.
Die Frage ist, wie kann man feststellen, welche Funktion aufgerufen wurde? Hashes können nicht rückwärts verarbeitet werden, daher müssen wir die Liste der Funktionssignaturen für diesen Vertrag (auch bekannt als Vertrags-ABI) ableiten.
Web3 hat die web3.eth.getCode(txnHash)
Methode, die den Hex-Code für einen Vertrag erhalten kann, aber kann das in eine ABI des Vertrags geparst werden?
Oder ist es unmöglich, die ABI abzuleiten, ohne den Quellcode des Vertrages zu haben?
Hier ist eine Datenbank mit Zuordnungen von den Funktionen zu den Funktionssignaturen - https://www.4byte.directory/ . Beachten Sie, dass der Server zeitweise „Server Error (500)“ zurückgibt.
Einige weitere Informationen zu diesem Dienst: Ethereum Function Signature Database – Datenbank von 4-Btye-Funktionssignaturen zu ihren menschenlesbaren Gegenstücken .
eth