LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > Filecoin的Gas破局之路

Filecoin的Gas破局之路

2021-02-20 IPFS币圈妞妞 来源:区块链网络

写在前面

正如大家所知,Filecoin Network是由消息来驱动状态改变的区块链网络。Filecoin现在的gas费机制是基于EIP-1559设计的,主要包括BurnFee与MinerTip。其中占主要部分的是BurnFee这部分是必须销毁的,主要用来调节链上消息的拥堵状况。目前看到Filecoin网络24h内gas消耗主要为ProveCommitSector消息(75.26%)、PreCommitSector消息(23.76%)、SubmitWindowedPoSt消息(0.72%)和PublishStorageDeals消息(0.07%)(如图1)其中ProveCommitSector消息和PreCommitSector消息数量代表了全网算力增长速度,SubmitWindowedPoSt消息全网算力保持所必要的操作,PublishStorageDeals消息是Filecoin网络中发布数据订单的过程。

图1. Gas费消耗主要占比(数据来源于filscout.com)

01

Gas费现状

Juan Benet在“EIP-1559 in Filecoin”(https://www.youtube.com/watch?v=ABhyJXxTnJY)中介绍全网gasUsed主要消耗也集中在以上四种消息(如图2)。BurnFee主要为baseFee * gasUsed,BurnFee部分后续主要会被发送到f099账户中,截止目前f099账户已经累积了约15,543,496FIL(如图3)。

在存储结构与协议不变的条件下,对Gas费起重要作用的因素就是baseFee,从目前趋势看来,在大多数的时间内baseFee都是维持在3~5NanoFIL之间(如图4),导致每TiB算力成本在3-6FIL之间(如图4)。

图2. GasUsed消耗主要分布

图3. f099账户变化(数据来源于filscout.com)

图4. 全网baseFee变化与单TiB算力成本(数据来源于filscout.com)

02

破局之路

为了保证全网算力的持续稳定的增长,官方及社区提出了多种解决方案,有的方案在不断的被讨论中,有的已经实现在不断的测试中,下面我们就来盘点一下Filecoin的gas的破局之路;就目前的发展状况而言,官方并不会弃用目前采用的EIP-1559机制,而是基于这种机制,针对不同的消息类、消息的发送和验证方式以及数据存储结构的优化来达到gas费的优化。此外,Juan Benet也曾表示会尝试引入排队论等理论来优化消息筛选的机制。

1. 针对SubmitWindowedPoSt消息的Gas消耗,社区和官方一直在进行一系列的讨论和优化:

FIP-0009 --- 过渡版方案

SubmitWindowedPoSt消息是矿工或者可以说全网算力稳定的必须要提交的消息,所以这种消息Gas费消耗问题的解决已经迫在眉睫了;又因为miner需要在30min内提交,在baseFee很高的情况下,矿工为了保持算力不得不提高feeCap保证算力不会丢失。这样的操作在加剧网络拥堵的同时还提高了矿工的运营成本。

所以社区提出一个过渡版的方案FIP-0009(https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0009.md ):“对于成功提交的SubmitWindowedPoSt消息,系统不会收取baseFee*gasUsed部分的Gas费”,目前这个方案已经在主网v1.4.1版本中成功运行,虽然减少了大部分的Gas消耗,但是仍然不能减少链上的带宽的消耗,所以称为“过渡版方案”。

FIP-0010 --- Off-Chain WindowPost VerificationSubmitWindowedPoSt消息对于算力的保持至关重要,但是当baseFee很高的时候,对于提交的proof进行验证的成本也会很高,在极端的情况下,小矿工很多的partition都是空的,这时候维持算力的成本已经远远大于预期的区块收益。我们需要确保在FeeCap很高的情况下SubmitWindowedPoSt的成本是较低的。在FIP-0009 SubmitWindowedPoSt消息已经可以做到免费发送,但是消息本身并不会减少网络的加载的数据量。在官方即将发布的V1.5.0版本中FIP-0010(https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0010.md) ——“Off-Chain WindowPost Verification”机制实现了链上接受未经验证的SubmitWindowedPoSt消息,任意节点可以通过“DisputeWindowedPoSt”方法来挑战链上的证明消息;若发现已经证明的扇区提交的证明失败,扇区将会被标记为faulty,并且移除对应扇区的算力直到提交正确的扇区证明;本次更新几乎全部删除了验证SubmitWindowedPoSt中proof的过程,节约了约13%的网络带宽资源。主要内容:1) 除了恢复的faulty扇区,新提交的SubmitWindowedPoSt消息都会默认接受扇区的proof,并且在状态树中记录一个证明周期(24h)2) 被接受的SubmitWindowedPoSt可以在WPoStProofDisputeWindow高度(1800 Epoch)之前被任意节点挑战,当挑战成功时,对应的miner将会受到惩罚,每个扇区对应的惩罚IPF:5.51BR (IPF = Invalid Proof Fee, BR = Expected Block Reward per sector in 24h).3) 加上一个FlatFee (20FIL),所有没有被正确证明的扇区都会被标记为faulty,挑战者将会收到一个固定的奖励DipsuteReward(4FIL)。4) SubmitWindowedPoSt,TerminateSectors,CompactPartitions,DisputeWindowedPoSt等操作也做了相应的适配;Fast track for Window PoSt为SubmitWindowedPoSt消息保留一条“快车道”,保证消息在链利用率很高的情况下也可以被打包,但是这种方案并不能减少带宽的使用,仍然需要在链上对证明消息进行验证。这两种提案不是互斥的,“Off-Chain Window PoSt Verification”方案实现以后,“快车道”方案对于整个网络来说依然是有利的。Batch verification of Window PoSt proofs.1)SubmitWindowedPoSt的proofs可以像ProveCommitSector生成的证明proof一样进行批量的验证,具体步骤如下:2) 将proof和所有验证所必要的信息全都加载到内存当中;3) 将提交的state异步的提交到runtime中,进行并行处理;4) 处理完block中所有消息后,所有成功异步验证的证明结果都被发送回miner_actor以进行进一步处理;存在问题:1) 对于中型矿工来说,链上大约有一半的时间花在加载证明验证信息(第1步)上,这一步仍然需要依次完成;2) 这个方案的加速效果是一个常量(基于所有矿工的预期并行度),只有网络中存储不断的增加,这个加速常量才会增加。2. 针对ProveCommitSector和PreCommitSector消息中gas优化社区也提出了一系列的优化思路,相关内容可以查看以下相关的issue:(1) 批量提交pre消息https://github.com/filecoin-project/FIPs/issues/25

(2)批量提交prove消息https://github.com/filecoin-project/FIPs/issues/49https://github.com/filecoin-project/FIPs/issues/50

03路在何方我们可以看出,Gas费依然是制约Filecoin发展重要因素,整个社区也在不断的积极探索Gas费的破局之路。我们的基本认知应该是并不存在一种全新的机制可以完美的解决现有的问题,在EIP-1559机制的基础上,不断的结合Filecoin本身的特点取探索更多的解决方案。

Filecoin的Gas破局之路任重道远,但我们觉得Filecoin未来可期。

—-

编译者/作者:IPFS币圈妞妞

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...