Límite de gas y precio en la transacción de envío sin procesar

tratando de compilar un contrato y luego enviarlo a la red. El error actual que estoy recibiendo es

Error: transaction underpriced

Aquí está mi código para compilar rawTx. Estoy en Ropsten, y el precio de la gasolina es: 21000000000 y el gasLimit más reciente es: 4712388 (desde console.logs)

const gasPrice = web3.eth.gasPrice;
console.log(gasPrice);
const gasPriceHex = web3.toHex(gasPrice);
var glimit = web3.eth.getBlock("latest").gasLimit;
console.log(glimit);
gasLimitHex = web3.toHex(glimit);

nonce =  web3.eth.getTransactionCount(account1) ;
nonceHex = web3.toHex(nonce);

var payloadData = solidityFunction.data;


var rawTx = {
    nonce: nonceHex,
    gasPrice: gasPriceHex,
    gasLimit: gasLimitHex,
    to:contractAddress,
    from:account1,
    value: web3.toHex(web3.toWei('.01', 'ether')),
    data: payloadData
};
Está gasLimitconfigurado para ser el límite de gas del último bloque, no lo use. Pruebe web3.eth.estimateGasy configure gasel rawTx. Además, ¿no debería toser 0?
Gracias por la solución de estimación de gas. Sin embargo, sigo recibiendo el error de precio infravalorado. El campo para es la dirección del contrato que intento llamar y los datos de la carga útil son el código de bytes de la función.

Respuestas (2)

no necesita datos hexadecimales, web3 se encargará de eso.

var rawTx = {
    nonce: web3.eth.getTransactionCount(account1),
    gasPrice: web3.eth.gasPrice;,
    gasLimit: web3.eth.getBlock("latest").gasLimit,
    to:contractAddress,
    from:account1,
    value: 0.1,
    data: payloadData
};

Después de obtener el nonce de alguna cuenta, debe agregar 1 como el nuevo nonce de rawTx.

Ejemplo:

>>nonce =  web3.eth.getTransactionCount(account1) ;
>>nonceHex = web3.toHex(nonce);

No puedo encontrar más datos del código de "payloadData", es otra forma de equivocarme.