Если у меня есть учетная запись с 5 ETH, могу ли я перевести полный баланс учетной записи в 5 ETH на другую учетную запись и получить ровно 5 ETH на вторую учетную запись?
Я понял, что это не удастся, потому что у меня не осталось эфира, чтобы оплатить комиссию за транзакцию.
Если я хочу, чтобы вторая учетная запись получила ровно 5 ETH, я думаю, что на моей учетной записи должно быть около 50002 ETH, чтобы иметь возможность перевести 5 ETH. Можешь подтвердить?
Нет.
Вы не можете отправить весь баланс, потому что сборы вычитаются из баланса вашей учетной записи, а не из отправляемой суммы. Чтобы очистить учетную запись, вам нужно отправить balance-gas*price
ETH как value
, а также вручную установить gas
и gasPrice
, чтобы убедиться, что вы точно обнулили свою учетную запись.
Например, если у вас есть 5ETH и вы хотите его развернуть:
22000
. Кроме того, совершенно новая учетная запись (несуществующая учетная запись, иначе говоря, без истории) будет стоить 25000
. Я бы предложил отредактировать ответ.Основной ответ - нет!
В любое время, когда вы хотите выполнить транзакцию, вам придется заплатить комиссию за вычисления, связанные с проверкой и майнингом вашего tx. Если у вас недостаточно газа, вы не можете отправить свой tx в сеть. В вашем примере отправьте «все», и получатель получит 5 минус сборы.
Мое предложение состояло бы в том, чтобы автоматизировать это.
Сначала установите учетную запись и разблокируйте ее после запуска geth attach
:
var accountNum = 0
personal.unlockAccount(eth.accounts[accountNum]);
В настоящее время
var amount_to_send_eth = web3.fromWei(eth.getBalance(eth.accounts[accountNum]), "ether");
var amount_to_send_wei = amount_to_send_eth *1000000000000000000
var transactionFee = web3.eth.gasPrice * 21001;
var total_amount_to_send_wei = transactionFee + amount_to_send_wei
eth.sendTransaction({from:eth.accounts[accountNum], to:"0xD3ADB33FD3ADB33FD3ADB33F", value: total_amount_to_send_wei });
После этого возвращается TXID, который можно использовать для проверки завершения транзакции.
Я новичок, поэтому советы, как улучшить его, приветствуются!
var transferAll = function(from, to) {
var gas = '30000';
var gasPrice = eth.gasPrice;
var gasTotal = gasPrice.mul(gas);
var totalValue = eth.getBalance(from).sub(gasTotal)-1;
console.log("Transfer :"+totalValue+", from "+from+" to "+to);
personal.unlockAccount(from);
var result = eth.sendTransaction({from: from, to: to, value: totalValue});
console.log("Transaction hash:", result);
};
Николя Массар