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.
|
|
4 months ago | |
|---|---|---|
| .. | ||
| node_modules | 4 months ago | |
| shared | 4 months ago | |
| .env | 4 months ago | |
| README.md | 4 months ago | |
| check-admin.js | 4 months ago | |
| package-lock.json | 4 months ago | |
| package.json | 4 months ago | |
| ranking-service.ts | 4 months ago | |
| rationality-service.ts | 4 months ago | |
| setup-env.js | 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秒)
注意事项
- 需要管理员权限才能调用
updateRankingScore和updateRationalityScore - 服务需要持续运行,建议使用进程管理器(如 PM2)
- 建议添加日志和监控