在 Friend.tech 热潮消退后,由两位开发者构建的基于 Base 链的区块链游戏 Fren Pet 吸引了市场的注意力。11月19日-20日,得益于 Base 官方的关注和 Fren Pet 社交裂变的玩法,Fren Pet 在社交媒体上爆红,成为 GameFi 新秀。

在 Fren Pet 用户迅速增长的同时,安全方面依然不容忽视。今天 Beosin 安全团队将为大家分析 Fren Pet 的设计机制和合约代码,帮助大家了解其中的潜在风险。

GameFi新秀登场:从安全视角看全链游戏Fren Pet

Fren Pet机制分析

Fren Pet 目前的游戏内容为宠物铸造、喂养宠物、与其他用户的宠物对战、幸运转盘和掷骰子。参与 Fren Pet 的游戏用户首先需要铸造宠物(NFT),每只宠物的铸造需花费 100 FP 代币(如果后续有其他用户铸造宠物,花费的 FP 将返还给用户),然后用户需要支付 FP 代币购买苹果、咖啡等道具喂养宠物,以避免宠物的TOD(死亡倒计时)归0,即持有的 NFT 被自动销毁。

GameFi新秀登场:从安全视角看全链游戏Fren Pet

喂养宠物可获得积分(Pet Point),积分越高,获得的 ETH 奖励越多,而 ETH 奖励来自于 FP 代币的交易税,每笔交易收取5%的税费,2%会分配给游戏玩家。因此,参与的用户越多,对 FP 代币的需求越多,FP 代币的交易量越大,奖励的 ETH 越多。

Fren Pet合约分析

Fren Pet 的主合约地址为0x85b157EbaAF289De5301aE6694B651BF3b8df1C3,其 NFT 合约地址为0x5b51Cf49Cb48617084eF35e7c7d7A21914769ff1,其代币合约地址为0xFF0C532FDB8Cd566Ae169C1CB157ff2Bdc83E105,本次我们通过 Beosin VaaS 工具扫描该合约,结合 Beosin 安全审计专家的分析,发现其合约存在以下潜在的安全风险:

GameFi新秀登场:从安全视角看全链游戏Fren PetBeosin VaaS

Fren Pet 主合约

Fren Pet 主合约主要负责上述提到的游戏内容和奖励分发。以下是提升其合约安全性的建议:

1. 添加 nonReentrant 修饰符

在合约的 redeem 和 kill 函数中,开发者应该确认函数无重入攻击的风险。建议使用 openzeppelin 防重入合约的 nonReentrant 修饰符以避免重入攻击。

GameFi新秀登场:从安全视角看全链游戏Fren Pet

2. 使用安全的随机数生成器

Fren Pet 主合约使用的随机数是由区块和 sender 地址生成的,更为安全的做法是使用类似 Chainlink 的 Verifiable Random Function 生成可靠公平的随机数。

GameFi新秀登场:从安全视角看全链游戏Fren Pet

3. 注意访问控制

Fren Pet 主合约使用 isApproved 修饰符来控制调用者是否有权限调用函数,这需要开发者非常熟悉其项目业务逻辑并确认权限不会被绕过。在 Fren Pet V2 合约中,访问控制问题也依然需要重视。

Fren Pet NFT 合约

Fren Pet NFT 合约整体结构如下所示:

GameFi新秀登场:从安全视角看全链游戏Fren Pet

FrenpetNFT 合约继承 ERC721,负责 NFT 的铸造和销毁,IRenderer 负责处理 Fren Pet NFT 的 metadata。建议在其 setRenderer 和 setMinter 两个函数被调用时发出事件,以便外部监听并追踪相关信息的转移情况。

GameFi新秀登场:从安全视角看全链游戏Fren Pet

Fren Pet 代币合约

1. 中心化风险

该代币合约有多个 onlyOwner 的函数,如 blacklist 函数和 updateBuyFees 函数。这些函数可以对代币的交易造成巨大的影响。合约的所有者可以修改交易费用,阻止用户买入或卖出,添加地址黑名单:

GameFi新秀登场:从安全视角看全链游戏Fren Pet

2. 缺少时间锁

Fren Pet 代币合约没有时间锁,以限制合约持有者的操作权限。虽然合约中的一些函数如 withdrawStuckToken(),updateSwapEnabled() 可以让合约持有者在紧急情况下对合约采取措施,保护用户资产,但缺乏时间锁可能会让这些函数被滥用。在此情况下,用户和安全公司对合约持有者的操作没有足够的反应时间。

警惕钓鱼风险!

除了合约风险外,由于 Fren Pet 的火热,相关钓鱼网站和社交账号也是层出不穷。提醒广大用户切勿点击虚假链接,比如通过从谷歌搜索出来的链接,最好再通过其它社交平台进行二次验证。此类虚假账户往往发布推文称目前已经开放相关代币空投,诱导用户进入钓鱼网站。

GameFi新秀登场:从安全视角看全链游戏Fren PetFren Pet 钓鱼网站

用户需谨记一些防钓鱼技巧,尽量避免自己被钓鱼诈骗,或者可以考虑安装 Beosin Alert 防钓鱼插件,帮助自己识别钓鱼网站。

GameFi新秀登场:从安全视角看全链游戏Fren Pet

下载链接:https://chromewebstore.google.com/detail/beosin-alert/lgbhcpagiobjacpmcgckfgodjeogceji

总结

Fren Pet 合约没有明显的业务逻辑漏洞,但合约的中心化风险明显,部分代码有更为安全的实现,以提升其合约的安全性。在此之前市场出现过多次GameFi、SocialFi的热潮,普通用户易产生FOMO情绪,盲目掉入钓鱼陷阱。用户需认清Fren Pet只是两位开发者在Web3领域的一次尝试,用户应当做好资金管理和项目调研,理性参与。