web3.toAscii (Transaktionshash) für web3js Version 1

Bei der Nutzung web3.toAsciihabe ich folgende Fehlermeldung erhalten:

Geben Sie hier die Bildbeschreibung ein

Ich denke, der Grund ist meine Web3-Version, dh'1.0.0-beta.34'

Wenn ja, gibt es einen alternativen Befehl für web3 Version 1 für den folgenden Befehl?

transaction = web3.eth.getTransaction('0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498')
input = web3.toAscii(transaction.input)
console.log(input)

Ich habe auch folgenden Befehl verwendet:

web3.utils.hexToAscii(0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498)

Allerdings erhalte ich folgenden Fehler:

Geben Sie hier die Bildbeschreibung ein

Das bedeutet, dass seine Eingabe kein Transaktions-Hash sein kann.

Antworten (2)

Das Äquivalent sollte web3.utils.hexToAscii sein

web3.utils.hexToAscii('0x4920686176652031303021');
> "I have 100!"
Danke, ich habe das bereits versucht, aber seine Eingabe kann kein Transaktions-Hash sein. Ich habe das in meiner Frage erklärt.
@sas Du fehlst "um deinen Parameter herum web3.utils.hexToAscii("0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498"). Auf jeden Fall macht es wenig Sinn, hexToAsciimit einem Transaktions-Hash oder einer transaction.input. Es sollte für einige Felder verwendet werden, die von asciiToHexlike generiert wurden block.extraData. Wenn Sie eine Transaktionseingabe analysieren möchten, benötigen Sie den Vertrag abi und die Verwendung einer Bibliothek wie ethereumjs-abi , um die Parameterwerte des Aufrufs zu lesen.
Sie haben Recht, aber diesmal ist die Ausgabe nicht wie erwartet: '\fH^\u000f\u0015_!m\u0006ç\u000eø[hCɱÂ÷À¯gì\u001bVÖT'". Denn laut dieser Antwort: ethereum .stackexchange.com/questions/11144/… Ich möchte Transaktionsdaten so decodieren, dass sie lesbar sind.
Es funktioniert im Link, weil es von generiert wurde toHex(entspricht dem heutigen asciiToHex). Es funktioniert in Ihrem Fall nicht, da es sich um einen rohen Funktionsaufruf handelt. Wie gesagt, Sie benötigen die Vertrags-ABI und einen ABI-Parser, um Informationen aus den Parametern des Anrufs zu extrahieren.

Wie Ismael erwähnt hat, müssen Sie hexToAsciimit web3@^1.0 verwenden

transaction.hashAber sieht so aus, als ob Sie es auf dem und nicht auf dem verwendentransaction.input

EDIT: Beispiel:

Transaktion einreichen:

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);
});

Dann getTransaction:

web3.eth.getTransaction('<TRANSACTION-HASH>')
        .then((transaction) => {
          const inputData = Web3.utils.hexToAscii(transaction.input);
          console.log(inputData); // Hello world!
        });
könnten Sie ein Beispiel für transaction.input nennen? Ich meine mit web3.utils.hexToAscii. Danke.
Beispiel oben hinzugefügt
Danke schön. Jetzt ist es lesbar. Ich werde einen Abi-Parser wie diesen installieren: github.com/ethereumjs/ethereumjs-abi , um die TX-Daten zu decodieren.
Hängt davon ab, was Ihr Ziel ist, aber wenn Sie nur die Eingabedaten lesen möchten, müssen Sie ethereum-abi nicht verwenden, ich habe mein Beispiel mit einem einfachen Arbeitsskript aktualisiert
Danke. Tatsächlich beabsichtige ich, Tx-Daten mit HTML und JavaScript zu erhalten. Ich habe hier ein Github-Repository erstellt: github.com/s1241/GUI-for-Smart-Contract Sein Smart Contract wurde erfolgreich getestet, HTML und Javascript sind jedoch nicht vollständig. Sind Sie daran interessiert, sich die HTML-Datei anzusehen?
Sie müssen nur das implementieren, was ich Ihnen oben gesendet habe :) Danach sieht es so aus, als wollten Sie in Ihrem Fall nicht die transaction.input, sondern einen Smart Contract verwenden ...