您当前的位置: > 数字货币 >

事件回首陈诉:操纵LotusAPI精确记账

发布时间:2024-03-09 10:00

2021年3月18日,有报道称,因为Filecoin的长途历程挪用(RPC)代码存在 "严峻缝隙",呈现了 "双花"。这些说法是不正确的且具有强烈误导性。

Lotus团队对该陈诉举行了彻底观察,没有发明任何Filecoin网络和RPC API代码的相关问题。链自己不存在双花问题,API代码也没有错误。有关生意业务所已经批改了该生意业务所内的错误生意业务记载,并正在审查他们记账系统中的充值处置惩罚逻辑,以纠正他们的API使用。

事件回首

事件陈诉— 本日早前,Lotus团队收到生意业务所错误使用Lotus API来计较Filecoin网络中的转账/存款。API错误使用环境是由于用户陈诉了生意业务所他们的帐户被生意业务所记账系统错误地反复记载。这一问题已在生意业务所记账系统恢复 — 链上自己并没有反复记载。

API曲解— 该问题的焦点是对于Lotus的链状态查抄API使用不妥,在处置惩罚多个雷同动静时,其处置惩罚方式与所期待的差别。曲解Lotus API的输出会导致记账系统将原始动静和替代动静都算作沟通的发送者和吸收者。到今朝为止,我们只知道有一个生意业务所受到这个问题的影响。

虚假报道成为文章标题— 有关网络“双花”的不正确陈述在社交媒体渠道中流传,并入进文章标题。这些报道中的内收留已被观察并确定为错误信息。团队并没有发明Filecoin网络或RPC API代码的问题。在相识了事实之后,很多团队和媒体机构正在改正其报道。

正在采纳的动作

受到影响的生意业务所— 有关生意业务所发明了这对于API的错误使用,并已当即采纳动作,遏制充值、提现和转账。他们已经恢复了有关的错误生意业务(所以在这次事件中没有资金损失),并正在改正他们对Lotus API的使用,以切合推荐的使用要领。

偶发案例— 其他生意业务所已经收到预警,正在审查他们的代码逻辑,以确保他们不受同样错误的影响。个中很多审查已经完成——据我们所知,今朝还没有其他生意业务所以这种方式错用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/blob/79a8ff04fd5362a367fd7d6469e5287a47baa571/chain/events/events_called.go#L586)中。在动静被替代的环境下,这些模块并不体贴返归的信息是对应原始动静,照旧对应替代的动静——它们只是想知道动静是否在链上乐成执行。我们已经在这里的文档中增加了澄清:https://github.com/filecoin-project/lotus/pull/5838。

使用正确的API— 大大都生意业务所都是正确使用了ChainGetParentMessages和ChainGetParentReceipts来记账,以计较出链上执行了什么动静、哪些动静乐成了。这些都是Lotus自己在链state计较历程中使用的API,以包管使用者能通过这种方式正确反应链状态。对每一条动静执行StateReplay,可以获得完整的挪用成果,这样使用者就可以将返归的InvocResult中的MsgCid与查询动静的CID举行比力。这是推荐生意业务所的正确查抄链状态并保持内部陈诉系统同步的步骤。