Cuando usé web3.toAscii
recibí el siguiente error:
Creo que la razón es mi versión web3, es decir'1.0.0-beta.34'
Si es así, ¿hay algún comando alternativo para web3 versión 1 para el siguiente comando?
transaction = web3.eth.getTransaction('0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498')
input = web3.toAscii(transaction.input)
console.log(input)
También usé el siguiente comando:
web3.utils.hexToAscii(0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498)
Sin embargo, recibo el siguiente error:
Eso significa que su entrada no puede ser un hash de transacción.
El equivalente debería ser web3.utils.hexToAscii
web3.utils.hexToAscii('0x4920686176652031303021');
> "I have 100!"
Como menciona Ismael, tienes que usar hexToAscii
con web3@^1.0
Pero parece que lo estás usando en el transaction.hash
y no en eltransaction.input
EDITAR: ejemplo:
Enviar transacción:
const Tx = require('ethereumjs-tx');
const web3 = require('web3');
const data = web3.utils.toHex('Hello world!');
const rawTx = {
nonce: web3.utils.toHex(nonce),
gasPrice: web3.utils.toHex(gasPrice),
gasLimit: web3.utils.toHex(gasCost),
to: '0x0000000000000000000000000000000000000000',
value: '0x00',
data,
};
const privateKeyWithoutZero = privateKey.startsWith('0x') ? privateKey.slice(2, privateKey.length) : privateKey;
const privateKeyBuffer = new Buffer(privateKeyWithoutZero, 'hex');
const transaction = new Tx(rawTx);
transaction.sign(privateKeyBuffer);
const serializedTx = transaction.serialize();
web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex'))
.on('transactionHash', (txHash) => {
console.log('Transaction hash', txHash);
})
.on('receipt', (receipt) => {
console.log('Transaction sent with sucess. debug:', receipt);
});
Luego, getTransaction:
web3.eth.getTransaction('<TRANSACTION-HASH>')
.then((transaction) => {
const inputData = Web3.utils.hexToAscii(transaction.input);
console.log(inputData); // Hello world!
});
Preguntador
ismael
"
alrededor de tu parámetroweb3.utils.hexToAscii("0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498")
. En cualquier caso, no tiene mucho sentido usarlohexToAscii
con un hash de transacción o un archivotransaction.input
. Estaba destinado a usarse en algunos campos que fueron generados porasciiToHex
likeblock.extraData
. Si desea analizar una entrada de transacción, necesita el contrato abi y usar una biblioteca como ethereumjs-abi para leer los valores de los parámetros de la llamada.Preguntador
ismael
toHex
(equivalente al de hoyasciiToHex
). No funciona en su caso porque es una llamada de función sin formato. Como dije, necesitará el contrato ABI y un analizador ABI para extraer información de los parámetros de la llamada.