Convierta el hash del registro de transacciones a un formato legible

Estoy tratando de convertir registros de transacciones en texto (formato legible por humanos) probé 2 métodos

1. using web3.toAscii(receipt.logs[0].topics[0])

2.Using coder.jssegun esta respuesta

Mientras uso el segundo método, aparece el error:

No se puede encontrar el módulo 'file:///C:/Users/user1/node_modules/web3/lib/solidity/coder.js'

Ruta donde reside mi archivo coder.jsC:/Users/user1/node_modules/web3/lib/solidity/coder.js

¿Hay alguna otra forma de analizar el registro de transacciones y obtener los datos en un formato legible por humanos?

código utilizado para acceder a coder.js

var SolidityCoder = require('file:///C:/Users/user1/node_modules/web3/lib/solidity/coder.js');

también probé

var SolidityCoder = require('C:\\Users\\user1\\node_modules\\web3\\lib\\solidity\\coder.js');
¿Recibes este error en un navegador? En caso afirmativo, ¿puede compartir el código donde se refiere a coder.js?
@Omkar He actualizado la pregunta a partir de la pregunta

Respuestas (1)

Usandoweb3.toAscii

Esa función no es lo que está buscando, al menos no para topics[0]una entrada de registro. La primera entrada en la matriz de "temas" es la firma de qué tipo de entrada de registro es. Entonces es un hash, y no se resolverá en nada útil simplemente convirtiéndolo a ASCII.

Si ya tiene el ABI de un contrato, que incluye la definición de los eventos que usa, entonces puede calcular el hash que usa la entrada de registro:

let events = [
  {
    type: 'event',
    name: 'HelloWorld',
    anonymous: false,
    inputs: [{"indexed":false,"name":"call_address","type":"address"}]
  },
  // List out all the events you care about
];

function getEventSignature(eventAbi) {
  var signature = eventAbi.name + '(' + eventAbi.inputs.map(function(input) { return input.type; }).join(',') + ')';
  var hash = web3.sha3(signature);
  return {
    signature: signature,
    hash: hash,
    abi: eventAbi
  };
}

var topicMap = {};
events.map(eventAbi => {
  var signature = getEventSignature(eventAbi);
  topicMap[signature.hash] = signature;
});
console.log(topicMap);

Si solo tiene el topic[0]valor del registro, no puede retroceder para averiguar el nombre del evento, ya que es un hash (que por su definición es solo unidireccional).

Esa otra pregunta hace referencia a la coder.jsbiblioteca como una forma de analizar los datos de la entrada de registro, que es diferente a sus temas .

esto devolverá la firma del método de evento, en realidad quiero analizar las entradas de registro creadas para transacciones
La firma del evento es el primer elemento en todas las entradas del registro. Así que ese es el primer paso para analizar esas entradas. Una vez que sepa qué tipo de entrada de registro es, puede analizar el resto sabiendo qué valores emite ese tipo de evento.