Web3js
錯誤:返回錯誤:gas資金不足*價格+價值
我使用此程式碼將付款從地址 A 發送到地址 B.. 但我總是收到此錯誤。
(node:18492) UnhandledPromiseRejectionWarning: Error: Returned error: insufficient funds for gas * price + value
我在很多地方都讀到過,如果更改了chainId,它可能會被修復。我更改了許多chainId,但它對我不起作用。我總是出錯:-(
// Require the web3 node module. var Web3 = require('web3'); var Tx = require('ethereumjs-tx'); // Show Web3 where it needs to look for a connection to Ethereum. //web3 = new Web3(new Web3.providers.HttpProvider('http://127.0.0.1:8545')); web3 = new Web3(new Web3.providers.HttpProvider('https://mainnet.infura.io/N6IIa2HvDYOovtgmPbhD')); var gasPrice = '25000000000';//or get with web3.eth.gasPrice var gasLimit = '9000'; var addr = '0x.................................'; var toAddress = '0x.................................'; var amountToSend = "1859274664735255"; var nonce = web3.eth.getTransactionCount(addr); //211; var rawTransaction = { "from": addr, "nonce": web3.utils.toHex(nonce), "gas": web3.utils.toHex('21000'), "gasPrice": web3.utils.toHex(gasPrice), "gasLimit": web3.utils.toHex(gasLimit), "to": toAddress, "value": web3.utils.toHex(amountToSend) , "chainId": web3.utils.toHex('1') }; var privateKey = '......................................................'; var privKey = new Buffer(privateKey, 'hex'); console.log("privKey : ", privKey); const tx = new Tx(rawTransaction); tx.sign(privKey); const serializedTx = `0x${tx.serialize().toString('hex')}`; web3.eth.sendSignedTransaction(serializedTx);
該
value
參數應為十六進制。實際上所有的數字都應該是十六進制的。查看https://ethereum.stackexchange.com/a/23656/31933了解更多詳情。
編輯: 問題現在更新為使用十六進制值(字元串值是否正確解析為十六進制?整數會更安全)。
你的 gas 限制是 9000。21000 是任何交易的最小值,所以交易注定會失敗,只使用 9000 gas。此外,設置如此高的 gasPrice 也沒有任何意義——如果沒有足夠的 gas 限制,它也無濟於事。您可以使用https://ethgasstation.info/估算您應該使用的價格。
- truffle-hdwallet-provider 版本 0.0.3
使用“氣體限制”實現您的程式碼。前任:
const result = await new web3.eth.Contract(JSON.parse(interface)) .deploy({ data: bytecode }) .send({ gas: '1000000', from: accounts[0] });
- truffle-hdwallet-provider 版本 0.0.4、0.0.5 和 0.0.6
在沒有“Gas limit”的情況下實現您的程式碼。前任:
const result = await new web3.eth.Contract(JSON.parse(interface)) .deploy({data: '0x' + bytecode }) // add 0x bytecode .send({from: accounts[0]}); // remove 'gas'
參考:StephenGrider/乙太坊
您可以使用以下連結獲取更多乙太幣並重試。