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 ...
Para enviar simplemente ETH, configúrelo gasLimit
en 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 to
es un contrato y desea invocar una función en to
, lo configurará data
de acuerdo con la función que desea invocar y los argumentos que necesita. Para ello, data
se codificaría el valor de según el ABI . El uso web3.eth.estimateGas
puede ayudar a ver cuánto gas se necesita para ejecutar la función y cualquier función que también pueda invocar.
data
también se puede usar para simplemente almacenar bytes en la cadena de bloques. Si to
no 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"?
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 data
campo 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.
zona
ética
data
los contratos, querrá estar al tanto de la función de respaldo .zona