在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 合約地址為0x5b51Cf49Cb48617084eF35e7c7d7A219149Cb48617084eF35e7c7d7A219149Cb48617084eF35e7c7d7A219149Cb48610084eF35e。 e169C1CB157ff2Bdc83E105,本次我們透過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領域的嘗試,使用者應當做好資金管理與專案研究,理性參與。