致命缺陷的解決方法

MasterChef 存在某些缺陷,可以在使用過程中修復,但前提是使用者意識到這些缺陷以及他們可以做什麼。 這是解決方法,根據 葛列布·齊科夫 和弗拉德·科羅夫尼科夫 哈希表.

去中心化交易所 就在兩年前,(DEX)還相當罕見,但今天,它們似乎無所不在。 許多項目都有自己的個人 DEX。 發生這種情況是因為,當區塊鏈專案決定推出 DEX 時,他們並不是完全從頭開始。 相反,DEX 程式碼的基礎通常是兩個主要 DEX 之一的分叉 — 壽司交換 or 薄煎餅交換.

主廚智能合約

由於名為 MasterChef 的特殊智能合約,這兩家交易所幾乎徹底改變了 DEX 領域。 MasterChef 出現在這兩者中,因此它也出現在作為這兩者之一的分支而製作的任何 DEX 中。 每個新的 DEX 都可以共享相同的功能。 但這也意味著它也有《MasterChef》的缺點和漏洞。 

那我們就來看看使用者和開發者在與MasterChef打交道時可能會遇到哪些問題。 他們該注意什麼? 應該如何接近他們?

DEX 是如何運作的?

首先要注意的是,MasterChef 合約是用 Solidity 編寫的智能合約,它控制農場可以做什麼以及如何做。 在大多數專案中,都有多個智能合約分擔責任和工作。 但當涉及到基於 MasterChef 的協議時,正是這個單一合約負責處理與農業有關的所有事情。

去中心化交易所允許您交換加密貨幣,而無需將錢存入交易所 錢包。 相反,您可以從自己的錢包中將資金存入智能合約。 如果合約沒有後門或漏洞,您是唯一控制它並且可以存取您自己的資金的人。

另一個區別在於 CEX 使用訂單簿進行買賣。 這意味著他們將買家與賣家進行匹配,而 DEX 使用 AMM(自動化市場) 製造者)交易協議,根據投資的流動性來計算資產的價格。

流動性來自流動性池,使用者可以在流動性池中存入特定貨幣對的資金,並為協議提供資金。 然後,當有人嘗試使用該貨幣對購買資產時,他們的訂單將立即使用池中的資金完成。 同時,將資金存入流動性池的人會獲得該特定池的 LP 代幣。 這為他們提供了分享獎勵的權利。

而且,如果他們希望拿回資金,他們所需要做的就是歸還他們收到的 LP 代幣。

如您所知,有多種方法可以生成 產量 來自加密資產。 農場為提供流動性提供額外獎勵。 用戶為 DEX 增加流動性,獲得 LP 代幣,並將其投入農場。

MasterChef:漏洞和缺陷

我們已經介紹了 DEX 的工作原理以及流動性池的工作原理。 因此,讓我們仔細看看 MasterChef 漏洞的來源、它們如何影響流程,以及您需要採取什麼方法來確保事情順利進行。

MasterChef 是一個透過在 DEX 中提供流動性來實現農業產量的單一智慧合約。 不幸的是,它有一些缺陷,可以在使用過程中修復,但前提是使用者意識到這些缺陷以及他們可以做什麼。

被盜帳戶

需要注意的最大問題之一是所有者帳戶被盜。 基本上,SushiSwap 發明了一種方法,使其能夠在對抗 Uniswap 時獲得優勢。 該方法圍繞著將資產從一個交易所遷移到另一個交易所進行。 這是由合約使用一個單獨的函數來處理的,該函數只能由合約所有者存取。

然而,這種遷移最終可能會被調整為基本上任何合同,沒有任何限制,這最終成為一個重大疏忽。 因此,如果所有者帳戶被盜,這可能會導致新的遷移合約將所有農業池中的所有基礎 LP 代幣發送到任意地址。 這將導致投資資產的大量損失。

應該指出的是,這個功能現在已經被開發人員所熟悉,因此它最終被立即刪除 叉子。 但是,如果它仍然存在,則應立即將其視為危險信號。

另一件需要注意的事情是,在一些 MasterChef 分叉中,合約的所有者可以無限制地改變排放率。 然而,如果帳戶被盜,攻擊者可能會設定非常大的發行率,這將導致代幣貶值。

有一個相當簡單的方法可以解決這個問題,只需確保合約所有者可用的所有功能都需要多重簽名授權。 這樣,如果單一地址被洩露,壞人就無法利用它做太多事情。 另一件要做的事情是在呼叫遷移函數時新增一個臨時區塊(Timelock 合約)。 這樣,用戶就有更多時間做出決定,交易所必須通知您遷移或任何其他可疑交易。

加入相同的養殖池

當原始合約沒有考慮處理相同的農業池時,就會出現另一個相當明顯但被忽視的問題,這意味著合約可能會錯誤地計算農業獎勵。

如果 MasterChef 使用正確,這不是一個大問題,因為所有者不會故意添加相同的池。 事實上,在正常運作的交易所中,這些事情都是經過驗證的,並且強烈禁止創建重複的礦池。 因此,如果您開始建立池並準備建立現有池的副本,系統應該能夠報告錯誤。 或者,建議您將資金添加到現有資金池中,而不是建立新資金池。

不計算存入代幣數量

由於某種原因,人們往往忘記考慮如果將帶有轉帳佣金的代幣或變基代幣作為池添加到 MasterChef 合約中可能會發生什麼。 所發生的情況是獎勵計算方式的崩潰,因為合約程式碼僅透過呼叫某些函數將資產添加到池中。 這意味著向該地址添加代幣會將其與池中已有的資產合併。 但此類代幣的獎勵計算可能會被破壞,導致漏洞。

正常營運的平台應根據實際轉帳金額(考慮佣金)單獨計算養殖資金轉帳金額。 這樣,獎勵計算就可以正確完成。

廚藝大師:結論

MasterChef 是一個透過在 DEX 中提供流動性來實現農業產量的單一智慧合約。 不幸的是,它有一些缺陷,可以在使用過程中修復,但前提是使用者意識到這些缺陷以及他們可以做什麼。 

上面我們介紹了可能發生的幾種情況以及如何避免這些問題。 但應該注意的是,還有更多問題,例如如果代幣直接發送到合約地址,獎勵會被稀釋、起始區塊更改問題、gas 優化等等。 

換句話說,有一些漏洞和問題需要牢記和關注。 但總的來說,MasterChef 是一個革命性的合約,它在很大程度上實現了去中心化交易。 因此,只要您繼續小心使用它並了解其缺陷以及如何修復它們,就應該沒問題。

關於作者

葛列布·齊科夫

葛列布·齊科夫 是一家公司的共同創辦人兼首席技術官 DEFI 安全 和分析公司 哈希表.

​​弗拉德·科羅夫尼科夫 是初級智能合約審核員和開發人員。

得到一些t想談談 Masterchef 解決方法或其他什麼嗎? 寫信給我們 或加入我們的討論 電報頻道。 您也可以關注我們 托克, Facebook, 或者 Twitter.

免責聲明

我們網站上包含的所有信息均出於善意發布,僅供一般參考。 讀者對我們網站上的信息採取的任何措施均完全自擔風險。

來源:https://beincrypto.com/masterchef-smart-contracts-the-workarounds-for-the-fatal-flaws/