区块链扩容一直是区块链团队的重点研究方向。因为比特币对区块大小的设定是固定的,而且中本聪将最初大小值限定为1M,但随着交易量的增加,网络拥堵情况也愈渐严重,最终也导致了比特币的分叉。

区别于比特币固定区块大小的设定,以太坊则引入了燃料(gas)的概念,并采取了区块燃料限制(Block Gas Limit)动态调整机制,即根据交易量大小来调节Block Gas Limit。通常我们以TPS来衡量区块链的交易处理能力, Block Gas Limit值越大则意味着允许区块打包的交易量也就越多,也就是说网络拥有越高的TPS。所以,以太坊的扩容方案之一就是提高Gas值限制,以此来缓解网络拥堵的情况。

Gas Limit动态调整机制

以太坊主要通过矿工投票机制来决定目标燃料限制(TGL,Target Gas Limit),同时不能小于最小燃料限制(MGL,Min Gas Limit)。而其动态调整机制主要是在区块gas使用量超过父区块Block Gas Limit的2/3时,全网对当前区块的Block Gas Limit进行适当提升,但不允许超过TGL。

然而,通过提升Block Gas Limit的扩容方案在实现上也有弊端。若Block Gas Limit无上限,那么区块在进行广播的时候必定会有时延问题。越高的TGL也就意味着Block Gas Limit值越大,被允许打包到区块之中的交易越多,消耗的gas也就越多,其同步到整个区块链网络所需的时间也就越长,那么该区块也很有可能因为时延问题而竞争失败,最终被抛弃而成为叔块(Uncle Block)。根据Vitalik Buterin的脚本实验分析,被打包的区块每增加1,000,000 gas价值的交易,其变为叔块的概率就会增加约1.86%。一方面,因为数块只能获得75%的区块奖励,所以矿工因为利益问题也不愿意选择提升TGL。另一方面,在提升TGL的同时也需要面临算力中心化的问题。就目前来说,尚未找到合适的数学算法来对TGL进行设定,其决定权依然归属于矿工,所以区块燃料限制动态调整机制仍需完善。

Gas相关的计算

Gas主要用来支付交易的手续费,其计算也相对简单。当我们在进行交易时,gas的最大消耗限制需要由交易者自行设置,即gas limit。那么我们可以得到交易的最大gas费用计算公式,如下所示

其中,表示允许消耗的gas最大值,表示单位gas的价值,两者相乘即为最大的交易手续费。举例来说,Gas Limit=50,000,Gas Price=20Gwei,那么所需最高手续费(以最大消耗量来算)为0.001ETH。其中

然而在整个交易执行过程中,还可能涉及其他费用,如合约创建费用等。那么实际消耗的gas计算公式,如下所示

其中,Predifined Gas Fee表示执行交易预定费用,Storage Fee表示随交易发送的数据的gas费用(零字节和非零字节会根据对应的设定值消耗一定的gas量),Contract Creation表示合约创建交易还需额外的费用。

那么,交易完成后剩余的gas即为交易最大gas费用减去使用的Intrinsic Gas

其中,Gas Limit≧Intrinsic Gas,待交易执行完毕,剩余的gas也会退还给交易者。

在费用估算上,对交易者而言,前期gas费用可以取最大gas费用与传送总值的总和。

其中,Upfront Cost表示交易执行的前期费用,Gas Limit表示gas消耗的最大量,Gas Price表示gas单价,Value表示发送方传送给接收方的总值。

对于以太坊网络来说,“网络又堵了”常常被拿出来讨论。从2017年的加密猫堵死网络事件到近期的交易所刷单大拥堵事件,或者是面对黑客的DDOS攻击,以太坊也尝试通过调整Gas值限制来解决网络堵塞问题,虽然可以见到暂时性的成效,但问题并没有完全解决,仍需通过其他扩容方案来优化网络性能,从而有效解决网络大拥堵问题。

