¿Qué es el parámetro "datos" de rawTx? Cómo enviar ETH usando web3

Quiero enviar eth usando web3 en testnet. La dirección de origen es 0xbddf0bf3ac858d7fb8a2bdda55884d61779ba5a9. El destino es 0x8005ceb675d2ff8c989cc95354438b9fab568681.

Encontré el ejemplo en la página de referencia web3. Puedo imaginar cómo usarlo. Sin embargo, no sé qué son los "datos" y cómo calcular el gasLimit.

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


Actualización 1

Parece que los datos son un valor opcional o algo así...

datos - todas las cosas interesantes van aquí

¿Cuál es la estructura de datos de transacciones de ethereum?

En Bitcoin, la tarifa de transacción se calcula por el tamaño de la transacción. Por lo tanto, pensé que "datos" está relacionado con la tarifa ...

Respuestas (2)

Para enviar simplemente ETH, configúrelo gasLimiten 21,000 y elimínelo data(o configúrelo para que esté vacío ''). La tarifa base de 21.000 gas supone que noto es un contrato.

Si toes un contrato y desea invocar una función en to, lo configurará datade acuerdo con la función que desea invocar y los argumentos que necesita. Para ello, datase codificaría el valor de según el ABI . El uso web3.eth.estimateGaspuede ayudar a ver cuánto gas se necesita para ejecutar la función y cualquier función que también pueda invocar.

datatambién se puede usar para simplemente almacenar bytes en la cadena de bloques. Si tono es un contrato, puede calcular estáticamente la tarifa (además del gas base 21,000) como 4 gas para un byte cero, 68 gas para un byte distinto de cero. Relacionado: Niebla: ¿Qué significa "gas intrínseco demasiado bajo"?

Muchas gracias por su respuesta informativa. Estoy leyendo sobre los enlaces que me compartiste.
¡Bienvenidos! Más adelante, si intenta hacer más cosas con datalos contratos, querrá estar al tanto de la función de respaldo .
Gracias. Estoy tratando de ponerme al día paso a paso. Al principio, enviaré ETH, crearé un contrato y crearé el token ERC20. Estos son mi primer objetivo.

Gas: para una transacción entre dos cuentas controladas con clave privada (sin enviar a un contrato inteligente) cuesta 21000 de gasolina. Si está enviando una transacción a un contrato inteligente que tiene alguna funcionalidad, debe pagar esa funcionalidad con gas. Puede estimar los costos de gas, pero tenga en cuenta que no siempre es posible conocer el consumo de gas antes de llamar, así que solo proporcione un valor lo suficientemente alto. Recomiendo probar todo su contrato en Remix primero para tener una idea de los costos de gasolina.

Datos: Puede enviar datos arbitrarios en todas las transacciones. Tenga en cuenta que el envío de datos es bastante caro (¡en gasolina!). Normalmente, cuando se envía desde una cuenta controlada por clave privada a otra, se deja vacío (valor predeterminado). Este datacampo también se usa para decirle a un contrato inteligente a qué función está llamando. La firma de la función está codificada en los primeros cuatro bytes del hash keccak del nombre de la función, incluidos los parámetros.

Muchas gracias. Tu respuesta es muy clara de entender para mí. eth game me respondió antes, así que acepté su respuesta. Gracias.