随着DeFi热潮的袭来,以太坊的矿工费也达到了历史新高,之前转账几分钱的时代已经远去,随之而来的是动辄上百元的交易费用。
很明显,高昂的矿工费使你忍不住点进来,妄图通过学习科普来节省矿工费。
不存在的,这篇文章顶多能让你花钱花的更明白点。
什么是以太坊?
“以太坊是一个分布式的平台,可以运行智能合约:应用程序按照既定程序运行,不会出现停机,审查,欺诈或第三方干扰的可能性。这些应用程序运行在定制构建的区块链上,这是一个功能强大的全球共享基础架构,可以通过数字流转来代表财产的所有权。”
以太坊为什么要有矿工费?
大家可以把太坊看作是一个庞大的计算机,每天会有纷繁的计算发生在以太坊上,但是大家都知道区块链上的资源是稀缺的,为了避免无用的操作占用链上计算资源,所以以太坊最初的设计就是一个有偿使用的平台,用户每一步的操作都需要付出相应的矿工费,这样既避免了主链遭受垃圾操作的攻击,又可以把费用奖励给维护区块链的矿工们,一举两得。
以太坊矿工费是怎么计算的?
提到矿工费,很多人会脱口而出,就是Gas呗!目前的确是有很多人将Gas和矿工费直接画等号来使用的。但严格意义来说,这种定义是不准确的。
在以太坊区块链中,Gas是衡量计算量的特殊单位,它用来测量一个操作或一组操作需要执行多少工作量。比如,计算一个 Keccak256 加密哈希函数,每次计算哈希时需要 30 个 Gas。
因此Gas不是币,不是钱,不是费用,所以和矿工费并不是一个东西。
那Gas和矿工费有什么关系呢?看下面这一条公式:
矿工费= Gas Price * Gas Used 用人话说,就是 :
矿工费=Gas 价格*Gas 用量
下面我们就来拆开讲一下公式里的一些概念。
Gas Price 指你愿意为单位Gas支付多少以太坊,这是最吸引矿工的数字,也是决定你的交易完成快慢的决定性因素,因为矿工为了获得更多的矿工费,总是会优先为出价更高的交易服务。
所以在转账前一定要设置合理的 Gas Price,过低会长时间得不到处理,或者被移除交易,导致转账失败。
Gas Used 是指你的这次操作消耗了多少Gas,但在日常转账时,我们通常见不到Gas Used在哪里设置,这是因为只有在转账完成后,我们才能看到这笔交易具体使用了多少Gas。
我们在转帐前可以设置的叫做Gas Limit,即Gas 限额,意思是你愿意为这笔操作最多使用多少Gas,Gas Limit 和 Gas Used的特别像你点外卖,你预计自己可以吃多少和你实际吃多少的关系。
设置完Gas Limit进行转账后,会有以下几种情况:
1、Gas Limit = Gas Used,即预设的 Gas 和用掉的 Gas 完全一致。
2、Gas Limit > Gas Used,即预设的Gas没有完全消耗完。
3、Gas Limit < Gas Used,即预设的Gas不够实际使用的。
第一种,交易成功。
第二种,交易成功。还有个好消息是,没有消耗完的Gas会以ETH的形式返回,并不会造成损失。
第三种,交易失败。还有个坏消息是,已经消耗的Gas不会退回,损失惨重。
Gas Price决定你的交易走多快(多快被矿工打包),
Gas Limit 决定你的交易可以走多远(可以运行多么复杂的合约)。
基础科普完了,你们大大的脑袋里肯定有更大的疑惑,继续往下看,我猜你的问题就在下面。
怎样合理设置Gas Price 和 Gas Limit?
如果你是一个普通用户,那么你不需要考虑这些问题。譬如比特派这样的钱包,在转账时会根据当前网络状态帮你自动计算推荐矿工费,为你设置当前最合理的Gas Price 和 Gas Limit。
如果你是一个不甘心做普通用户的普通用户,这里可以给你一些扩展网站,可以琢磨下,合理的Gas Price 和 Gas Limit是怎样根据大数据推算出来的https://ethgasstation.info/index.php。另外自定义Gas Price 和 Gas Limit的功能通常都在高级选项里。
怎样合理降低矿工费?
前面已经学到了,
设置的矿工费= 设置Gas Price * 设置Gas Limit
虽然把Gas Price 和 Gas Limit 任意一个数值降低你的矿工费的值都会降低,但我深切的叮嘱你,不要随意降低 Gas Limit 。正确降低矿工费的方法应该是调低 Gas Price。
降低 Gas Limit 不会给你省钱,只会徒增你交易失败的概率,同时你也知道,交易失败后的矿工费是不会退还的,所以千万不要随意降低 Gas Limit
为什么交易在区块链上会失败,提示 Out Of Gas?
Out Of Gas 就是指上面的第三种情况,Gas Limit < Gas Used,即预设的Gas不够实际使用的,这种情况在普通转账时几乎不会发生,通常发生在与复杂只能合约交互的情况下
通常来说,在执行复杂合约时,合约应该向执行者反馈此次操作大约需要多少Gas,然后钱包得到此反馈后会进行设置,因此,此类失败的原因通常有两个:
1、智能合约不够健全,项目方太应付,没有给返回 Gas Limit 值
2、你用的钱包不太聪明的样子,没看懂对方返回的 Gas Limit 值
解决办法: 1、手动给 Gas Limit 调高点,通常200000—300000就可以应付当前大多数的DeFi合约交易。2、换比特派。
设置 Gas Limit 是不是越高越好?
前面学到了,当Gas Limit > Gas Used 时,即预设的Gas没有完全消耗完,多设置的的部分Gas还会返还给我们。
聪明的小伙伴灵机一动,那我设置尽可能大的Gas Limit岂不是万无一失了?反正用不完的会还我。实际上过高的Gas Limit并不会提高你的交易速度。反而会给你带来风险。
以太坊每个区块可以处理的交易也是有限的,因此矿工需要在有限的交易数中获得更高的收益,而过高的Gas Limit在矿工眼中属于画大饼的行为,部分的挖矿策略中会后置处理Gas Limit过高的交易。
此外,Gas Limit的存在可以有效的防止一些合约死循环恶意消费你的矿工费,如果你设置了过高的Gas Limit,恰巧又碰到了有问题的合约,那么你Gas将会一直消耗下去,直到设置的Gas Limit将会被消耗光,又是损失惨重的一天。
设置矿工费时候出现的Gwei是什么?
以太坊的最小单位是 Wei。1 个以太币 = 10 的 18 次方 Wei,此外,以太坊还有其他的单位:
Kwei(Babbage)= 10 的 3 次方 Wei
Mwei(Lovelace)= 10 的 6 次方 Wei
Gwei(Shannon)= 10 的 9 次方 Wei
MicroEther(Szabo)= 10 的 12 次方 Wei
MilliEther(Finney)= 10 的 15 次方 Wei
Ether = 10 的 18 次方 Wei
括号里的部分是每个单位的别名。
在以上这些单位里,通常计算 Gas 价格时使用的都是 GWei。
以上
矿工费真不是钱包收的!矿工费真不是钱包收的!矿工费真不是钱包收的!