区块链扩容方案之Gas值限制的更多相关文章

  1. 正本清源区块链——Caoz

    正本清源区块链 说明:以下内容整理自Caoz的<正本清源区块链>,如有不妥,请联系我修改或删除. 简介 不讨论炒币!不讨论炒币!不讨论炒币! 本课程内容分为两部分: 第一部分,烧脑篇,介绍 ...

  2. 用JavaScript写一个区块链

    几乎每个人都听说过像比特币和以太币这样的加密货币,但是只有极少数人懂得隐藏在它们背后的技术.在这篇博客中,我将会用JavaScript来创建一个简单的区块链来演示它们的内部究竟是如何工作的.我将会称之 ...

  3. ZT-----用javascrip写一个区块链

    几乎每个人都听说过像比特币和以太币这样的加密货币,但是只有极少数人懂得隐藏在它们背后的技术.在这篇博客中,我将会用JavaScript来创建一个简单的区块链来演示它们的内部究竟是如何工作的.我将会称之 ...

  4. 信息摘要算法之七:SHA在区块链中的应用

    最近几年比特币的火爆带动了人们对区块链技术的研究.当然我们在这里并不讨论区块链技术本身,而是讨论一下区块链中的SHA算法的应用.对于SHA系列算法我们已经在前面作了说明,在这里也不再重复. 1.区块链 ...

  5. 给本体ONT技术社区的第一封公开信-涉及到不少区块链技术知识

    给本体ONT技术社区的第一封公开信-涉及到不少区块链技术知识 共识是区块链的核心机制,在一系列的区块链的发展历史当中,PoW/PoS/BFT等系列的共识算法都在各自的应用场景发挥了不同作用.在本体的第 ...

  6. NGK公链如何构建区块链数字经济商业帝国?

    2020年对于区块链市场来说,重大的利好消息莫过于NGK公链的上线了.NGK公链其广泛的市场前景.顶尖的技术,一直备受众多大型机构以及投资者所看好.同时,NGK公链也不负众望,在上线以后,就开始落地到 ...

  7. 区块链公链分片技术(sharding)方案,配思维导图

    区块链公链分片技术(sharding)方案,配思维导图 分片技术(sharding)方案 以太坊分片思路 其基本思想是,将网络中的节点分成不同的碎片,各分片可以并行处理不同交易,这样可以并行处理相互之 ...

  8. 破除区块链支付壁垒,NGK支付架构方案浮出水面

    什么叫做区块链支付?区块链支付系统与传统支付系统有哪些不同?简要地说,原来传统的支付系统是有一个类似于银行的中间平台存在的,用户们的支付交易第一时间是寄存在平台,由平台核实验证交易行为之后,方才放行交 ...

  9. Datahero inc:区块链方案如何在现有食品溯源系统里实现落地?

    在食品行业,区块链溯源平台的应用,主要是指围绕"从农田到餐桌"的安全管理理念,综合运用区块链技术.大数据技术和二维码技术等前沿技术,具有产品生产企业管理. 产品生产档案 (农药/防 ...

随机推荐

  1. MySQL报错:error1130

    ERROR (HY000): Host 'ip-172-31-x-x.ec2.internal' is not allowed to connect to this MySQL server 分析,从 ...

  2. November 15th, 2017 Week 46th Wednesday

    Of all the tribulations in this world, boredom is the one most hard to bear. 所有的苦难中,无聊是最难以忍受的. When ...

  3. python基本语法:

    http://www.runoob.com/python/python-basic-syntax.html

  4. 将"a"标签当bunton使用

    <a href="javascript:void(0);" style="color: red" onclick="del_product_in ...

  5. java.lang.NoSuchMethodError: No static method getFont

    最近在Android Studio升级3.0后,在AlertDialog弹窗时报出了如下问题: java.lang.NoSuchMethodError: No static method getFon ...

  6. Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

  7. loadrunner中pacing的设置

    通常我们在谈到一个软件的“性能”的时候,首先想到的就是“响应时间”和“并发用户数”这两个概念.我们看到的性能需求经常都是这样定义的: “要求系统支持 100 个并发用户” 看到这样的性能需求,我们往往 ...

  8. Xcode 备忘

    一. 打印一堆乱七八糟的东西: Edit Scheme... --> Run --> Arguments,在 Environment Variables 里添加 OS_ACTIVITY_M ...

  9. 【css】文本超出行数以省略号显示

    //超出2行省略overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webk ...

  10. Codeforces round 1100

    Div 2 532 我对交互一无所知 只能寄期望与NOI和省选不出交互吧... E 这个题,真的是耻辱... 其实非常简单,就是二分+判环... 那么就直接二分答案+拓扑排序即可... (我居然在考试 ...