You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pvysmz68u 2adf5d5408
new version
4 months ago
..
node_modules new version 4 months ago
shared new version 4 months ago
.env new version 4 months ago
README.md new version 4 months ago
check-admin.js new version 4 months ago
package-lock.json new version 4 months ago
package.json new version 4 months ago
ranking-service.ts new version 4 months ago
rationality-service.ts new version 4 months ago
setup-env.js new version 4 months ago

README.md

链下服务

概述

链下服务用于计算用户排名分数和合理性分数,这些计算在链上执行成本过高,因此采用链下计算+链上更新的方式。

服务列表

1. 排名分数计算服务 (ranking-service.ts)

  • 根据用户创建的目标数量、收到的点赞数等计算排名分数
  • 定期更新用户排名分数到合约
  • 计算公式:排名分数 = 创建目标数*10 + 收到点赞数*5 + 仲裁贡献*20 + 仲裁获胜*15

2. 合理性分数计算服务 (rationality-service.ts)

  • 根据用户投票的合理性(投票结果与最终评价的匹配度)计算合理性分数
  • 定期更新用户合理性分数到合约
  • 计算规则:
    • 用户点赞且评价最终获得更多赞:+1分
    • 用户点赞但评价最终获得更多踩:-1分
    • 用户点踩且评价最终获得更多踩:+1分
    • 用户点踩但评价最终获得更多赞:-1分

运行方式

开发环境

cd services
npm install

# 运行排名分数服务
npm run dev

# 运行合理性分数服务
npm run dev:rationality

# 同时运行两个服务
npm run dev:all

生产环境

# 运行排名分数服务
npm run start

# 运行合理性分数服务
npm run rationality

# 同时运行两个服务需要安装concurrently
npm install -g concurrently
npm run start:all

配置

.env 文件中配置:

  • RPC_URL: 区块链RPC地址
  • PRIVATE_KEY: 管理员私钥(用于调用合约,需要有管理员权限)
  • CONTRACT_ADDRESS: CampusRatingV2合约地址
  • MAIN_CONTRACT_ADDRESS: CampusRating主合约地址合理性服务需要
  • UPDATE_INTERVAL: 更新间隔排名服务默认3600秒合理性服务默认7200秒

注意事项

  1. 需要管理员权限才能调用 updateRankingScoreupdateRationalityScore
  2. 服务需要持续运行,建议使用进程管理器(如 PM2
  3. 建议添加日志和监控