http://www.7klian.com

Filecoin“双花”事件回首陈诉:操作Lotus API精确记账

Filecoin“双花”事件回顾陈述:操纵Lotus API准确记账

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举办较量。这是推荐生意业务所的正确查抄链状态并保持内部陈诉系统同步的步调。

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