本文是区块链通识学习的最后一节,重点写了Gas费背后是如何计算的以及区块链原生的一些知识,文内如出现知识性和理解性错误还请各位斧正,原创文章,完全开源,若能得转载不胜荣幸,推特会分享Coding学习,生活日常和NBA等内容。
区块奖励&EIP1599
Gas Price是如何计算的
矿工到底拿到了多少钱
Base Fee是怎么被算法调节的
总结
EIP1599详谈(重点)
区块链概念性知识
区块链和去中心化
攻击
女巫攻击
51%攻击
共识
POW
POS
可扩展性
总结
下章预告
重点理解:一个链用的人越多,发送交易就越贵。
*在Eherscan上,可以看到:总费用=(区块基础费+最大优先费)Gas使用数量
区块基础费:Base Fee,最大优先费:Priority Fee.
在MetaMusk中,我们可以设置Gas limit
Gas Price是如何计算的?
根据EIP-1559协议,现在在以太坊上,每一笔交易都有Base fee,这是能够设置的最低的Gas fee,它是以Gwei计价的;这里的Max fee是指我们最多愿意为这个交易付多少Gas fee,从数值上看maxFee >= baseFee + maxPriorityFee;这里的Max Priority fee是指由用户设置的每笔交易最大可支付的优先交易费用(Priority fee:小费)
实际交易中
basefee不用设置(钱包也不管),是以太坊通过算法,自动根据上一个block的大小和上一个basefee计算出来的。
为了让用户更好地控制自己的钱,实际交易中,设置的是maxfee(愿意给出的最大gasprice)和maxpriorityfee(愿意给出的最大Tip)。
maxfee必须要大于basefee,然后,矿工会按如下的算法收取小费:
Tip = min(maxpriorityfee,maxfee-basefee)
如果maxfee > basefee + Tip,多余的费用就会被矿工退回交易发送者。
maxFee 和 maxPriorityFee 都支持用户自行设置,baseFee 则由算法根据上一个区块的利用率自动给出
Gas Price = basefee + maxpriorityfee。
目前在以太坊上,这个Base fee会被烧掉,Burnt可以看出有多少被烧掉了(Base fee×Gas的使用数量就是这里Burnt的数值)。
这意味着,每次你转账的时候,一部分以太币会永远不再流通,因为被烧掉了。
现在在以太坊上,你交易手续费的一部分被烧掉了,另一部分直接给了矿工,交易手续费不完全由矿工收取。(也就是说这个交易当中付给矿工的以太币数量=Transaction Fee-Burnt)用户先给钱,以太坊再烧,烧完再给矿工
也就是说基础费用在交易完后被烧掉了,矿工只拿到了小费
Txn Tyep:EIP-1559:代表这个交易的版本是EIP-1559
baseFee 会根据上一区块的空间利用率自动调整,如果利用率超过 50%,则提升当前区块的 baseFee;反之降低。
按照 baseFee 计算公式,相邻区块间的 baseFee 变化幅度在 ±12.5% 之间:
如果上一区块空间利用率为 100%,则当前区块 baseFee 将自动提升 12.5%
如果上一区块空间利用率为 0%,则当前区块 baseFee 将自动降低 12.5%
每个区块链都有不同的手续费燃烧和Gas机制设置,它们都不尽相同,但总结起来。在区块链中,区块能存储交易的空间有限,为了让你的交易被写在某个区块中,你需要支付手续费,这个手续费会根据需求变化,以太坊的Base Gas费用会上下调节,调节依据是有多少人正在发送交易(想把交易写入这个区块中),如果有很多人想将交易写入区块,那就有大量的Gas被烧掉。
总的来说,以太坊的这个交易费=(基础汽油单价+汽油单价小费)*汽油的升数。
Base Fee是基础汽油单价,Max Priorivy是汽油单价小费,这俩加起来算出来的才是Gas Price(每个汽油的的单位价格)
然后再乘以Usage by Txn(实际上在交易当中使用的Gas数量也就是汽油升数),这样算出来的才叫做交易费。
注意一点:上面说的maxfee、basefee、Tip,都是针对per gas的,计算真正费用的时候,还需要乘上gas数。
你在不同场合看到的这些符号,有些是带per gas的,有些不带,注意要区分一下,一般指的都是带per gas的。
EIP:即以太坊发展提案,是请求更改以太坊网络的常见方式(源于比特币的发展提案:bip),eip是一份涵盖技术规范和协议变更的设计文件,在其背后所运作的大多数eip专注于改进以太坊的技术细节。
在以太坊核心开发者社区之外,eip并没有被广泛讨论,但是EIP1559是例外,该提案对于ETH货币政策有重大影响,比如一些客户端钱包,EIP1559提出了以太坊费用模型的更改。
为什么需要这个提案呢?
以太坊之前的费用模型是基于简单的拍卖机制/最高价拍卖,用户如果想让矿工处理他们的交易,必须出价购买区块内的空间,这是通过他们愿意为交易所支付的Gas来实现的,进而按最高Gas对交易进行排序,激励矿工处理交易,并且最有利润的交易优先,这将非常低效,这导致用户会在交易中支付过多的Gas。这个模型问题还在于对于钱包Metamask,用户手动指定Gas费用在慢,中,快的交易速度中选择,没有经验的用户经常在Gas费用飙升之前提交了默认费用的交易,最终可能会等待交易确认很长一段时间,这对于用户体验是很不理想的。
上述的问题也是EIP-1559的用处所在,这个提案正用于解决以上问题,并旨在达成如下目标
使交易费用可预测性更高
减少交易确认的延迟
通过自动化竞标系统提升用户体验
在网络活动和ETH支持中提供正循环
提案改变的是什么?
EIP1559在基础费用中引入了一个新概念BaseFee,BaseFee就是交易进入区块的最小支付费用,BaseFee是按区块设置,并且按照链上的拥挤程度来调整费用的高低,EIP1559的第二个重要特性是它可以在每个区块通过改变最大Gas限制从而提升网络性能(例如使12.5million的Gas限制提升到25million),大体上让区块大小翻倍。
基于BaseFee和提升的区块性能,EIP1559在如下逻辑运作:当网络利用率超过50%,BaseFee就会增加,当网络利用率低于50%,BaseFee就会减少,这大体意味着依照网络利用情况旨在通过调成费用达成50容量的平衡。
EIP1559还引入了一种小额小费,它可以直接支付给矿工以激励他们优先处理交易,这与之前的机制是非常相似的(指eip-1559前),矿工可以被更高的gas所奖励,这一特点对于交易是非常重要的,对于快速确认交易是非常有优势的,比如套利交易,让我们举一个简单的例子:当网络占用过高时,比起之前的收费模型,eip-1559模型是如何发挥优势的?
之前链上最低的gas是50gwei,目前的网络状况如果保持不变,用户提交50gwei以进行交易从而能够上链。与此同时一个备受期待的代币被推出了,导致想要购买它的用户,争先恐后的提高他们的竞价,从而能够在下一区块交易,而最小的交易费用是100gwei,如果网络状况一直如此,多个后续的区块一直保持高占用的情况,那些已经支付50gwei的用户的交易想要被确认,将等待非常久的时间;在这一状况下,区块规模上限为12.5M gas,此时进入区块的方式是比其他用户提出更高的价格
让我们使用EIP1559来应对上述情况, 在第一个区块50 gwei 是BASEFEE,网络利用率只有50%, 大多数区块使用12.5M的gas,是最大gas限制的一半,新代币发布产生的网络高占用导致用户使用更高的矿工小费,鉴于对区块空间的高需求以及许多含有矿工小费的交易,矿工们就会生产一个25M gas的大区块,这能够让更多的交易被包含在区块里,与此同时BASEFEE会在接下来的区块攀升,而当前区块是被填满的,如果接下来的网络活动对区块空间的需求依然很高矿工们就会继续生产完整的区块(25Mgas的区块),并且在后来的区块增加BASEFEE,在某个节点的费用足够高后就会赶走一些用户,而网络利用率就会回到50%利用的水平并且在随后的区块降低费用,每个区块费用最多可以增加或减少12.5%,因此在五分钟内,gas价格达到10倍需要20个区块,达到100倍需要40个区块,这个例子论证了eip1559的实施使得在网络高峰期交易费用可以被熨平;
也就是说可以认为EIP1559模型是在用区块的波动性换取价格的波动性,由于价格的增量和减量受到约束,BASEFEE在不同区块可以被轻松计算,这允许钱包基于目前区块的信息自动化设置BASEFEE。同时为了避免矿工为了自身利益出现联合抬高BASEFEE的情况因此所有BASEFEE会被烧掉,所有的矿工小费归于矿工所有,一个更重要的新概念被称为费用上限,用户可以这么做,他们可以限制他们愿意为交易所支付的最大gas而不仅仅支付目前最大的BASEFEE。
使用了eip1559的钱包需要进行更改,钱包不需要再估算gas费用,它们可以根据先前区块信息自动化设置BASEFEE,这将简化钱包用户的界面。
对于eth的支持,BASEFEE的焚烧也发挥着重要作用,被焚烧的gas造成了一个有趣的反馈回路,过高的网络活动,即更多的eth被焚烧,即矿工持有的eth在市场上会越来越少,使得现存的eth会越来越有价值,焚烧的BASEFEE大体上奖励了网络中的用户,使得他们的eth更加稀有。
区块链是被多个节点运行(运行在一个网络上,这个网络是被多个独立节点运行的),传统应用是被一个中心化机构运营的(尽管可能有多个不同的服务器,但是所有的服务器都是被同个中心化集团所控制)。
每个人都可以加入和参与网络,这就是真正的去中心化。
区块链具有弹性,如果一个节点或者一个运行了多个节点的主体关闭了,并不会出什么事,因为还有很多别人运行的节点,只要有一个节点在运行,整个区块链就会运行下去。
每一个节点都保存着链上发生的所有交易记录,如果节点作恶,所有的哈希值就会出现问题,与别人不匹配,这让区块链有了不可篡改的属性,任何数据都不能被篡改。
实际上,我们可以把区块链当成一个去中心化数据库,而以太坊还有一个特性,就是可以通过去中心化的方式做一些运算。
在攻击中,用户会创建很多匿名帐户,来影响区块链,在比特币和以太坊中,这个攻击非常困难,因为用户在工作量证明中需要很多计算量,在权益证明中有很多质押物。
作为共识协议的一部分,最长的链会被选择为正确的链,同时要满足和网络的51%相一致,这意味着你有最长的链和51%的网络,那么就可以分叉区块链,让整个网络使用你的链。
总结:一个区块链越大,去中心化程度越高,越安全。
共识的定义是一个机制,通过这个机制,区块链可以在状态和数值上达成一致。
在比特币和以太坊1.0中,它们用的共识叫中本聪共识(Nakamoto Consensus)
中本聪公式包括了工作量证明和最长链法则
1.Sybil Resistance(抗女巫攻击机制)
抗女巫机制是指一种区块链的能力,来防止用户使用大量的假身份,在整个系统中来获取超出应有比例的权益和影响力。
2.Chain Selection(链的选择算法)
我们怎样确定哪个区块链是正确的链?
去中心化网络规定,哪条链最长,有最多的区块,就用哪条链,因为一个链落后的区块越多,就需要越多的计算量来赶上其他链。
确认区块(Block Confirmations)的数量是,在我们的交易写入区块后,新挖出的区块数量。如果看到确认区块是2,就表示在最长的链中,我们交易后面有两个区块。
工作量证明算法是一种抗女巫机制,因为它定义一种方法,来找到是谁挖出了区块,哪一个节点,才是做了运算,然后挖出区块的节点,别的所有节点都可以准确验证它。
不管一个用户有多少个账户,每个账户都需要经过这个需要大量计算量的过程,来找到工作量证明中"难题"的答案
工作量证明是共识协议的一部分。
交易手续费在工作量证明中是矿工得到的。
缺点:工作量证明消耗了很多电力
交易手续费在权益证明中是验证者得到的。
这也是一个抗女巫攻击机制,与解决"难题"的方式不同,权益证明需要放置一些抵押物以保证不作恶,也叫做质押(stake通常也翻译为质押)
这里的矿工被称作验证者,因为他们不再挖矿了,他们只验证其他节点,在权益证明中,节点会被直接选举出来,然后提出一个区块,别的节点会验证这个被提出的区块是否有效(去检查一个提议或交易是否有效是非常简单的),故获得新的区块所需的计算量大大降低(绿色环保),不同于工作量证明中所有节点都去竞争记账权,权益证明中只需要一个节点来做,其他节点只需要验证。
区块链是一个确定性系统,无法产生随机数,那么我们怎么在系统中选取随机验证者呢?
每个区块链选择节点的方式都不同,但是以太坊2.0使用了RANDAO
RANDO是一个去中心化自治组织,他们共同选择随机数,共同选择下一个生成随机数的节点。
缺点:权益证明的网络,被认为有一些不够去中心化,因为有质押的花费,这是参与权益证明的花费
因为区块的存储空间有限,节点存储的交易也有限,所以当很多人想要使用区块链的时候,gas price就会暴涨,这样的话扩展性就不足,因为我们想要让更多的人进入区块链,这就会导致使用区块链的花费越来越高,因为人们想要将交易写入区块,这就意味着,使用系统的用户有一个上限,当Gas Price持续上涨的时候,经济上就会出现限制。
ETH2.0将工作量证明变成权益证明,除了因为环保原因以外,还使用了一个新的方法论,名字叫分片(Sharding),分片就是可扩展性问题的一种解决方案。
区块链的分片是指多个区块链的区块链,有一些主链会协调一些不同的链,将他们连接在一起,这意味着,人们可以在多个链上发动交易,有效地提高了区块数量存在的空间,分片可以极大的增加在layer1上发送的交易数量。
Layer1:区块链实现的基础层。
BTC,ETH都是Layer1,这些是区块链基础层的解决方案。
Layer2:加载Layer1和区块链上的任何应用。
比如Chainlink就是layer2;Arbitrum和Optimism作为Layer2,也是要解决扩展性问题,它们两个也是汇总(Rollups),把自己的交易集中起来,然后写入ETH这样的layer1中,这种Rollups有点像一个分片的链,它继承了以太坊这样的基础链也就是layer1的安全性,它们解决了一些扩展性问题,解决方式是作为一条链,人们在它上面发送交易就相当于在以太坊上发送交易。
Layer2和侧链不同,侧链的安全性来自于自身协议,而Layer2的安全性来自于基础层,例如Arbitrum和Optimism跟以太坊一样是安全的。
侧链(sidechains):遵守侧链协议的所有区块链。侧链协议是一种实现双向锚定(Two-way Peg)的协议,通过侧链协议实现资产在主链 和其它链之间互相转换,或是以独立的、隔离系统的形式,降低核心区块链上发生交易 的次数。
BTC是工作量证明,使用的是中本聪共识,ETH是权益证明和分片。
工作量证明和权益证明杜绝了女巫攻击。
区块链越大,51%攻击越困难。
共识是区块链确定当前状态的机制
分片和Rollup是Layer1的可扩展性问题的解决方案。
Layer1是基础层的实现,像是比特币和以太坊。
可扩展性问题,是因为区块空间不足导致写入的交易有限,这会导致很高的Gas Price
本章节到这里就已经结束了,下一章会分享Solidity的基础学习。