时间:2023-08-02|浏览:209
用戶喜愛的交易所
已有账号登陆后会弹出下载
然而,这样的说法是不准确的,并且具有误导性。Lotus团队对此进行了彻底的调查,并声明“没有发现任何Filecoin网络和RPCAPI代码相关问题”。链上并不存在双花问题,API代码也没有错误。交易所已经修正了他们内部的错误交易记录。
- 早前Lotus团队收到了一个关于交易所错误使用LotusAPI计算Filecoin转账/存款的报告。用户报告了交易所错误重复记录他们账户的问题。但实际上,记账系统已经将该问题修正,并没有链上的重复记录。
- 问题的核心原因在于对Lotus链状态检查API的误解。在处理多个消息时,对LotusAPI的输出有了错误的期望,导致记账系统将原始消息和替换消息都视为相同的发送者和接收者。目前只有一个交易所出现了这个问题。
- 该问题出现后,有关“双花”的不准确文章在自媒体中扩散。大部分报道已经作了勘误,RPCAPI代码并不存在问题。
当前的行动包括:
- 受影响的交易所立即采取措施纠正API的错误使用,暂停了用户的充值、交易和转账。问题已经得到快速修复,用户没有资金损失。交易所正采取措施改进对LotusAPI的使用方式。
- 其他交易所已受到此事件的警示,正在审查他们的代码逻辑,以确保不受此错误影响。目前还没有其他交易所出现类似问题。
- Lotus团队正在积极与交易所合作,确保正确解决这一事件,并改进API文档。
- 社区团队正在积极与媒体联系,消除这次错误事件的负面影响。
- 社区成员提供准确、周到报告问题的方法,避免意外传播错误信息。
技术细节如下:
- 源于Lotus团队披露的信息,问题的根源在于有两条消息具有相同的发送者/接收者详细信息、相同的nonce但不同的Gas参数,并包含在同一tipset中。这种情况很常见,但通常Filecoin会安全地处理,不会发生这个错误。通常只执行其中一条消息,另一条被忽略。
- 问题在于交易所使用了一种错误的处理链状态的方式,即在tipset的每个块上调用ChainGetBlockMessages,然后在这些消息上调用StateGetReceipt。
- 当StateGetReceipt被调用在两个相似的消息上(其中一个被执行,另一个被跳过),它将提供相同的结果,使人觉得两条消息都被执行了。尽管这种行为违背直觉,但却是有意为之。StateGetReceipt主要用于Lotus矿工和处理交易过程中使用的事件处理程序。在消息被替换的情况下,这些模块并不关心返回的信息是对应原始消息还是替换的消息,它们只关心消息是否在链上成功执行。相关文档已进行了澄清。
- 大多数交易所正确使用ChainGetParentMessages和ChainGetParentReceipts进行记账,以计算链上执行了哪些消息和哪些消息成功。这些都是Lotus在链状态计算中使用的API,以确保使用者能正确反映链的状态。
- 对每一条消息执行StateReplay,可以得到完整的调用结果,使用者可以将返回的InvocResult中的MsgCid与查询消息的CID进行比较。这是推荐交易所正确检查链状态并保持内部报告系统同步的步骤。
热点:N交易所