以太坊曾经发生过这样的攻击,就是通过不断的转移额度非常小的帐目,使得整个网络瘫痪,当时交易的费用非常低,可以忽略不计,因此以太坊引入了gas的概念,任何转账以及智能合约的执行,都要消耗一定的费用即gas,如果gas消耗完毕,则代码不再继续执行,这样防止恶意代码的for循环不停的执行,以至于整个网络无法继续向下一个状态迁移。因此我们知道任何计算,存储都是需要付出成本的,这样杜绝恶意攻击代码。以太坊为每一个代码功能都定义了成本,具体成本如下:
每一个交易都可以定义gasLimit和gasPrice,其中gasLimit是通过系统计算出来的,表示该交易需要消耗的指令的最高成本,如果超过这个成本还没有执行结束,说明系统出现问题,就不再继续往下执行。gasPrice是用户可以为每一个指令指定较高的价格,以Wei为单位,指定这个目的是,激励旷工更快的将自己的交易打包到区块链上,这样越早被打包,就越快完成交易。
Tp表示交易的gasPrice,Tg表示交易的gasLimit。旷工们会从交易池中寻找那些gas价格高,指令数量多的叫Tx来打包,这样他们得到收益自然就会变多。每个新打包的区块B,其区块头信息都包含Hc即beneficiary字段,该字段就是将区块打包成功的旷工的地址,所有消耗的gas都会转移的旷工的账号下。
如果在将交易打包的过程中,gas没有全部消耗完,还剩下了一部分gas,那么这个gas就会打回到支付gas的账号下面。
这一章节的内容比较简单,没有更多的细节可以讨论。
网友评论