web3.js Transaktionen Sicherheit/Unterschiede

Beim Erlernen der Verwendung des web3.js-Pakets bin ich auf zwei Arten von Transaktionen gestoßen:

RawTransactions/ web3.eth.sendawTransaction(...) und

einfache Transaktionen/ web3.eth.sendTransaction(...)

Ich verstehe, dass Sie, um eine Rohtransaktion durchzuführen, das Transaktionsobjekt erstellen und für jeden Schlüssel einen Hex-Wert festlegen. Was ich nicht verstehe ist:

1) Warum müssen Sie alle Werte verhexen? (z. B. gasLimit, gasPrice, nonce usw.)

2) Warum eine Rohtransaktion anstelle der normalen verwenden. Ich verstehe, dass Sie den TX offline signieren und dann einfach den Hash weitergeben, aber was ist der Sinn davon? Ich meine, wann müssen Sie den TX roh machen?

Wenn Sie glauben, dass es noch etwas gibt, das ich lernen muss, oder wenn Sie Quellen angeben können, die helfen würden, würde ich das wirklich schätzen.

Beifall!

Antworten (1)

1) Warum müssen Sie alle Werte verhexen?

Denn für die Rohtransaktion müssen Sie die Rohdaten in dem Format aufbereiten, das zum Signieren verwendet wird. Dies ist etwas, das bei der Verwendung von ausgeblendet wird sendTransaction.

Sie können den Unterschied zwischen den beiden in diesen beiden Beiträgen nachlesen:

Unterschied zwischen Transaktionen und Rohtransaktionen in web3.js

Was ist eine „Rohtransaktion“ und wofür wird sie verwendet?

2) Warum eine Rohtransaktion anstelle der normalen verwenden

Wenn Sie einen eigenen lokal zugänglichen Knoten haben, können Sie sendTransaction verwenden, da Ihre Konten innerhalb Ihres Knotens verwaltet werden. Aber für den Fall, dass Sie keinen eigenen Knoten haben, verwenden Sie Knoten von Drittanbietern, um Ihre Transaktion auf das Netzwerk zu verlassen. Da Sie Ihren privaten Schlüssel diesen Knoten nicht präsentieren möchten, müssen Sie die Transaktion lokal (z. B. in JavaScript auf der Clientseite in Ihrem Browser) im Rohformat vorbereiten und signieren und dann sendRawTransaction auf der (nicht unbedingt vertrauenswürdig) delegierender Knoten.