区块天眼:Filecoin网络「双花」的不正确陈述

挡天眼APP新闻:

2021 年 3 月 18 日,据报道,由于 Filecoin 的远程过程调用(RPC)代码中的“严重漏洞”而发生了“双花”。这些说法是不正确的并且具有很强的误导性。

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

活动回顾

事件报告 – 今天早些时候,Lotus 团队收到一个交易平台错误,使用 Lotus API 计算 Filecoin 网络中的转账/存款。当用户报告 TWS 其账户被 TWS 计费系统错误地复制时769错误代码没有本地连接,会发生 API 错误使用。该问题已在交易平台记账系统中恢复——链本身没有重复记录。

API 误解 – 问题的核心是滥用 Lotus 的链状态检查 API,在处理多个类似消息时未按预期处理。误解 Lotus API 的输出会导致计费系统将原始消息和替换消息都计为相同的发送者和接收者。到目前为止,我们只知道一个受此问题影响的交易平台。

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

正在采取的行动

受影响的交易平台 – 相关交易平台发现此 API 被滥用,并立即采取行动停止存款、取款和转账。他们已经恢复了有问题的错误交易(因此在此事件中没有资金损失),并且正在纠正他们对 Lotus API 的使用以符合推荐的用法。

偶发情况 – 其他交易平台已收到警报并正在审查其代码逻辑,以确保它们不受相同错误的影响。其中许多审查已经完成 – 据我们所知,没有其他交易所以这种方式滥用 API。

Team Lotus – Lotus 团队正在积极与所有交易所合作,以确保正确处理此行为并改进 API 文档()以确保所有其他交易所正确检查 Filecoin 的链上状态。

社区和 – 一些团队正在共同努力取得联系,澄清有关所谓事件的细节和事实,并帮助消除错误信息。

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

技术细节

相同的信息——据 Lotus 团队所知,问题源于两条消息具有相同的发送者/接收者详细信息、相同的 nonce 但具有不同的 Gas 参数——包含在同一个提示集中。有两条类似的消息是很常见的。比如用找零的gas费代替消息,消息就会形成这样两条相似的消息。Filecoin 网络可以安全、正确地处理这种情况,并且不会导致两次传输:两条消息之一被执行769错误代码没有本地连接,另一个被忽略。

API 使用不正确 – 但是,根据人们检查链的方式,这可能会使消息看起来被处理两次。具体来说,有问题的交易平台使用了不正确的处理链状态的方式——在提示集的每个块上调用 ChainGetBlockMessages,然后在这些消息上调用 StateGetReceipt。

错误的 API 期望 – 一个容易出错的地方,StateGetReceipt 在两条相似的消息上被调用(一条被执行,另一条被跳过),它会给出相同的结果,给人的印象是两条消息都在执行。这当然是一种违反直觉的行为,但它是故意的。StateGetReceipt 的主要应用场景是在事务处理过程中使用的 Lotus 矿工和事件处理程序(#L586))。在消息替换的情况下,这些模块并不关心返回的信息是对应于原始消息,还是对应于替换的消息——它们只是想知道消息是否在链上成功执行。我们在此处的文档中添加了说明:.

使用正确的 API——ChainGetParentMessages 和 ChainGetParentReceipts 被大多数交易所正确用于记账,以确定哪些消息在链上执行,哪些消息成功。这些都是 Lotus 自己在链状态计算过程中使用的 API,以确保用户可以通过这种方式正确反映链状态。对每条消息执行StateReplay,得到完整的调用结果,以便用户将返回的InvocResult中的MsgCid与查询消息的CID进行比较。这是建议交易平台正确检查链状态并保持内部报告系统同步的步骤。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论