当前位置:首页区块链filecoin的气体相关计算逻辑

filecoin的气体相关计算逻辑

Filecoin正在开始太空竞赛。矿工们的力量开始显现。官方代码也有很多问题。几天后,版本从0.5.1升级到0.5.6。我很久没读过围棋的逻辑了。最近,我看到了与filecoin的气体计算相关的逻辑。让我们一起分享吧。本文分析了0.5.6的逻辑。Lootus代码最后一次提交信息如下:

提交606a58bc6bc035ec0b90c6b50488e29e90f4238f

作者:Aayus Rajasekaranlt;[email protected]

日期:2020年8月29日星期六00:56:24-0400

Lotus 0.5.6版

莲花代码的变更日志清楚地记录了燃气成本模的变化:从原来的限额/价格到限额/保费/费用上限。新的气体模参考EIP-1559:发送事务,交易成本不超过quot;feecap*limitquot;。矿业公司赚取的交易费为quot;primium*limitquot;。简单地说,feecap*limit是天然气成本的上限,而矿工可以赚取的费用是premium*limit。(feecap premium)*将燃烧限制的天然气成本。

feecap是如何设置的?限制是否尽可能大?

燃气成本计算的相关逻辑在node/impl/full/加油,加油Gasestimatemessagegas函数。接下来,我们将详细介绍base/limit/premium/feecap。

1基本费用

为每个区块设置一个基本费用。此块中的交易需要刻录相应的basefee。注意basefee。虽然名字看起来像是费用,但实际上是价格。燃烧的具体成本是basefee*limit。基本费用相关设置在build/paramsuU共享中定义vals.go公司中国人:

const BlockGasLimit=10_000_000_000_000

常量BlockGasTarget=BlockGasLimit/2

const BaseFeeMaxChangeDenom=8//12.5%

const InitialBaseFee=100e6

const MinimumBaseFee=100

const PackingEfficiencyNum=4

常数包装效率denom=5

在初始块中,basefee设置为initialbasefee(10^8)。从当前块生成下一个块时,需要根据当前块的总限制来确定。具体逻辑请查看公链/门店/basefee.goComputebasefee和ComputeNextBaseFee函数。

·最低基本费用-最低基本费用(100)

·区块天然气限额-区块内所有交易的天然气限额总和。计算基本费用时,给予10%的折扣(包装效率num/包装效率denom)

·区块气限的“超出”部分-每个区块的目标尺寸-区块目标。超出blockgastarget的部分视为超出部分。注意多余的部分,可以是正的也可以是负的。

·更新的基本费用-下一个区块的基本费用,在当前区块的基础费用基础上增加12.5%的超额(basefeemaxchangedenom)。相关计算逻辑如下:

