Web3js

發送原始交易中的 Gas 限制和價格

  • December 5, 2018

嘗試編譯合約,然後將其發送到網路。我得到的目前錯誤是

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”的程式碼中找到更多數據,這是另一種出錯的方式。

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