Go-Ethereum

如何將整個乙太幣餘額從一個賬戶發送到另一個賬戶?

  • December 19, 2021

我正在嘗試使用web3將一個帳戶的所有(或盡可能多的)餘額轉移到另一個帳戶。這是我到目前為止的程式碼:

var sender = web3.eth.accounts[0];
var receiver = web3.eth.accounts[1];
var totalBalance = web3.eth.getBalance(sender);
var valueToSend = totalBalance;

transactionObject = {
 from: sender,
 to: receiver,
 value: valueToSend
} 

web3.eth.sendTransaction(transactionObject);

但是我知道前面的程式碼有以下問題:

  • 無法發送總餘額,因為沒有足夠的剩餘乙太幣用作交易的氣體

我看到另一個文章提出以下建議:

  • gas*price減去totalBalance,因此:
valueToSend = totalBalance - (gas*price);

問題/問題:

但我在這裡遇到的問題是程式碼中的外觀如何?我不知道如何獲取目前price程式碼。對於gas,我知道gas有不同的值,具體取決於您希望交易進行多快,但是是否有web3程式碼定義了您可以使用的最少和最多?或者是否有線上定義它的圖表?那在程式碼中會是什麼樣子?

如果你發送到一個不是合約的地址,gas 總是 21000。

對於您可以估算的契約web3.eth.estimateGas。它在本地計算執行合約的gas,因此當交易被探勘時,結果可能會有所不同,通常你會添加一個額外的以確保它能夠正常工作。

但我認為乙太坊開發人員已經意識到留下一個太少乙太幣的賬戶來進行新轉賬的問題,有討論誰可以支付汽油費。

要確定要使用的 gas 價格,您可以嘗試web3.eth.gasPrice,從文件

此屬性是只讀的,並返回目前的 gas 價格。Gas 價格由 x 個最新區塊的 Gas 價格中值決定。

沒有記錄如何確定該值。有關更詳細的分析,您可以查看 ethgasstation.info,該站點似乎沒有提供 api。

引用自:https://ethereum.stackexchange.com/questions/19282