Was ist der "Daten"-Parameter von rawTx? So senden Sie ETH mit web3

Ich möchte eth senden, indem ich web3 auf testnet verwende. Quelladresse ist 0xbddf0bf3ac858d7fb8a2bdda55884d61779ba5a9. Das Ziel ist 0x8005ceb675d2ff8c989cc95354438b9fab568681.

Ich habe das Beispiel auf der web3-Referenzseite gefunden. Ich kann mir vorstellen, wie man es benutzt. Ich weiß jedoch nicht, was "Daten" sind und wie man das GasLimit berechnet.

var Tx = require('ethereumjs-tx');
var privateKey = new Buffer('xxx', 'hex')

var GAS = web3.eth.estimateGas({
    to: "0x8005ceb675d2ff8c989cc95354438b9fab568681", 
    data: "WHAT IS DATA"
});

var rawTx = {
  nonce: '0x00',
  gasPrice: GAS,
  gasLimit: 'HOW AMOUNT OF GAS SHOULD I SET',
  to: '0x8005ceb675d2ff8c989cc95354438b9fab568681',
  value: '0x01',
  data: 'WHAT IS DATA'
}

var tx = new Tx(rawTx);
tx.sign(privateKey);

var serializedTx = tx.serialize();
web3.eth.sendRawTransaction(serializedTx.toString('hex'), function(err, hash) {
  if (!err)
    console.log(hash);
});

https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethsendrawtransaction


Aktualisierung 1

Scheint, dass Daten ein optionaler Wert oder so etwas sind ...

Daten - all die interessanten Dinge kommen hierher

Was ist die Transaktionsdatenstruktur von Ethereum?

Bei Bitcoin wird die Transaktionsgebühr nach der Größe der Transaktion berechnet. Daher dachte ich, "Daten" beziehen sich auf Gebühren ...

Antworten (2)

Um nur ETH zu senden, gasLimitauf 21.000 setzen und entfernen data(oder auf leer setzen ''). Die Grundgebühr von 21.000 Gas setzt voraus, dass toes sich nicht um einen Vertrag handelt.

Wenn toes sich um einen Vertrag handelt und Sie eine Funktion für aufrufen tomöchten, würden Sie dataentsprechend der Funktion, die Sie aufrufen möchten, und allen erforderlichen Argumenten festlegen. Dazu datawürde der Wert von nach ABI kodiert werden . Die Verwendung web3.eth.estimateGaskann helfen zu sehen, wie viel Gas benötigt wird, um die Funktion auszuführen und welche Funktionen sie möglicherweise auch aufruft.

datakann auch verwendet werden, um Bytes einfach in der Blockchain zu speichern. Wenn toes sich nicht um einen Vertrag handelt, können Sie die Gebühr (zusätzlich zur Basis von 21.000 Gas) statisch als 4 Gas für ein Null-Byte und 68 Gas für ein Nicht-Null-Byte berechnen. Siehe auch : Nebel: Was bedeutet „Eigengas zu niedrig“?

Vielen Dank für Ihre informative Antwort. Ich lese über Links, die Sie mit mir geteilt haben.
Herzlich willkommen! Wenn Sie später versuchen, mehr Dinge mit dataVerträgen zu tun, sollten Sie sich der Fallback-Funktion bewusst sein .
Vielen Dank. Ich versuche es Schritt für Schritt nachzuholen. Zu Beginn werde ich ETH senden, einen Vertrag erstellen und ERC20-Token erstellen. Das sind meine ersten Ziele.

Gas: Für eine Transaktion zwischen zwei Private-Key-kontrollierten Konten (kein Versand an Smart Contract) kostet 21000 Gas. Wenn Sie eine Transaktion an einen Smart Contract senden, der über eine gewisse Funktionalität verfügt, müssen Sie diese Funktionalität mit Gas bezahlen. Sie können die Gaskosten schätzen, aber denken Sie daran, dass es nicht immer möglich ist, den Gasverbrauch vor dem Anruf zu kennen, also geben Sie einfach einen ausreichend hohen Wert an. Ich empfehle, zuerst Ihren gesamten Vertrag auf Remix zu testen, um ein Gefühl für die Spritkosten zu bekommen.

Daten: Sie können beliebige Daten in allen Transaktionen senden. Denken Sie daran, dass das Senden von Daten ziemlich teuer ist (in Benzin!). Wenn Sie von einem Konto mit privatem Schlüssel zu einem anderen senden, lassen Sie dies normalerweise leer (Standardwert). Dieses dataFeld wird auch verwendet, um einem Smart Contract mitzuteilen, welche Funktion Sie aufrufen. Die Funktionssignatur ist in den ersten vier Bytes des Keccak-Hashes des Funktionsnamens einschließlich Parametern codiert.

Ich danke dir sehr. Ihre Antwort ist für mich sehr nachvollziehbar. eth game hat mir früher geantwortet, also habe ich seine Antwort akzeptiert. Danke.