5.6 Gas和交易花费

优质
小牛编辑
138浏览
2023-12-01

Gas和交易花费

那么你是如何付钱的呢?私底下,交易规定了gas限额和gasprice,两者都可以直接在交易对象中指定。 gas限额是为了保护您免受错误代码的运行而导致您的资金耗尽。gasPricegas表示你愿意支付执行事务的Wei的最高金额。你指定的gasPrice是矿工用来对交易进行排序以包含在块链中。一个单位gas的Wei的价格也就是VM的运营价格。

运行合约所产生的gas开支,将被您账户中的ether以您在交易中用gasPrice指定好的价格购买。如果您没有ether来满足完整运行代码的所有gas需求,则处理中止,所有中间状态更改将回滚到事务前的快照。执行停止点的gas已经被使用了,所以你的账户的余额将减少。交易对象字段gasgasPrice上的这些参数可以调整。 该value字段与普通帐户之间的ether转移交易中的用法相同。换句话说,任何两个帐户之间,普通账户(即外部控制)或合约,都可以转移资金。如果您的合约资金用光,你会看到资金不足的提示。

对于测试和使用合约,您可以使用测试网络或设置与所有其他节点隔离的专用节点(或集群)。如果你要挖矿,你可以确保你的交易将被包含在下一个块中。您可以通过以下方式查看待处理的交易:

eth.getBlock("pending", true).transactions

您可以通过数字或其哈希来检索块:

genesis = eth.getBlock(0)
eth.getBlock(genesis.hash).hash == genesis.hash
true

使用eth.blockNumber来获得当前blockchain高度,也可以使用“latest”这个神奇参数访问当前头(最新块)

currentHeight = eth.blockNumber()
eth.getBlock("latest").hash == eth.getBlock(eth.blockNumber).hash
true