Entonces, digamos que mi billetera es 1 eth, necesito vaciarla por completo y lo haré de esta manera
Var value = web3.toWei(1) - gas
¿Está bien?
Sí. Deberá averiguar cuánto gas (en ETH) costará la transacción, pero afortunadamente las transferencias simples de ETH son exactamente 21,000 de gas (creo, verifique dos veces este número). Esto significa que para saber cuánto ETH se gastará en gasolina, deberá multiplicarlo por el precio de la gasolina elegido (p. ej., 10^10).
Por lo tanto, su cálculo deberá ser algo como esto:
var gasPrice = 20*10**9;
var gas = 21000;
var attoethForGas = gasPrice * gas;
var amountToSend = web3.toWei(1) - attoethForGas;
Para calcular un valor exacto para enviar, debe usar cálculos precisos que JavaScript no le brinda de manera inmediata. Afortunadamente, web3.js ya devuelve un BigNumber
objeto especial de eth.getBalance()
. Para ejecutar operaciones matemáticas precisas, debe usar BigNumber
métodos en lugar de operadores aritméticos predeterminados. Por ejemplo:
gasPrice = new BigNumber(web3.toWei('0.6', 'gwei'))
cost = gasPrice.mul(21000)
value = eth.getBalance(eth.accounts[0]).sub(cost)
Las constantes se extrajeron de estas fuentes en el momento de la publicación:
ética