解析爆火鏈游 Fren Pet 的合約安全

封面:Photo by Fabian Albert on Unsplash

在 Friend.tech 熱潮消退後,由兩位開發者構建的基於 Base 鏈的區塊鏈遊戲 Fren Pet 吸引了市場的注意力。 11 月 19 日-20 日,得益於 Base 官方的關注和 Fren Pet 社交裂變的玩法,Fren Pet 在社交媒體上爆紅,成為 GameFi 新秀。

在 Fren Pet 使用者迅速增長的同時,安全方面依然不容忽視。  今天 Beosin 安全團隊將為大家分析 Fren Pet 的設計機制和合約代碼,説明大家瞭解其中的潛在風險。

Fren Pet 機制分析

Fren Pet 目前的遊戲內容為寵物鑄造、餵養寵物、與其他用戶的寵物對戰、幸運轉盤和擲骰子。 參與 Fren Pet 的遊戲使用者首先需要鑄造寵物(NFT),每隻寵物的鑄造需花費 100 FP 代幣(如果後續有其他使用者鑄造寵物,花費的 FP 將返還給使用者),然後使用者需要支付 FP 代幣購買蘋果、咖啡等道具餵養寵物,以避免寵物的 TOD(死亡倒計時)歸 0,即持有的 NFT 被自動銷毀。

餵養寵物可獲得積分(Pet Point),積分越高,獲得的 ETH 獎勵越多,而 ETH 獎勵來自於 FP 代幣的交易稅,每筆交易收取 5% 的稅費,2% 會分配給遊戲玩家。 因此,參與的使用者越多,對 FP 代幣的需求越多,FP 代幣的交易量越大,獎勵的 ETH 越多。

Fren Pet 合約分析

Fren Pet 的主合約地址為 0x85b157EbaAF289De5301aE6694B651BF3b8df1C3,其 NFT 合約地址為 0x5b51Cf49Cb48617084eF35e7c7d7A21914769ff1,其代幣合約位址為 0xFF0C532FDB8Cd566Ae169C1CB157ff2Bdc83E105,本次我們通過 Beosin VaaS 工具掃描該合約,結合 Beosin 安全審計專家的分析,發現其合約存在以下潛在的安全風險:

Beosin VaaS

Fren Pet 主合約

Fren Pet 主合約主要負責上述提到的遊戲內容和獎勵分發。 以下是提升其合約安全性的建議:

1. 添加 nonReentrant 修飾符

在合約的 redeem 和 kill 函數中,開發者應該確認函數無重入攻擊的風險。 建議使用 openzeppelin 防重入合約的 nonReentrant 修飾符以避免重入攻擊。

2. 使用安全的隨機數產生器

Fren Pet 主合約使用的隨機數是由區塊和 sender 位址生成的,更為安全的做法是使用類似 Chainlink 的 Verifiable Random Function 生成可靠公平的隨機數。

3. 注意存取控制

Fren Pet 主合約使用 isApproved 修飾符來控制調用者是否有許可權調用函數,這需要開發者非常熟悉其專案業務邏輯並確認許可權不會被繞過。 在 Fren Pet V2 合約中,訪問控制問題也依然需要重視。

Fren Pet NFT 合約

Fren Pet NFT 合約整體結構如下所示:

FrenpetNFT 合約繼承 ERC721,負責 NFT 的鑄造和銷毀,IRenderer 負責處理 Fren Pet NFT 的 metadata。  建議在其 setRenderer 和 setMinter 兩個函數被調用時發出事件,以便外部監聽並追蹤相關信息的轉移情況。

Fren Pet 代幣合約

1. 中心化風險

該代幣合約有多個 onlyOwner 的函數,如 blacklist 函數和 updateBuyFees 函數。 這些函數可以對代幣的交易造成巨大的影響。 合約的所有者可以修改交易費用,阻止用戶買入或賣出,添加位址黑名單:

2. 缺少時間鎖

Fren Pet 代幣合約沒有時間鎖,以限制合約持有者的操作許可權。 雖然合約中的一些函數如 withdrawStuckToken(),updateSwapEnabled()可以讓合約持有者在緊急情況下對合約採取措施,保護用戶資產,但缺乏時間鎖可能會讓這些函數被濫用。 在此情況下,使用者和安全公司對合約持有者的操作沒有足夠的反應時間。

警惕釣魚風險!

除了合約風險外,由於 Fren Pet 的火熱,相關釣魚網站和社交帳號也是層出不窮。  提醒廣大使用者切勿點擊虛假連結,比如通過從谷歌搜索出來的連結,最好再通過其它社交平台進行二次驗證。 此類虛假帳戶往往發佈推文稱目前已經開放相關代幣空投,誘導使用者進入釣魚網站。

Fren Pet 釣魚網站使用者需謹記一些防釣魚技巧,盡量避免自己被釣魚詐騙,或者可以考慮安裝 Beosin Alert 防釣魚外掛程式,説明自己識別釣魚網站。

下載連結:https://chromewebstore.google.com/detail/beosin-alert/lgbhcpagiobjacpmcgckfgodjeogceji

總結

Fren Pet 合約沒有明顯的業務邏輯漏洞,但合約的中心化風險明顯,部分代碼有更為安全的實現,以提升其合約的安全性。 在此之前市場出現過多次 GameFi、SocialFi 的熱潮,普通用戶易產生 FOMO 情緒,盲目掉入釣魚陷阱。  使用者需認清 Fren Pet 只是兩位開發者在 Web3 領域的一次嘗試,用戶應當做好資金管理和項目調研,理性參與。

免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。