對(duì)于此次Filecoin交易所“雙花”事件的勘誤
共
1966字,需瀏覽
4分鐘
·
2021-03-20 17:28

2021年3月18日,根據(jù)相關(guān)報(bào)道稱(chēng),由于Filecoin的遠(yuǎn)程過(guò)程調(diào)用(RPC)代碼存在“嚴(yán)重漏洞”,出現(xiàn)了“雙花”。所謂“雙花”,指的是雙重支付,一筆資金被花費(fèi)了兩次。這就好比有些人使用投幣電話(huà),在硬幣上狡猾地穿了一根細(xì)繩,盡管投擲了硬幣,但實(shí)際的交易并沒(méi)有完成,他可以在打完電話(huà)后利用細(xì)繩再將硬幣取出,如法炮制,便能用這枚硬幣打無(wú)數(shù)次電話(huà)。
但此次這樣的說(shuō)法是不正確的,且具有強(qiáng)烈的誤導(dǎo)性。對(duì)于此次事件Lotus團(tuán)隊(duì)對(duì)該報(bào)告進(jìn)行了徹底的調(diào)查,并在事后聲稱(chēng)“沒(méi)有發(fā)現(xiàn)任何Filecoin網(wǎng)絡(luò)和RPC API代碼的相關(guān)問(wèn)題”。鏈上并不存在雙花問(wèn)題,API代碼也沒(méi)有錯(cuò)誤。有關(guān)交易所已經(jīng)修正了該交易所內(nèi)的錯(cuò)誤交易記錄。
事件報(bào)告:早前Lotus團(tuán)隊(duì)收到交易所錯(cuò)誤使用Lotus API計(jì)算Filecoin中的轉(zhuǎn)賬/存款。因?yàn)橛脩?hù)報(bào)告了交易所他們的賬戶(hù)被交易所記賬系統(tǒng)錯(cuò)誤地重復(fù)記錄。該問(wèn)題被記賬系統(tǒng)恢復(fù),鏈上本身并沒(méi)有重復(fù)記錄。API誤解:出現(xiàn)此次問(wèn)題的核心原因在于對(duì)Lotus鏈狀態(tài)檢查 API使用不當(dāng),在多消息處理時(shí)與期待處理方式不同。誤解Lotus API的輸出會(huì)導(dǎo)致記賬系統(tǒng)將原始消息和替換消息都算作相同的發(fā)送者和接收者。目前為止只有一個(gè)交易所出現(xiàn)了該問(wèn)題。自媒體虛假報(bào)道:出現(xiàn)了該問(wèn)題之后,有關(guān)“雙花”的不正確的文章在自媒體中傳播。大部分的報(bào)道已經(jīng)被勘誤,RPC API代碼并不存在代碼問(wèn)題。受影響交易所:發(fā)現(xiàn)錯(cuò)誤的交易所立即采取措施對(duì)于API的錯(cuò)誤使用,暫停了用戶(hù)的充值、交易和轉(zhuǎn)賬。該錯(cuò)誤被快速恢復(fù),用戶(hù)并沒(méi)有資金損失。該交易所正在采取措施糾正對(duì)Lotus API的使用。預(yù)警:其他交易所受到此次事件的預(yù)警,并著手審查他們的代碼邏輯,以確保不受此次錯(cuò)誤的影響,目前還沒(méi)有另外的交易所出現(xiàn)同樣的錯(cuò)誤。Lotus團(tuán)隊(duì):目前Lotus團(tuán)隊(duì)正在積極的與交易所溝通合作,以確保這一事件正確解決,并改進(jìn)API文檔。社區(qū)和媒體:社區(qū)某些團(tuán)隊(duì)正在積極與媒體聯(lián)系以消除這次錯(cuò)誤事件的負(fù)面影響。社區(qū)團(tuán)隊(duì):社區(qū)成員提供可以幫助其他社區(qū)成員準(zhǔn)確、周到地報(bào)告問(wèn)題的方法,避免意外傳播錯(cuò)誤信息。相同信息:根據(jù)Lotus團(tuán)隊(duì)披露的消息,此次問(wèn)題的根源在于有兩條消息有相同的發(fā)送者/收到者詳細(xì)信息、相同的nonce但擁有不同的Gas參數(shù)——被包含在同一tipset中。這樣類(lèi)似的信息非常常見(jiàn),但這樣的情況通常Filecoin都會(huì)安全且正常的處理,不會(huì)出現(xiàn)這次錯(cuò)誤情況。一般其中一條信息被執(zhí)行,另一條被忽略。錯(cuò)誤使用API:但這次根據(jù)人們對(duì)鏈的檢查方式,呈現(xiàn)出了消息被處理兩次的樣子。具體來(lái)說(shuō),有關(guān)交易所使用了一種錯(cuò)誤的處理鏈狀態(tài)的方式——在tipset的每個(gè)塊上調(diào)用ChainGetBlockMessages,然后在這些消息上調(diào)用StateGetReceipt。錯(cuò)誤的API期望:當(dāng)StateGetReceipt被調(diào)用在兩個(gè)相似的消息上(其中一個(gè)被執(zhí)行,另一個(gè)被跳過(guò)),它將提供相同的結(jié)果給人感覺(jué)兩種消息都被執(zhí)行了。這誠(chéng)然是一種違背直覺(jué)思維的行為,但卻是有意為之。StateGetReceipt的主要應(yīng)用場(chǎng)景是在Lotus礦工和處理交易過(guò)程中使用的事件處理程序(https://github.com/filecoin-project/lotus/blob/79a8ff04fd5362a367fd7d6469e5287a47baa571/chain/events/events_called.go#L586)中。在消息被替換的情況下,這些模塊并不關(guān)心返回的信息是對(duì)應(yīng)原始消息,還是對(duì)應(yīng)替換的消息——它們只是想知道消息是否在鏈上成功執(zhí)行。我們已經(jīng)在這里的文檔中增加了澄清:https://github.com/filecoin-project/lotus/pull/5838。API的正確使用方式:大多數(shù)交易所都是正確使用了ChainGetParentMessages和ChainGetParentReceipts來(lái)記賬,以計(jì)算出鏈上執(zhí)行了什么消息、哪些消息成功。這些都是Lotus本身在鏈state計(jì)算過(guò)程中使用的API,以保證使用者能通過(guò)這種方式正確反映鏈狀態(tài)。對(duì)每一條消息執(zhí)行StateReplay,可以得到完整的調(diào)用結(jié)果,這樣使用者就可以將返回的InvocResult中的MsgCid與查詢(xún)消息的CID進(jìn)行比較。這是推薦交易所的正確檢查鏈狀態(tài)并保持內(nèi)部報(bào)告系統(tǒng)同步的步驟。
瀏覽
105
青青草原在线视频网站
|
国产剧情一区二区
|
九九九网站
|
操笔逼视频
|
国产精品色哟
|