Filecoin“双花事件”回顾:交易所记账不准确

本文来自于FilecoinNetwork。

2021年3月18日,有报道称,由于Filecoin的远程过程调用代码存在"严重漏洞",出现了"双花"。这些说法是不正确的且具有强烈误导性。

Lotus团队对该报告进行了彻底调查,没有发现任何Filecoin网络和RPCAPI代码的相关问题。链本身不存在双花问题,API代码也没有错误。有关交易所已经修正了该交易所内的错误交易记录,并正在审查他们记账系统中的充值处理逻辑,以改正他们的API使用。

事件回顾

事件报告—今日早前,Lotus团队收到交易所错误使用LotusAPI来计算Filecoin网络中的转账/存款。API错误使用情况是因为用户报告了交易所他们的帐户被交易所记账系统错误地重复记录。这一问题已在交易所记账系统恢复—链上本身并没有重复记录。

Filecoin网络近24小时产出33.9万枚FIL:据IPFS100报道,Filfox浏览器数据显示,Filecoin网络当前区块高度为1098361,全网有效算力为10.544EiB,总质押量约为1.0916亿枚FIL,活跃矿工数为3177个,每区块奖励为24.0348FIL,近24小时产出338958枚FIL,24小时平均挖矿收益为0.0309FIL/TiB,目前FIL流通量为168793887。当前销毁27912803枚FIL。当前FIL最新价格为88.49美元。

目前有效算力排名前三的分别为:f0127595(MetaverseInfrast)以132.70PiB暂居第一,f0688165(MetaverseInfrastructure)以132.39PiB位居第二,f0142720(RRM-雅典娜)以119.74PiB位居第三。

注:根据Filecoin官方释放规则,Filecoin将于2021年10月15号迎来第二次减产。[2021/9/10 23:15:33]

?API误解?—该问题的核心是对于Lotus的链状态检查API使用不当,在处理多个类似消息时,其处理方式与所期待的不同。误解LotusAPI的输出会导致记账系统将原始消息和替换消息都算作相同的发送者和接收者。到目前为止,我们只知道有一个交易所受到这个问题的影响。

Filecoin网络目前总质押量约为4726万枚FIL:据IPFS100.com报道,Filfox浏览器数据显示,Filecoin网络当前区块高度为574163,全网有效算力为3.160EiB,总质押量约为4726万枚FIL,活跃矿工数为1550个,每区块奖励为24.0884FIL,近24小时产出量为339671FIL,24小时平均挖矿收益为0.1033FIL/TiB,目前FIL流通量为98586146FIL。

目前有效算力排名前三的分别为:F01248(智合云zh)以75.74暂居第一,F02770(时空云&灵动)以72.63PiB位居第二,F0127595(时空云)以60.87PiB位居第三。[2021/3/12 18:39:11]

虚假报道成为文章标题—有关网络“双花”的不正确陈述在社交媒体渠道中传播,并进入文章标题。这些报道中的内容已被调查并确定为错误信息。团队并没有发现Filecoin网络或RPCAPI代码的问题。在了解了事实之后,许多团队和媒体机构正在纠正其报道。

FenbushiCapital计划3月推出基金以推动IPFS和Filecoin生态系统发展:金色财经报道,区块链风投公司FenbushiCapital宣布将与ProtocolLabs合作成立资金规模为1500-2000万美元的基金。该基金主要致力于推动IPFS和Filecoin生态系统的增长。FenbushiCapital承诺将所有筹集的资金配置到FIL中,目前FenbushiCapital和相关合伙人已注资100万美元。FenbushiCapital计划于2021年3月推出推出该基金。(Filecoin官方)[2021/1/12 15:57:01]

正在采取的行动

凌发明:布局Filecoin短期逐利容易被淘汰,持续发展才是关键:2020年6月22日,由金色财经主办,节点咨询、IPFS100.com承办,IPFS星际特工等联合主办的“星际漫游指南——IPFS技术与应用研讨论坛”在深圳拉开帷幕。币码翁研究院院长凌发明在主题为《Filecoin经济模型与商业启示》的圆桌论坛中指出,Filecoin这个事情是长期布局的,不是短期逐利,如果短期逐利,过于冒进,不考虑价值容易被淘汰。做数据存储目标是更加安全、持久、稳定、自由和开放。目前把币价和收益过于夸大的话,其实对整个生态是破坏性的,甚至阻碍它未来的发展。星际特工技术重在技术的研究、硬件优化、软件优化、算法优化包括一些商用落地,助力实现分布式存储生态落地,为合作伙伴创造更多价值。[2020/6/22]

受到影响的交易所—有关交易所发现了这对于API的错误使用,并已立即采取行动,停止充值、提现和转账。他们已经恢复了有关的错误交易,并正在纠正他们对LotusAPI的使用,以符合推荐的使用方法。?

偶发案例—其他交易所已经收到预警,正在审查他们的代码逻辑,以确保他们不受同样错误的影响。其中许多审查已经完成——据我们所知,目前还没有其他交易所以这种方式错用API。

Lotus团队—Lotus团队正在积极与所有交易所合作,以确保正确处理这一行为,并改进API文档(https://github.com/filecoin-project/lotus/pull/5838),确保所有其他交易所正确检查Filecoin的链状态。

社区和媒体—一些团队正在共同努力,与媒体联系,澄清所称事件的细节和事实,并帮助消除错误信息。

社区团队—社区成员提供可以帮助其他社区成员准确、周到地报告问题的方法,避免意外传播错误信息。

技术细节

相同信息—?就lotus团队所知问题源自于有两条消息有相同的发送者/收到者详细信息、相同的nonce但拥有不同的Gas参数——被包含在同一tipset中。像这样两个类似的消息是非常常见的,比如以改变与消息的Gas费来替代消息就会形成这样两条类似的消息。这样的情况会由Filecoin网络安全、正确地处理,不会导致两次转账:两条消息中的一条会被执行,另一条被忽略。

错误使用API—然而,根据人们对链的检查方式,这会呈现出消息被处理了两次的样子。具体来说,有关交易所使用了一种错误的处理链状态的方式——在tipset的每个块上调用ChainGetBlockMessages,然后在这些消息上调用StateGetReceipt。

错误的API期望—容易引发错误的地方是,当StateGetReceipt被调用在两个相似的消息上,它将提供相同的结果给人感觉两种消息都被执行了。这诚然是一种违背直觉思维的行为,但却是有意为之。StateGetReceipt的主要应用场景是在Lotus矿工和处理交易过程中使用的事件处理程序中。在消息被替换的情况下,这些模块并不关心返回的信息是对应原始消息,还是对应替换的消息——它们只是想知道消息是否在链上成功执行。我们已经在这里的文档中增加了澄清:https://github.com/filecoin-project/lotus/pull/5838。

使用正确的API—大多数交易所都是正确使用了ChainGetParentMessages和ChainGetParentReceipts来记账,以计算出链上执行了什么消息、哪些消息成功了。这些都是Lotus本身在链state计算过程中使用的API,以保证使用者能通过这种方式正确反映链状态。对每一条消息执行StateReplay,可以得到完整的调用结果,这样使用者就可以将返回的InvocResult中的MsgCid与查询消息的CID进行比较。这是推荐交易所的正确检查链状态并保持内部报告系统同步的步骤。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

[0:15ms0-1:426ms