变更:=大个子。骡子(基本费用,大纽因特(三角洲)

变更=大的。Div(改变,大纽因特( build.BlockGasTarget)

变更=大的。Div(改变,大纽因特( build.baseFeeMaxChangedNom)

简言之,如果当前区块的天然气限额消耗超过区块目标,基础费将增加12.5%。在这个逻辑下,你会发现基本费用会迅速增加,当有很多交易时会迅速减少。

最新的24小时基本费用可以在飞狐浏览器(flyingfox)上查看https://filfox.info/zh):

filecoin的气体相关计算逻辑

2气体极限

天然气限额是指交易愿意为交易的执行支付的“油量”交易消耗的天然气限额几乎是固定的。计算过程请参考gasestimategaslimit函数。当交易在当前高度执行时,交易需要“在当前高度执行”

res,err:=a。带气体的呼叫(ctx和msg、priorMsgs、ts)

调用gas只是为了得到执行过程中消耗的气体,而不是真正改变当前状态。

3气腹

天然气溢价是指交易愿意为交易的执行支付的“石油价格”石油价格乘以石油价格。石油的数量与贸易本身有关,几乎是固定不变的。显然,在高油价和高天然气成本的情况下,矿工的收入更高,更愿意先打包交易。从发帖人的角度看,价格越低越好。Lotus代码给出了一种计算天然气溢价的方法。请检查gasestimatorgaspremium函数,该函数分为几个步骤:

·查看以前区块(4=2*2)中的所有交易,并按天然气溢价从高到低排序

·计算所有交易的“平均”天然气溢价。平均法是指找出石油消耗量的一半所消耗的天然气溢价

在:=build.BlockGasTarget*int64(块)/2

上一页,第二页:=大。零(), 大。零()

价格:=范围价格{

前1,前2=价格,价格,上一个1

在-=价格限制

如果在>0{

继续

}

}

·加上千分之五的随机性

//平均值1,标准偏差0.005=>95%,在+-1%范围内

噪音:=1+随机标准浮动64()*0.005

溢价=types.BigMul类(保险费,类.NewInt(uint64(噪声*(1lt;lt;精度))+1)

溢价=types.BigDiv类(保险费,类.NewInt(1lt;lt;精度)

4煤气帽

除天然气溢价外,交易还需要支付基础费。也就是说,一般来说,交易费用是:(GAS FEE+基础费)*燃气限额。问题是,基础费是可变的,可能太大,交易发送方不愿意支付。GAS FEE封顶是设置缴费上限。有关计算逻辑,请参见gasestimatefeecap函数。

·很有可能下一个区块不会立即打包,因此当超过10个区块打包时,我们需要考虑基础费的变化

父母基本费用:=ts块()[0]。家长基础费

增加系数:=数学。动力(1.+1./浮动64(build.baseFeeMaxChangedNom),浮点64(maxqueueblks))

感觉未来:=types.BigMul类(家长费用,类.NewInt(uint64(增加系数*(1lt;lt;8)))

感觉未来=types.BigDiv类(感觉未来,类.NewInt(1lt;lt;8)

每个区块的基本费用按12.5%计算。

·以经常项目余额的1%作为支付上限:

最大接受:=types.BigDiv类( 实际平衡, 类.NewInt(最大值)

·以上两种情况的最低值作为煤气费上限

5气体限制设定罚款

众所周知,以太坊的气体限制可以设置得非常大。一般来说,多收的煤气费将全额退还。特别是,filecoin并不是这样的。由于基费和天然气溢价的计算都涉及天然气限额,因此天然气的实际限额非常重要。如果交易设置了不合理的气体限额,filecoin将采用惩罚机制。罚款的天然气成本也被烧掉了。基于计算的VerestigationBurn函数。

·气体超限的计算有一定的误差

常量(

气体过量使用量=11

气体过量使用nom=10

)

超过:=gasLimit-(gasOveruseNum*gasUsed)/gasOveruseDenom

低于1.1倍的耗气量被认为是合理的设置。

如果用气过多{

过量=汽油

}

超出的上限是用气量。

·根据超标比例,确定处罚油量

胃灼热:=大纽因特(汽油限制-汽油)

加斯托本=大个子。骡子(加斯托本,大纽因特(完)

加斯托本=大的。Div(加斯托本,大纽因特(煤气)

简言之,惩罚是过量/天然气使用率。如果超过使用的气体,这是所有罚款轻。

小结:

基于filecoin的gas模,引入basefee来调整事务的拥塞。如出现区块拥堵或区块交易不足,则基础费将按12.5%调整。每笔交易的计算公式为:(天然气溢价+基础费)*天然气限额。部分基础费将被烧毁,天然气溢价将用作矿工的手续费。特别要注意的是,不能随意设定气限,超过的气限会被烧毁。

温馨提示:

文章标题:filecoin的气体相关计算逻辑

文章链接:https://www.btchangqing.cn/98019.html

更新时间:2020年09月04日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

filecoin的气体相关计算逻辑1
区块链

加密货币集体下跌,比特币短期跌幅超过10%

2020-9-4 15:38:53

区块链行情

熟悉的公式:经销商洗盘造成大萧条,整个净爆仓近4亿美元

2020-9-4 15:50:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索