Usando la biblioteca web3 JS, hay enlaces para tomar una transacción por su hash ( web3.eth.getTransaction()
), que incluye una input
propiedad que es la carga útil de datos de la transacción. Los primeros cuatro bytes de los cuales son el selector de función que es un fragmento de un hash.
La pregunta es, ¿cómo determinar qué función se llamó? Los hashes no se pueden trabajar hacia atrás, por lo que debemos derivar la lista de firmas de función para ese contrato (también conocido como ABI del contrato).
Web3 tiene el web3.eth.getCode(txnHash)
método que puede obtener el código hexadecimal de un contrato, pero ¿se puede analizar en una ABI del contrato?
¿O es imposible derivar el ABI sin tener el código fuente del contrato?
Aquí hay una base de datos de asignaciones de las funciones a las firmas de funciones: https://www.4byte.directory/ . Tenga en cuenta que el servidor ha estado devolviendo 'Error de servidor (500)' de forma intermitente.
Más información sobre este servicio: Base de datos de firmas de funciones de Ethereum: base de datos de firmas de funciones de 4 Btye para sus contrapartes legibles por humanos .
ética