Solidity
交易中使用的氣體與賬戶餘額不同的問題匹配
我已經啟動
testrpc
並部署了一個簡單的 HelloWorld 合約,使用truffle
. 我向我的合約發送了一個簡單的交易,並在交易前後記錄了我的賬戶餘額。不幸的是,這不符合我在交易中看到的 gasUsed 參數。contract HelloWorld { uint public x; function HelloWorld() { x = 5; } function set_x(uint _x) returns(uint x) { x = _x; return x; } }
還有我的 javascript
var HelloWorld = artifacts.require("./HelloWorld.sol"); module.exports = function(callback) {} from_wei = web3._extend.utils.fromWei var account1 = web3.eth.accounts[0]; var start_balance = web3.eth.getBalance(account1).toNumber(); HelloWorld.deployed().then(function(instance) { return instance.set_x(500) }).then(function(tx) { console.log(tx) var new_balance = web3.eth.getBalance(account1).toNumber(); console.log(start_balance + " initial balance"); console.log(new_balance + " balance after transaction"); console.log((start_balance - new_balance) + " difference"); console.log(from_wei(start_balance - new_balance) + " difference (from_wei) ?"); console.log(web3.eth.gasPrice.toNumber() + " gas price") })
輸出如下內容:
{ tx: '0x1a2876b330618c75c7e264becbee75c491b47b5a17a0f9f9fe7fb124f0e93113', receipt: { transactionHash: '0x1a2876b330618c75c7e264becbee75c491b47b5a17a0f9f9fe7fb124f0e93113', transactionIndex: 0, blockHash: '0xf30134cac3be167d6053a21953b87010ce7145ccb36775e76d38458dddfa81b9', blockNumber: 16, gasUsed: 21736, cumulativeGasUsed: 21736, contractAddress: null, logs: [] }, logs: [] } 99939363900000000000 initial balance 99937190300000000000 balance after transaction 2173600000000000 difference 0.0021736 difference (from_wei) ? 20000000000 gas price
看起來我賬戶餘額的差異與使用的氣體相同,只是幅度不同。所以我很困惑?這些數字是用wei表示的嗎?我想我需要乘以汽油價格才能看到交易會對我的賬戶餘額產生多大影響……?我怎樣才能讓 GasUsed 等於我賬戶餘額的差額?
您可以根據需要在
truffle.js
文件中配置網路。其中一個參數是
gasPrice
(預設為 100000000000)