Web3js
發送原始交易中的 Gas 限制和價格
嘗試編譯合約,然後將其發送到網路。我得到的目前錯誤是
Error: transaction underpriced
這是我編譯 rawTx 的程式碼。我在 Ropsten,gas 價格為:21000000000,gasLimit 最新為:4712388(來自 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 };
不需要十六進制數據,web3 會處理它。
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 };
在你得到某個賬戶的 nonce 後,你應該添加 1 作為 rawTx 的新 nonce。
例子:
>>nonce = web3.eth.getTransactionCount(account1) ; >>nonceHex = web3.toHex(nonce);
我無法從“payloadData”的程式碼中找到更多數據,這是另一種出錯的方式。