Skip to content

01 — 用户模块

负责用户身份认证与团队推荐关系的建立。采用区块链钱包签名(EIP-712)替代传统账号密码,确保身份的去中心化与安全性。


一、钱包登录(EIP-712 签名认证)

设计理念

用户无需注册账号,直接用加密钱包(如 MetaMask)签名完成身份验证。后端验签通过后颁发 JWT 令牌,后续所有接口凭此令牌访问。

登录流程

关键规则

规则说明
Nonce 有效期5 分钟,超时须重新获取
Nonce 一次性使用后立即作废,防止重放攻击
JWT 有效期30 天,过期需重新登录
设备绑定JWT 与设备号(x-device-id)绑定,换设备需重新登录
多业务线理财(invest)、量化(quantify)、Alphata 各自独立 Token,互不影响

理财模块登录特殊处理

理财(invest)登录时可携带推荐人信息:

  • paddr:推荐人钱包地址
  • pjuid:推荐人节点 ID

若为新用户,系统自动完成推荐关系绑定(详见下文)。


二、登出

流程说明

  • 接口:index/off
  • 操作:清除服务器端 Redis 中的 Token 缓存,JWT 立即失效
  • 若用户账号被封禁,系统也会自动触发登出,清除其 Token

三、推荐关系绑定

业务背景

平台采用多级推荐网络结构,用户(节点)之间形成上下级关系,下级质押产生的分润会沿关系链向上级分配。因此,推荐关系的正确建立至关重要。

绑定时机

也可通过独立接口 index/bind 主动发起绑定(需提交推荐人钱包地址和节点 ID)。

绑定校验规则

系统对推荐关系有严格校验,以下情况不允许绑定:

校验项规则说明
自绑不能绑定自己为上级
上级有效性推荐人必须是平台已注册用户
节点匹配pjuid(节点 ID)必须与推荐人钱包地址一一对应
同钱包多节点同一钱包下已有 2 个以上启用节点时,禁止绑定
环形关系检测沿上级链向上追溯,若发现当前节点已存在于链中,则拒绝(防止形成环路)

关系结构说明

  • 每个用户在系统中对应一个或多个节点(JoinUser)
  • 节点之间通过 pid(上级节点 ID)形成树形关系链
  • 节点未绑定上级时,pid = 0

四、接口汇总

接口说明是否需要登录
usr/nonce获取签名用的 Nonce
usr/login钱包签名登录,获取 JWT
usr/key生成关联用短期密钥
index/off登出,清除 Token
index/bind主动绑定推荐人(仅理财模块)

五、可变配置项

参数当前值影响
JWT 有效期30 天用户登录持久性
Nonce 有效期5 分钟登录操作时效

所属文件:backend/modules/quantify(invest/alphata)/v1/controllers/UsrController.phpbackend/services/ftg/FtgAuthService.php