Filecoin官方丨針對Filecoin出現(xiàn)“雙花”問題的說明
據(jù)報道,2021年3月18日,由于Filecoin的遠程過程調用(RPC)代碼中的“嚴重錯誤”,出現(xiàn)了“雙花”問題。這些說法是不正確的,而且具有誤導性。
Lotus團隊對報告進行了徹底的調查,沒有發(fā)現(xiàn)Filecoin網(wǎng)絡或RPC API代碼有任何問題。區(qū)塊鏈本身沒有雙花,API代碼中也沒有bug。有問題的交易所已經在其記賬系統(tǒng)中恢復了錯誤的交易,并且正在審查其存款處理邏輯以糾正API的使用。


問題報告
今天早些時候,Lotus團隊收到了一份報告,稱一家交易所錯誤地使用Lotus api評估Filecoin網(wǎng)絡中的轉賬/存款。這種不正確的API使用是由用戶報告的,當他們的帳戶被錯誤地記入交易所記賬系統(tǒng)的存款兩次。這一點后來在交易所的記賬中被恢復了——Filecoin區(qū)塊鏈本身沒有任何雙花問題。
交易所的API濫用
所討論的交易所沒有正確地檢查鏈狀態(tài)以消除具有相同發(fā)送者和接收者的多個消息的重復問題。其中根本原因是錯誤地使用了Lotus API(而不是API本身的錯誤)——從而沒有按照他們預期的方式工作。這個記賬錯誤導致交易所展現(xiàn)錯誤的帳戶存款信息。到目前為止,我們只知道有一個交易受到這種API混淆的影響。

虛假報道會成為頭條新聞:關于網(wǎng)絡上“雙花”的不準確說法在社交媒體渠道上傳播,并成為文章頭條
這些聲明中的問題有許多已被調查,并被確定為虛假的。團隊發(fā)現(xiàn)Filecoin網(wǎng)絡或RPC API代碼沒有問題。在了解事實后,許多團體和媒體機構正在糾正他們的報道。

交易的影響
該交易所發(fā)現(xiàn)了這種錯誤使用API的行為,并立即采取行動,停止存款、取款和轉賬。他們已經恢復了有問題的不正確交易(因此在這個事件中沒有資金損失),并且正在糾正他們對lotus api的使用,以符合推薦的用途。
其他交易所
其他交易所已經收到了警告,并正在檢查它們的代碼,以確保它們沒有受到影響。許多審查已經完成——據(jù)我們所知,目前還沒有其他交易所以這種方式錯誤這個API。
lotus團隊
Lotus團隊正在積極地處理所有交易,以確保正確處理此行為,并改進API文檔,以確保其他所有人正確地檢查Filecoin區(qū)塊鏈的狀態(tài)。

社區(qū)和媒體團隊
一些組織正在與媒體合作,澄清所謂事件的細節(jié)和事實,并幫助消除錯誤信息。
社區(qū)團隊
社區(qū)成員正在創(chuàng)建材料,以幫助其他人準確和深思熟慮地報告問題,以避免意外傳播錯誤信息。


類似的消息
Lotus團隊了解,問題是由于兩條消息共享相同的發(fā)送方/接收方詳細信息和相同的nonce,但在同一個tipset中包含不同的gas參數(shù)而引起的。兩個類似的消息是更改與消息相關的gas費用的常見消息替換形式。Filecoin網(wǎng)絡安全機制正確地處理了這種情況,不會導致進行兩次消息執(zhí)行:兩條消息中的一條被執(zhí)行,另一條被忽略。
錯誤使用API
但是,根據(jù)檢查鏈狀態(tài)的方式,這可能會顯示消息被處理了兩次。具體來說,這個交易使用了一種錯誤的方式來處理鏈狀態(tài)——在tipset中的每個區(qū)塊上調用ChainGetBlockMessages,然后在每個消息上調用StateGetReceipt。
錯誤的API的返回期望
混淆在于,當對兩條類似的消息(一條被執(zhí)行,另一條被跳過)調用StateGetReceipt時,它將提供相同的結果:都對應于被執(zhí)行的消息。這顯然是違背直覺的,但卻是有意為之的行為。StateGetReceipt方法的主要用例是Lotus Miner和交易制定過程使用的事件處理程序。在替換消息的情況下,這些模塊不關心返回的收據(jù)是否與原始消息對應,或者與替換的消息對應——它們只想知道消息是否在鏈上成功執(zhí)行。我們在這里對文檔進行了說明:
https://github.com/filecoin-project/lotus/pull/5838。
使用正確的API
大多數(shù)交易所都正確地使用了ChainGetParentMessages和ChainGetParentReceipts來進行記賬,以確定在鏈上執(zhí)行了哪些消息并取得了成功。這些是Lotus本身在狀態(tài)計算期間使用的api,因此可以保證以這種方式正確地反映鏈狀態(tài)。對每個消息執(zhí)行StateReplay將為您提供完整的調用結果,以便您可以將返回的InvocResult中的MsgCid與查詢消息的CID進行比較。這是交易所正確檢查鏈狀態(tài)并保持其內部報告系統(tǒng)同步的推薦路徑。

