以太坊源码情景分析之以太坊低TPS值理论分析

    TPS是指1秒钟能处理的交易数,由于以太坊出块速度是固定的,每15秒一个区块,因而以太坊的TPS值由一个区块里能够打包的交易数量决定。和比特币将区块大小限制在1M不同,以太坊对区块大小并没有限制,因而理论上一个区块可以打包任意多的交易,因此以太坊的TPS应该可以无限高啊,网络上以太坊的"低TPS评价"又是怎么来的呢?

    数据是最不能说谎的,我们以事实为依据,我们先来看下“以太猫"盛行时以太坊网络阻塞不堪时的区块交易数量(TPS),因为这个状态下的区块交易数(TPS)其实就接近最高值了。

“以太猫“时期TPS分析

    “以太猫"发布于2017.11.23。然后很快就风靡以太圈,从12月3日开始,以太坊待处理交易几乎直线上升,也就是说网络已经开始产生拥堵。到12月9开始,以太网络被以太猫搞死的消息开始广泛传播。

    所以我们看看12月9日当日的区块交易数量数据

 

  

    从上面可见这一天的区块交易数量也就在100左右。

TPS为啥这么低

    为啥只有100左右呢?最开始我们分析过,TPS应该可以无限高啊?肯定有其他因素限制着。其实有两个因素

    1)全网广播速度限制

        以太坊对区块没有限制,但是网络广播速度限制了区块的大小。我们知道一个新块生产出来后需要全网广播,然后需要全网超过51%的节点收到该新区块才能得到认可。区块越大,数据量就大,全网广播的时间就越长。但是全网广播又必须尽量在下一个区块生产出来之前完成,所以这个全网广播时间就有了限制,就是区块出块速度。目前数据显示,1M的数据全网广播需要1.5s左右。因而以太坊在加上全网广播速度限制后,它的区块大小理论上最高可到10M.因此我们来看看上面的区块大小是不是10M,

    出乎意料,区块只有22k大小,和上面的10M大小相差甚远。因而这个因素不是罪魁祸首。那真正的“凶手”在哪里呢?

    2)gasLimit限制

     就是区块的总gas量,区块中的所有交易使用的油量的总和不能超过这个限制,并且这个油量限制是动态调整的。

    

区块gasLimit源码分析

    区块gas限制的逻辑在core/block_validator.go文件中

1)常量

    GasLimitBoundDivisor=1024

    MinGasLimit=5000,区块最小的油量限制

    TargetGasLimit=4712,388,是可以更新的,这个值最开始是5000,等于创世纪块的gasLimit.

 

2)具体算法

   核心部分为蓝色框和红色框代码

    当gasLimit > TargetGasLimit时:

        蓝色框起作用。其逻辑是如果parentGasUsed > parentLimit*2/3,蓝色框为正,相当于要增加这一个块的gasLimit,否则是减少。增加的速度由GasLimitBoundDivisor值决定。

    当gasLimit < TargetGasLimit时:

        红色框起作用,目的是按照GasLimitBoundDivisor的速率尽快让gasLimit达到TargetGasLimit。这个主要是因为TargetGasLimit是可以更新的,当更新后,需要将区块gasLimit慢慢的向新TargetGasLimit接近,当到达这个值后,就由蓝色框部分动态调整gasLimit.并且以后永远不会出现gasLimit < TargetGasLimit,直到设置下一个更大的值。

 

gasLimit提速问题

    从上面我们看出,如果网络中的交易数量一直是增长的,没有波动,则gasLimit会不断变大。但是如果系统不断波动,gasLimit就可能不怎么增长。在全网交易量大增,TPS确实是可以动态提高的,但是这个提升是慢慢的,对于“以太猫”这种剧增是没法应付的。理论上当出现“以太猫”这种剧增后,如果一直保持,整个系统的TPS会不断提高的,但是由于“以太猫”导致的网络拥堵使得大家苦不堪言,市场立马出现两种"应急"反馈。

    1)交易费疯长导致普通交易量减少

    2)媒体开始呼吁抵制以太猫,导致以太猫后期交易变少

    3) 低TPS预期导致开发人员没有开发高交易量智能合约的需求

    这些反馈使得网络的交易量剧增只保留了一段时间,从而没有足够时间让以太坊TPS提升到足够轻松应对以太猫正常要求的交易量。其实这个有点像我们跑步,如果“三天打鱼,两天晒网”,我们的耐力没法提升的,必须持续一段时间一直跑才有效果,并且是一级一级提升。

    

    总的来说,以太坊本身具备缓慢持续提升TPS的能力,但是波动性的峰值TPS需要TargetGasLimit来解决,它相当于设置了最低gasLimit,可以解决峰值问题。

|**************************************************
* 本文来自CSDN博主"爱踢门",喜欢请点关注
* 转载请标明出处:http://blog.csdn.net/itleaks
***************************************************|

如果你对EOS,ETH技术及开发感兴趣,请入QQ群讨论: 829789117


如需实时查看最新文章,请关注公众号"区块链斜杠青年",一起探索区块链未来

  • 3
    点赞
  • 4
    收藏
  • 打赏
    打赏
  • 0
    评论
【技术背景】<br /><span style="color:#333333;">区块链,是一个分布式的共享账本和数据库,具有去中心化、不可篡改、可追溯、公开透明等特点。区块链技术作为科技创新的代表和未来技术的发展方向,已经上升至国家战略高度。它将为解决信息不对称问题、创造信任与合作机制等提供丰富的应用空间,也会是未来我们技术自主创新、引领产业变革的重要突破口。</span><br /><br /><span style="color:#333333;">比特币被认为是区块链技术1.0版的应用,主要实现的是电子现金的分布式记账转账功能。而随着技术的不断发展更新,越来越多的人希望突破“账本”的限制,从而可以把这项未来技术应用在更广阔的领域。</span><br /><br /><span style="color:#333333;">以太坊(Ethereum)为代表的第二代区块链公链项目,就是其中的佼佼者。与比特币不同,以太坊的定位是一个“世界计算机”。以区块链作为底层存储技术,我们不仅可以记账转账,而且可以构建“智能合约”(smart contract)定义程序化的处理流程,进而实现区块链上运行的“去中心化应用”(DApp)。</span><br /><br /><span style="color:#333333;">以太坊项目自提出后就受到了广泛关注,快速的发展和壮大,而且由于其“分布式应用平台”而非“分布式账本”的定位,越来越多的开发人员开始以以太坊为基础设施,在上面开发DApp。</span><br /><br /><span style="color:#333333;">随着更多开发人员的参与,和项目的逐步落地,以太坊已成为从事区块链学习和开发不可或缺的一个环节;既了解区块链底层原理、又熟悉以太坊架构、还能基于以太坊开发DApp的专业人才,也成为了各大公司发力区块链技术储备的重点对象。</span><br /><br />【课程简介】<br /><span style="color:#333333;">本套以太坊课程,对以太坊基础理论知识和架构做了系统的梳理和深入的阐述,并对solidity和DApp的开发做了系统讲解,另外还对以太坊白皮书、黄皮书做了介绍;为有志于学习区块链技术、了解以太坊底层架构和DApp开发原理的工程师提供学习平台和帮助。</span><br /><br /><span style="color:#333333;">本教程内容主要分为五大部分:以太坊基础、以太坊原理和架构、以太坊编程及应用、合约工作流以及原理深入分析。</span><br /><br /><span style="color:#333333;">通过学习本套课程,可以使学习者对以太坊有充分的认识,对整个区块链技术有更深刻的理解,对区块链应用开发有更加整体的领悟。</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

区块链斜杠青年

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值