游戏模块
游戏模块提供核心的游戏功能,包括游戏轮次管理、存款参与、开奖等接口。
数据对象定义
Round 对象
Round 对象表示一个游戏轮次:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | string | 轮次唯一标识符 |
| status | string | 轮次状态:none(不存在)、open(开放)、drawing(开奖中)、drawn(已开奖)、cancelled(已取消) |
| duration | number | 本轮游戏时长 (以秒为单位) |
| cutoff_time | string | 截止时间(ISO 8601格式) |
| drawn_at | string | 开奖时间(ISO 8601格式,仅当status为drawn时有值) |
| maximum_number_of_participants | number | 最大参与人数 |
| number_of_participants | number | 当前参与人数 |
| winner | string | 获胜者地址(仅当status为drawn时有值) |
| winner_earning | string | 获胜者的收入(ETH,以wei为单位) |
| jackpot_earning | string | 获胜者的jackpot收入(ETH,以wei为单位) |
| winner_index | string | 获胜者的索引 |
| value_per_entry | string | 每次参与的价值(ETH,以wei为单位) |
| volume | string | 本轮总代币数量(以wei为单位) |
| deposits | Deposit[] | 存款记录数组 |
| participants | Participant[] | 参与玩家数组 |
Participant 对象
Participant 对象表示游戏轮次的参与者信息:
| 字段名 | 类型 | 说明 |
|---|---|---|
| user | User | 用户信息 |
| deposits_amount | string | 总存款金额(以wei为单位) |
| deposits_count | number | 存款次数 |
| entries_count | number | 总存款票数 |
| points | number | 本轮已获得的积分 |
Deposit 对象
Deposit 对象表示一次存款记录:
| 字段名 | 类型 | 说明 |
|---|---|---|
| depositor | string | 存款人地址 |
| amount | string | 代币数量(以wei为单位) |
| entries_count | number | 本次存款票数 |
Pagination 对象
Pagination 对象表示分页信息:
| 字段名 | 类型 | 说明 |
|---|---|---|
| page | number | 当前页码 |
| limit | number | 每页数量 |
| total | number | 总记录数 |
| total_pages | number | 总页数 |
接口说明
获取当前轮次
路径: /api/game/round/current
方法: GET
认证: 无需认证
请求字段
| 字段名 | 必需 | 类型 | 说明 |
|---|---|---|---|
| - | - | - | 无需请求参数 |
响应字段
| 字段名 | 必需 | 类型 | 说明 |
|---|---|---|---|
| round | 是 | Round | 当前轮次信息 |
round 对象包含上述 Round 对象的所有字段
获取轮次详情
路径: /api/game/round/{round_id}
方法: GET
认证: 无需认证
请求字段
| 字段名 | 必需 | 类型 | 说明 |
|---|---|---|---|
| round_id | 是 | string | 轮次ID(路径参数) |
响应字段
| 字段名 | 必需 | 类型 | 说明 |
|---|---|---|---|
| round | 是 | Round | 轮次详细信息 |
round 对象包含上述 Round 对象的所有字段
获取轮次历史
路径: /api/game/rounds
方法: GET
认证: 无需认证
请求字段
| 字段名 | 必需 | 类型 | 说明 |
|---|---|---|---|
| page | 否 | number | 页码(默认为1) |
| limit | 否 | number | 每页数量(默认为10,最大100) |
| status | 否 | string | 筛选状态:open、drawing、drawn、cancelled |
| uid | 否 | string | 用户ID,获取指定用户参与过的轮次 |
| address | 否 | string | 用户钱包地址,获取指定用户参与过的轮次 |
| jackpot | 否 | bool | 筛选是否击中 Jackpot |
注意:uid 和 address 参数二选一使用,用于筛选特定用户参与的轮次
响应字段
| 字段名 | 必需 | 类型 | 说明 |
|---|---|---|---|
| rounds | 是 | Round[] | 轮次列表 |
| pagination | 是 | Pagination | 分页信息 |
获取用户未来投注汇总
路径: /api/game/rounds/future
方法: GET
认证: 无需认证
请求字段
| 字段名 | 必需 | 类型 | 说明 |
|---|---|---|---|
| address | 是 | string | 用户钱包地址 |
响应字段
| 字段名 | 必需 | 类型 | 说明 |
|---|---|---|---|
| total_rounds | 是 | number | 未来涉及的轮次总数 |
| total_amount | 是 | string | 未来投注总金额(单位:wei) |
使用说明
- 轮次状态流转:
open→drawing→drawn或cancelled - 用户通过前端钱包直接与智能合约交互参与游戏
- 存款金额必须符合轮次设定的
value_per_entry - 所有涉及金额的字段都以 wei 为单位(1 ETH = 10^18 wei)
- 协议费用以基点表示,10000基点 = 100%
- Deposit 对象中的 depositor 字段包含完整的 User 对象信息(详见 User 模块),便于前端展示用户头像、昵称等信息
- 获取轮次历史时,可通过 uid 或 address 参数筛选特定用户参与过的轮次,两个参数二选一使用