以太坊如何控制区块大小?| 白话区块链入门092
白话区块链
从入门到精通,看我就够了!
「白话区块链入门」系列让零基础的小伙伴也能轻松入门,刚入门的小伙伴建议从第一期开始阅读哦!扫描文末二维码,获取零基础文集。欢迎大家在文末点赞留言,说说你最想了解的区块链小知识,参与有奖哦!
作者 | Fiona
出品|白话区块链(ID:hellobtc)
作为市值第二的老大哥的以太坊,经常被拿来和比特币比来比去。不知你是否发现,和比特币扩容事件此起彼伏的热闹场面相比,以太坊似乎没有过类拟的区块扩容困扰,要知道,从2017年开始,以太坊的交易量同样也快速增长,那以太坊又是怎么搞定这个问题的呢?
我们先来看下以太坊的区块大小变化情况(如下图)。3月19日,以太坊区块的平均大小为21345Bytes,约为0.02M(平均出块时间为15秒)。
可见,以太坊的区块大小是不固定的,背后的原因,在于它采用了完全不同于比特币的做法。
比特币的转帐交易是统一格式,可以用固定的区块大小来规范。以太坊则不同,V神(以太坊的创立者)将区块链视为世界计算机,在比特币基础上,以太坊实现了智能合约,这就意味着,除了和比特币有同样的转帐功能外,以太坊网络中更多的是要为大量程序提供运算服务。
以太坊网络中不同的事务,所需要的计算成本各不相同。
举个例子,对于转帐交易类事务,以太坊网络的处理是相对一致的;而对于一个有Bug的程序来说,很可能会消耗掉大量的算力(比如程序中存在无限循环运算时)。以太坊明确了每笔操作会有个最低算力消耗值,而智能合约的算力消耗量则在最低消耗值基础上,还需要加上所有代码执行的算力。实际消耗的算力只有在实际使用时才能确认。
因此,以太坊中每笔交易的大小是不确定的。如果需要用一个相对固定的参数来规范以太坊区块的话,最直观的就是固定每个区块中所包含的算力了。这个值由矿工在每个区块中的GAS LIMIT(单位:gas)参数来表示,每个交易提交时也会有算力需求(单位:gas),乘以算力gas的价格(单位:gwei/gas),就是交易成本了(单位:gwei,gwei和eth类似于比特币里的 聪 和BTC的关系:每 eth = 10^9 gwei)。
目前gas price和每个区块里的GAS LIMIT数值如下图:
▲ 数据来源:https://ethstats.net
提交每笔交易时,需要附加愿意付出的最多成本,矿工在打包时,会遵循以下规则:
利益导向——哪笔交易给的酬劳高,会优先打包谁的,直到区块中包含的算力值(gas limit)消耗殆尽;
多退少不补——按实际算力收取费用,但如果给的不够,打包时则不会将计算结果提交到链上,费用也会全部收取(每笔事务的最低算力消耗值则为21000gas)。
在理解了上述规则后,扩容问题的解决就简单了:为了避免出现比特币类似的区块扩容争议,以太坊协议允许矿工每次可以将上个区块BGL值调整正负0.0976%(=1/1024 ),按平均每15秒出块的频率,以快速满足网络上快速变化的计算需求。
因此,在面对突来的交易激增时,以太坊表现出了较好的灵活性,比如在2017年6月29日,因1C0原因,交易量激增,以太坊在不到2个小时内,就实现了33%的增长。
下图是以太坊网络每个区块中包含算力的变化情况,从最早的3百多万,到目前基本稳定在8百万gas中。在能提供的算力增长时,如有足够的交易能消耗完,自然矿工会得到更多收益,但也需要矿工付出更多成本——更大的宽带、更快的计算能力,所以这个过程虽然不需要多方争议,但也受限于物理性能,客观上不会一蹴而就。
总结:
以太坊通过在每个区块中包括相对稳定的算力而非区块容量的大小,实现了对区块的规范化管理;并用逐块的算力调整机制(调整正负0.0976% ),以应对交易处理量变化情况。
以太坊已经完成了君士坦丁堡升级,你还会继续看好以太坊吗?为什么?欢迎在留言区留言。
「白话区块链入门系列」互动有奖
本文发布2小时内的第1位精选留言,奖励8.8元红包;
指出本文事例、逻辑等重大错误、并提出优秀建议的留言,一经采纳,奖励50元;
本系列接受读者投稿,录用稿件每篇奖励300元。后台回复「投稿」获取详细信息。
往期内容精选
★后台回复「入门」获取完整目录!★
——End——
『声明:本系列内容仅供区块链科普入门学习,不构成任何投资意见或建议。如有任何错漏,敬请留言指出。』
亲,据说99.9%有品位的人都点了「在看」👇