¿Cómo analizar ABI fuera del código de contrato?

Usando la biblioteca web3 JS, hay enlaces para tomar una transacción por su hash ( web3.eth.getTransaction()), que incluye una inputpropiedad 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?

Cómo derivar el ABI sin tener el código fuente del contrato es un duplicado de ethereum.stackexchange.com/questions/1437/…

Respuestas (1)

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 .

Entonces, ¿la única forma de derivar la función si no se conoce el código fuente es simplemente mantener una tabla de arcoíris de posibles firmas?
Sí, como dijiste, los "Hashes no se pueden trabajar al revés".