Когда я использовал, web3.toAscii
я получил следующую ошибку:
Я думаю, причина в моей версии web3, т.е.'1.0.0-beta.34'
Если да, то есть ли альтернативная команда для версии 1 web3 для следующей команды?
transaction = web3.eth.getTransaction('0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498')
input = web3.toAscii(transaction.input)
console.log(input)
Я также использовал следующую команду:
web3.utils.hexToAscii(0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498)
Однако я получаю следующую ошибку:
Это означает, что его ввод не может быть хешем транзакции.
Эквивалент должен быть web3.utils.hexToAscii .
web3.utils.hexToAscii('0x4920686176652031303021');
> "I have 100!"
Как упоминал Исмаэль, вы должны использовать hexToAscii
с web3@^1.0
Но похоже, вы используете его на transaction.hash
, а не наtransaction.input
РЕДАКТИРОВАТЬ: пример:
Отправить транзакцию:
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);
});
Затем получите транзакцию:
web3.eth.getTransaction('<TRANSACTION-HASH>')
.then((transaction) => {
const inputData = Web3.utils.hexToAscii(transaction.input);
console.log(inputData); // Hello world!
});
Спрашивающий
Исмаэль
"
вашего параметраweb3.utils.hexToAscii("0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498")
. В любом случае не имеет особого смысла использоватьhexToAscii
хэш транзакции или файлtransaction.input
. Он предназначался для использования в некоторых полях, созданныхasciiToHex
подобнымиblock.extraData
. Если вы хотите проанализировать ввод транзакции, вам нужен контракт abi и использование библиотеки, такой как ethereumjs-abi , для чтения значений параметров вызова.Спрашивающий
Исмаэль
toHex
(эквивалентно сегодняшнемуasciiToHex
). Это не работает в вашем случае, потому что это необработанный вызов функции. Как я уже сказал, вам понадобится контрактный ABI и анализатор ABI для извлечения информации из параметров вызова.