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.js
segun 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');
Usando
web3.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.js
biblioteca como una forma de analizar los datos de la entrada de registro, que es diferente a sus temas .
Omkar Khair
SwapnilKumbhar