多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
参考链接https://blog.csdn.net/zhuweiqin2937/article/details/83658995 ### 1\. gas是什么。   Gas 翻译成中文就是“燃气”,是以太坊世界的燃料,它决定了以太坊网络生态系统的正常运行。Gas 用来衡量执行某些动作需要多少“工作量”,这些“工作量”就是为了执行该动作支付给网络的费用额。通俗理解,Gas 是给矿工的佣金,并以 ETH 支付,无论是交易、执行智能合约并启动 DApps,还是支付数据存储费用,都需要用到 Gas。 合约执行会在所有节点中被多次重复,这个事实得使得合约执行的消耗变得昂贵,所以这也促使大家将能在链下进行的运算都不放到区块链上进行 gas、gasPrice都能由用户指定的,在测试私链中,这两个值的默认值会按照发送交易设置的最大值填充下一次交易值,若不指定,gas会默认最小值21000,gasprice决定交易被打包的优先级,一般根据自己的数据量和合约内容估计填写,gasPrice 以Gwei为单位默认0.05 Gwei 当前区块GasPrice:60Gwei ### 2\. Gas的费用(fee)组成 ~~~ 转账签名 nonce = w3.eth.getTransactionCount(from_address)\\指定地址发出的交易数量 payload = { 'to': to_address, 'value': value, 'gas': int(gas_limit), 'gasPrice': Web3.toWei(gas_price, 'gwei'), 'nonce': nonce, 'chainId': chanId } account.signTransaction(payload) ~~~ 由两个部分组成: Gas limit(限制)\* Gas Price(价格) GasPrice 是 Gwei 的数量,是指用户愿意花费于每个 Gas 单位的价钱,frontier版 默认为 0.05 Gwei。 gaslimit:用户愿意为执行某个操作或确认交易支付的最大Gas量(最少21,000),至于花费这些Gas量是否能完成工作是不确定的。 每笔交易都被要求包括一个gas limit(有的时候被称为startGas)和一个gas。矿工可以有选择的打包这些交易并收取这些费用。在现实中,今天所有的交易最终都是由矿工选择的 ### 3\. 实际交易消耗估算 `gasUsed`:每个EVM中的命令都被设置了相应的gas消耗值。gasUsed是所有被执行的命令的gas消耗值总和。 `gasPrice`:该交易中单位gas的价格(用以太币计算) 易费 = gasUsed * gasPrice** ### 4 设置用户交易Gas limit 需要考虑的问题 * Gas 用完时,矿工将停止执行。 * 如果有剩余 Gas,将立即退还给发起交易的人员或智能合约创建者。但是,如果用户设置的限制值太低,那么ta的交易被认为是无效的,并且会因为“Gas不足”错误而被取消,并且其中用于计算的 Gas 不会退到账户。所以无论交易是否通过,发送者总需要向矿工支付计算费用