曾用过区块链相关应用,不管是交易所、DApp 或是虚拟货币钱包的人,一定都听过矿工费(Gas Fee) 这个词。它是当你要在区块链网路发起一笔交易时,所要支付给矿工的一笔手续费。
一个大家都很熟悉的实际例子来比喻,当你要在不同的银行帐户之间转帐时,必须要为银行提供的服务支付手续费。
同样的,区块链的矿工要把你的交易打包并放上区块链,才能使交易完成,在这过程中会消耗区块链的运算资源,所以要支付矿工费。
在以太坊网路上,是用ETH (以太币) 来支付矿工费。如果你要从交易所或钱包发送以太币和ERC 20 代币,或是和智能合约进行互动,例如参加ICO 或是使用DApp 等,就必须用ETH 来支付矿工费。
以上面的 MetaMask 截图为例,每次当你要传送以太币时都会跳出这个操作画面,图中有两个栏位与矿工费有关,分别是「Gas Limit」和「Gas Price」。在每次的交易中,你都可以依照需求调整这两个数值。
Gas Fee = Gas Limit x Gas Price
矿工费总金额的计算方式是Gas Limit 乘上Gas Price。因此先把图中的Gas Limit 和Gas Price 两个数字相乘,再换算成以太币(1 ETH = 10^9 GWEI): 21000 x 10 / 10^9 ,就可以得到矿工费的总金额0.00021 ETH 。
Gas Limit 是你在这笔交易中所愿意支付Gas 单位的最大数量。完成一笔交易所需的Gas 单位数量,取决于交易的复杂程度。当一笔交易越复杂,就必须要耗费较多的运算资源,因此需要花费较多Gas。
要特别注意的是,当设定的Gas 单位不够多时,将会导致交易失败。21,000 是一般转帐交易的Gas Limit 预设值,如果是要参与代币销售或是使用DApp,因为过程会涉及较为复杂的智能合约,因此就要设置更高的Gas Limit。
Gas Price 是每个单位Gas 的价格,以GWEI 表示。它会影响到你的交易被矿工打包放上区块链的速度。
如果Gas Price 设的越高,就给矿工更大的诱因将你的交易打包;相反的,如果Gas Price 设的低就要等待比较长的时间。要是不急着完成一笔交易,你就可以选择较低的Gas Price 来省钱。
对矿工费有了基础认识后,接着就来看你不可不知的6 个重点:
1.注意参加代币销售时设定的Gas Limit
参与代币销售时,你应该要把Gas Limit 设成销售方所建议的数值。因为代币销售的智能合约比一般转帐交易更为复杂,所以Gas Limit 也要设得更高。我就曾经在参加ICO 时,因为不知道要把Gas Limit 从21,000 改为100,000,而碰到“out of gas” 错误。
2.想节省矿工费,你应该调低Gas Price 而不是Gas Limit
如先前所提到的,如果你调低Gas Limit 可能会无法满足完成交易所需的Gas,导致交易失败。因此要节省矿工费,请将Gas Price 调低,并耐心等候交易完成。
3.你可以拿回没用完的Gas
不需要担心把Gas Limit设定得太高,如果有Gas没被用完,会在交易完成之后退还到你的帐户中,你可以到 Etherscan 上查询交易的细节。在下面的截图中,我们可以看到Gas Limit的设定是100,000,但是实际上只用到35,826,所以剩余没用完的Gas就会退还。
4.如果交易失败,依然要付矿工费
万一不小心把Gas Limit 设得太低,导致交易失败,矿工费也不会退还给你,因为你还是必须为区块链已进行的运算支付手续费。
5.确保有足够的ETH 支付矿工费
记得不论是要传送ETH 或是ERC20 代币,你都必须要用ETH 支付矿工费。有时候大家会忘记钱包中也要有ETH 才能够发送代币。
6.实用小工具:ETH Gas Station , Etherscan
在 ETH Gas Station 上,可以找到依据以太坊网路壅塞程度,所推荐设置的Gas Price,就看你想节省矿工费,还是想快点完成交易。在 Etherscan 上,可以查询每个交易的详细资讯,包括Gas Limit, Gas Price以及交易中实际用到的矿工费。