专栏名称: 申龙斌的程序人生
分享可繁殖的知识与技能:GTD时间管理、读书心得、个人成长、财富自由之路
目录
相关文章推荐
OSC开源社区  ·  OWL:Manus通用智能体的完全开源复刻、 ... ·  3 天前  
OSC开源社区  ·  30个小确幸(程序员版) ·  2 天前  
OSC开源社区  ·  华为新笔记本被曝预装Linux系统 ·  4 天前  
51好读  ›  专栏  ›  申龙斌的程序人生

参投ICO失败的原因竟然是Gas Limit=25200

申龙斌的程序人生  · 公众号  · 程序员  · 2017-08-19 17:06

正文

最近币圈的ICO太火,有些项目在 ico.info平台上几分钟就完成众筹,一些朋友纵然使出 各种解数,还是抢 不到。然后他们就开始使用 以太坊钱包参投项目,安装钱包和参投的过程本来并不麻烦,比如之前写过的《 图解:用MyEtherWallet钱包参与ICO 》,但向众筹地址发送ETH时的Gas Limit和Gas Price两个参数最让人摸不清头脑。



最近唯链的ICO刚刚结束,我查了一下交易记录,由于Gas Limit填错的交易失败了不少,白白为矿工贡献了不少ETH。



到底这个Gas Limit和Gas Price是个什么鬼?


以前学过比特币发币操作的朋友,对于交易手续费(Transaction Fee)的概念是不陌生的,大多数钱包软件会自动算出一个比较合适的手续费供你选择,比如0.001BTC一般没问题。


但以太坊里非把 交易手续费 搞得异常复杂,多整出一个GAS术语来,有种脱裤子放屁的感觉,最后仍要落实到ETH的消耗上。在这件事情的设计上,感觉以太坊的创始人Vitalik Buterin比中本聪逊色不少,大多数事情保持简单通常是最好的。


不多扯了,这两个参数反正就是要换算成ETH,矿工们要进行 PoW工作量证明 ,最后把这点手续费拿走。



类比时刻(借鉴了MyEtherWallet网站上的思路):


  • Gas直译天然气,翻译为 燃料 ,类比 汽油

  • Gas Limit相当你汽车上的 油箱总容量 ,比如最多装50升

  • Gas Price相当于 油价 ,比如每升6.18元



先来看 Gas Limit


你参与ICO,发送ETH到众筹的合约地址,在比特币里相当于发起了一笔交易,在以太坊里相当于发起一份 智能合约【块55】 ,矿工负责把这份合约加到区块链上,交易手续费相当于激励措施,让矿工干活更卖力。


Gas Limit就是你 准备消耗的最大燃料数量,以太坊里的交易相当于程序代码,有不同类型, 消耗的燃料数量也不一样,一开始无法准确估计,就设置了一个最大量,以免有些人操作失误钱包被掏空。


但麻烦来了,如果你 提供了较少的燃料费,交易可能会失败,但燃料费不退。就像你加了50升的油非要跑到西藏去,结果半路汽油用光了,用了就用了,没人退给你油钱。油箱有个好处,可以加油继续跑,以太坊上的交易就没那么幸运了,合约代码已经执行了,执行过程需要许多步骤,刚走了2步,没油了,只能作废,想补Gas也来不及了,所以 提前设置好Gas Limit很重要


如果ICO交易成功,手续 费是按实际花掉的燃料计算的,多余 没花掉的燃料,会以ETH的方式自动退回到你的钱包中。


举例:


Gas Limit:9 0000

Gas Price:100 Gwei (即 0.0000001 Ether)

Gas Used: 34867


先别管100 Gwei 那个奇怪符号,你设置了高高的90000最大量限制,实际上只用了34867,那么实际消耗的燃料费为

34867 * 0. 0000001 Ether

= 0. 0034867 Ether

按当前1971元/ETH的价格计算,你交了大概6.8元的手续费。


我看了网上那些失败的交易,大多是因为设置了Gas Limit为25200(可能是看了哪篇参投权威教程吧?),这样白白浪费了0.00252 ETH,何必浪费这5元钱呢,还不如给我这文章打赏。


交易失败只损失手续费,参与ICO的大笔资金并不受影响。也就是说,你 参投50ETH,假设失败,只扣掉0.00252ETH,50ETH丢不了。


我简单查了查那些成功的交易,Limit一般设置为90000,还有最高设置20万的也没问题,但不能太高,有些钱包软件可能会报错。



再来看 Gas Price


意思是单位燃料的价格,我们熟悉的单位是Ether,最小计量单位是wei。这个计量单位( 为了纪念一些名人 )实在是太小了,官网上提供了一个很全的列表:


'wei':          '1',

'kwei':         '1000',

'ada':          '1000',

'femtoether':   '1000',

'mwei':         '1000000',

'babbage':      '1000000',

'picoether':    '1000000',

'gwei':         '1000000000',    // 9个零

'shannon':      '1000000000',

'nanoether':    '1000000000',

'nano':         '1000000000',

'szabo':        '1000000000000',

'microether':   '1000000000000',

'micro':        '1000000000000',

'finney':       '1000000000000000',

'milliether':    '1000000000000000',

'milli':         '1000000000000000',

'ether':        '100000000000000 0000',    // 18个零

'kether':       '1000000000000000000000',

'grand':        '1000000000000000000000',

'einstein':     '1000000000000000000000',

'mether':       '1000000000000000000000000',

'gether':       '1000000000000000000000000000',

'tether':       '1000000000000000000000000000000'


刚才的100 Gwei现在知道意思了吧?1 Gwei 相当于10^9 wei,那么

100 Gwei =  100 * 10^(-9) Ether

= 10^(-7) Ether


这个Gas Price也很重要,你给的价格越高,你的交易就越优先被矿工取走,就越早地被确认。你可以登录这个网站看 看设置什么价格比较合适:







请到「今天看啥」查看全文