本周木有算法题,因为小伙伴又去搞之前的动规题目了,我也就跟着休一周。
网上关于区块链及各Token的资料很多,但对于以太坊的费用解释的却不够详细,研究后做个记录吧。
ETH佣金Gas
ETH的信息我就不说了,我们都知道在以太坊上执行合约都需要燃烧Gas,那么Gas该怎么计算呢?
Gas是由两个部分组成: Gas limit
(限制)* Gas Price
(价格)
-
Gas Price
是Gwei
的数量,是指用户愿意花费于每个 Gas 单位的价钱。 -
Gas Limit
是用户愿意为执行某个操作或确认交易支付的最大Gas量(最少21,000),不同时期、不同的操作默认值不同,在执行操作时可设置Gas Limit
。
换算
单位换算表根据上图的单位换算表可知:1
ETH
= 1e9gwei
(10的九次方)下面我用以太坊钱包映射EOS钱包所燃烧的Gas为例:
由上图可以看到我所支付的
Gas Price
是41个Gwei(以太坊钱包默认的是41,可在首页调整,如下图),Gas Limit
是90558(在创建合约的时候可以调整,由于当时的网络情况较好,所以比较低,前期以太猫的出现搞的网络情况不好,所以Gas Limit
比较高,有的朋友做了个映射花了近1个ETH的费用)。由此我们可以算出最终的Gas为0.003712878个ETH(1e-9ether
* 90558 * 41)也就是图中的Actual Tx Cost/Fee
Gas Price调整图
注:由于Gas limit
一般差距很大(差距数万数十万),所以手续费差别也会较大
更新:
昨天由于以太坊网络不太好,所以转账的时候总是提示Warning! Error encountered during contract execution [Out of gas]
翻译过来就是合约执行出错,其间提示过是由于Gas(手续费)太低导致交易失败。转账金额退回原账户,然而手续费不退。提高了Gas limit
(限制)以后发现,其实在一个交易中,真正消耗的Gas不一定是你输入的Gas limit
Gas Price
,而是Gas Used By Txn
* Gas Price
,往往Gas limit
等于Gas Used By Txn
(如上面的交易),并且文档中写的也是Gas limit
Gas Price
,如下图:
然而通过下面一笔交易让我有了如上的推论:
上图中的
Gas
= Gas Used By Txn
* Gas Price
,而非Gas limit
*Gas Price
。 Gas Used By Txn
并不等于Gas limit
,Gas limit
是你执行操作前输入的,但Gas Used By Txn
才是真正执行合约所消耗的。
网友评论
这里不是1e9gwei * 90558 * 41吧
是 90558 * 41/1e9ETH吧