最近,在 Twitter 平台上,一款名为 xPET 的基于区块链的游戏迅速走红。有人形容这个项目像是一种「Web3 病毒」,迅速增加了关注者和用户数量。xPET 是一个早期的项目,结合了游戏和社交元素,在推出仅两周内就引起了巨大关注。由于 GameFi 行业的复苏和 xPET 独特的机制,该项目在最近成为了备受瞩目的话题,吸引了 2785 ETH(约合 650 万美元)的存款。
然而,与之相关的安全问题不容忽视。为了帮助用户了解潜在的风险,Beosin 安全团队将对 xPET 的设计机制和合约代码进行详细分析,揭示其中存在的安全漏洞。
xPET 机制分析
xPET 是一款建立在 Arbitrum 上的宠物游戏,结合了 Tipcoin 和之前在 Base 链上广受欢迎的 Fren Pet 的元素。游戏玩法涉及通过喂养宠物进行升级和盈利。xPET 的独特之处在于它采用了浏览器插件的形式,要求通过 Twitter 身份验证进行登录,并在随后的游戏奖励任务中实现与 Twitter 的完全集成。
https://www.xPET.tech/目前,游戏内容主要围绕着喂养宠物、升级工厂以及完成 Twitter 任务以获取宝箱展开。玩家必须将宠物升级到第 7 级,以生产 Berry,这可以转换为 BPET 以获取利润。升级宠物需要支付 xPET 的两个代币之一,即 xPET 或 BPET。用户最初需要以 ETH 作为抵押,借入 xPET(可与 BPET 以 1:1 兑换),或者从 xPET-ETH 交易池购买 xPET。游戏的经济系统设计如下图所示:
来源:BeosinxPET 合约分析
xPET 的主要合约是一个 ERC1967 可升级合约。
代理合约地址为: 0x1B0D12879960A768D02bd223ef735D4231a15348,
逻辑合约地址为: 0xcD4420B70e2669De8dE9d62dd7fEa4D19b320768。
xPET 代币合约地址为: 0x00cbcf7b3d37844e44b888bc747bdd75fcf4e555,
$$XPET 代币合约地址为 0x00cbcf7b3d37844e44b888bc747bdd75fcf4e555,$$BPET 代币合约地址为: 0x6daf586b7370b14163171544fca24abcc0862ac5。
通过 Beosin VaaS 工具和 Beosin 安全审计专家的分析,已经识别出 xPET 相关合约中的潜在安全风险:
https://vaas.beosin.com/xPET 主合约
主合约负责处理 ETH 和 xPET 的借贷逻辑。然而,由于主合约是一个可升级合约,而且项目未公开此可升级合约中的逻辑合约,因此无法检测逻辑合约中潜在的逻辑错误或风险。
在可升级合约的安全性方面,Beosin 提出以下建议:
初始化合约和依赖项,开发者在部署过程中可能忽略对合约和依赖项的初始化,从而导致严重的漏洞。
解决地址存储冲突,在合约升级过程中修改存储可能导致不同版本之间的冲突,引发数据错误和财务损失。
管理权限,开发者应当限制升级权限,以防止攻击者掌控合约升级。
xPET 代币合约
xPET 代币合约继承了 ERC20 和 AccessControl 合约,存在潜在风险:
中心化风险,该合约将部署者指定为管理员角色,形成一个中心化的控制点。攻击部署者的账户会带来重大风险。
代币可访问性,该合约集中了代币流动,因为所有代币都被铸造到合约自身。这种设计使得代币流动变得中心化。
提款和转换功能缺乏事件,在调用这些功能时应发出事件,以进行外部监控和跟踪。
BPET 代币合约
xPET 代币合约类似,BPET 代币合约存在一个无法忽视的单点风险:
中心化风险,该合约将部署者指定为管理员和铸造者,集中了权力。攻击部署者的地址可能导致严重的安全风险。
无上限铸币
转换功能缺乏对可铸币数量的限制。如果部署者决定过度铸造代币以谋求利润,可能导致代币价格急剧下跌。
角色管理,合约缺乏吊销或转移角色的功能,如果需要进行所有权转移或移除铸造者,可能存在潜在的安全问题。
其他风险
除了合约风险之外,xPET 还面临与 Twitter 上的垃圾信息有关的问题。由于 xPET 要求用户在 Twitter 上发布带有「xPET」一词的评论以赚取游戏奖励,导致出现了大量无关的帖子包含「xPET」,引起了许多 Twitter 用户的不满。
Twitter 的开发者协议禁止使用与 Twitter 相关的开发者产品生成垃圾信息。如果 Twitter 禁用了 xPET,其依赖于 Twitter 集成的游戏玩法将完全停止。
https://developer.twitter.com/en/developer-terms/policy结论
xPET 项目的核心逻辑合约仍然是封闭源代码,而且两个代币合约都存在明显的中心化风险。用户应当注意相关风险,而通过一些合约代码的改进可以提高安全性。在此之前,市场已经见证了 GameFi 和 SocialFi 的多个趋势。建议用户明智管理资金,并在充分了解项目风险后以理性的方式参与。