Skip to content

Lireal-w/Solidity-Game

Repository files navigation

Solidity-Game 🎮💰

一个将链上游戏与 DeFi 借贷融合的 Solidity 实验项目——用智能合约实现经典斗地主卡牌对战,同时构建类 Aave 的去中心化借贷池,让游戏资产与金融协议在链上无缝衔接。

📖 项目简介

本项目探索区块链上游戏与金融的交叉场景,包含两大核心模块:

  1. 斗地主游戏 — 将经典三人斗地主搬上链,实现玩家注册、对局创建、角色分配(地主/农民)及牌组管理,让卡牌对局完全由合约驱动、公开透明。
  2. DeFi 借贷池 — 参照 Aave 协议设计,实现 aToken 利息代币、储备资产管理与利率策略,为游戏资产提供存款生息与抵押借贷能力,打通游戏经济与 DeFi 的边界。

📂 项目结构

Solidity-Game/
├── FightLandlord.sol        # 斗地主游戏主合约
├── Card.sol                 # 扑克牌牌组合约
├── AToken.sol               # 利息代币(aToken)合约
├── LendingPool.sol           # 借贷池核心逻辑(待实现)
├── LendingPoolStorage.sol    # 借贷池数据存储合约
├── InterestRateStrategy.sol  # 利率策略合约(待实现)
├── ProFileSatus.sol          # 概率计算与抽奖合约
└── user.sol                  # 用户合约(待实现)

🃏 斗地主游戏模块

核心合约

FightLandlord.sol

游戏主合约,包含以下子合约:

合约 说明
UserBaseData 玩家基础数据(年龄、姓名、地址、余额)
GamePlayer 玩家对局数据,包含角色(地主/农民)和状态(准备/游戏中/已结束)
Game 单局对局合约,管理对局状态
FightLandlord 游戏入口合约,管理对局和玩家注册

角色与状态

  • 角色(Role)Landlord(地主)/ Farmer(农民)
  • 状态(Status)Ready(准备)/ InGame(游戏中)/ End(已结束)

主要功能

  • register() — 玩家注册,初始余额 1000
  • createGame(gameId) — 创建新对局
  • isLogin 修饰器 — 检查玩家是否已注册

Card.sol

扑克牌数据结构,定义了:

  • 花色(suits):黑桃(Spades)、红心(Hearts)、方块(Diamonds)、梅花(Clubs)
  • 点数(ranks):2 ~ A(共 13 级)
  • Hand 合约 — 创建和管理一副 52 张牌组

💰 DeFi 借贷池模块

核心合约

AToken.sol

利息代币合约,基于 OpenZeppelin 的 ERC20 和 AccessControl:

  • 铸造(mint)和销毁(burn)仅限 LendingPool 调用
  • 支持底层资产(underlying asset)的安全转账
  • 角色权限控制:MINTER_ROLEBURNER_ROLEDEFAULT_ADMIN_ROLE

LendingPoolStorage.sol

借贷池数据存储合约,管理:

  • 储备资产数据(ReserveData):aToken 地址、利率策略、流动性、借贷量、利率指数等
  • 用户借贷数据(UserBorrowData):本金余额、借贷指数、累计利息
  • 用户存款数据:按储备资产和用户地址映射

主要功能:

函数 说明
initReserve() 初始化储备资产
updateReserveState() 更新储备资产利率状态
updateReserveTotalBorrows() 更新总借贷量
updateReserveLiquidity() 更新流动性
updateUserBorrow() 更新用户借贷数据
updateUserDeposit() 更新用户存款数据

🎲 概率计算模块

ProFileSatus.sol

提供基于二项式分布的概率计算:

  • binomialDistribution(n) — 计算二项分布概率(默认 10% 概率)
  • combination(n, k) — 计算组合数 C(n, k)

可用于游戏中的抽奖、掉落概率等场景。

🔧 技术栈

  • Solidity ^0.7.4(游戏模块)/ ^0.8.0(DeFi 模块)
  • OpenZeppelin — ERC20、AccessControl、Ownable、SafeERC20

🚀 快速开始

安装依赖

npm install

编译合约

npx hardhat compile

运行测试

npx hardhat test

⚠️ 开发状态

模块 状态
斗地主游戏 🟡 基础框架完成
Card 牌组 🟡 基础框架完成
AToken 🟢 核心功能完成
LendingPoolStorage 🟢 核心功能完成
LendingPool 🔴 待实现
InterestRateStrategy 🔴 待实现
user 🔴 待实现
ProFileSatus 🟡 基础功能完成

📄 许可证

  • 游戏模块:GPL-3.0
  • DeFi 模块:MIT

About

Solidity-Game 是一个将链上游戏与 DeFi 借贷融合的 Solidity 实验项目:一方面用智能合约实现经典三人斗地主卡牌对战,涵盖玩家注册、对局创建、角色分配(地主/农民)与牌组管理,让对局完全由合约驱动、公开透明;另一方面参照 Aave 协议设计去中心化借贷池,实现 aToken 利息代币、储备资产管理与利率策略,为游戏资产提供存款生息与抵押借贷能力,从而打通游戏经济与 DeFi 的边界。

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages