在 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 VaaSFren 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领域的一次尝试,用户应当做好资金管理和项目调研,理性参与。