Skip to content

工作量积分化,积分市场化。模仿BTC的经济模型,基于区块链Token将日常所有工作量积分化,再让市场来反向为积分定价。这样可以最大化降低大家在互联网上跨时空协作的信任成本,同时也让工作成果以市场结果作为最终定价方式,对参与者形成好的激励。

Notifications You must be signed in to change notification settings

Wanxiang-Blockchain-Hackathon-2020/N11-RichatHome

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

N11 - 宅富家 Rich@Home - 万向黑客松11号参赛作品

团队 - 宅特工

按加入先后顺序

  • 宋世军(产品&架构)
  • 徐来(测试)
  • 冯占涛(合约)
  • 宋家准(前端)
  • 陈星燃(后端)
  • 胡启明(前端)

项目概述

如何在疫情之下,宅在家里还能有效计算工作量、考核工作成果?转换成通用问题就是:人们如何通过互联网有效地远程协作? 我们通过区块链解决大家在不见面、不认识的情况下实现互相信任、有效激励的技术方案。

功能

  • 项目方发起项目任务,并发行基于区块链的“项目积分”。
  • 项目志愿参与者完成任务,提交工作量证明。
  • 见证人(可以是机器人,也可以是普通人)为参与者的工作量签名,见证人类似区块链中的预言机(Oracle)。
  • 见证人签名被提交给任务托管智能合约,智能合约审核以后自动发放积分到参与者的钱包。
  • 参与者可以兑换奖励,这里至少提供两种方式:按汇率,比如1000个积分=1个USDT;按奖金池瓜分,比如项目方提供了1000USDT,所有持有积分的人按比例瓜分。还可以加入项目方主动回购积分等各种市场化玩法,让积分的价值可以有效反应项目的市场价值,对参与者进行有效激励。

一、架构设计

每种积分对应一个独立的“积分托管合约”,它负责保管奖励积分、保管用于奖励的有价token(比如ELA)、为用户发放积分、为用户将积分兑换为有价token。

图片

围绕着积分托管合约,这里面有几个角色:

  • Admin:管理员代表甲方,创建和管理积分,他可以为奖励对象发行一种奖励积分,再创建一个托管合约来管理它们。同时负责提供兑换积分的“钱”----有市场价的token,例如 ELA。
  • 志愿者:代表普通用户,参与贡献来赚取奖励。完成工作以后需要向合约提交工作量证明信息,并由第三方(类似Oracle)签名,这个第三方是Admin创建托管合约时指定的。得到奖励积分以后,再通过托管合约将积分兑换为“钱”。兑换价格或者兑换方式也是Admin在创建合约时指定的。
  • 合约:即“积分托管合约”,参考前面的介绍。
  • 发币网站https://tokens.elabank.net/erc20-generator/ 引导用户在这里创建,创建以后会发送到用户的个人meta mask钱包。
  • 操作页面:方便用户调用合约的前端页面,同时也将项目信息、积分信息、领取信息等等都记录在数据库,以备查询使用。
  • 展示页面:可以展示所有的项目和积分,所有的发放记录。可以过滤和筛选。

图片

附加分----GitHub Hook

如果有一个奖励是针对GitHub上的行为,可以增加一个GitHub Hook机器人,用户在提交代码或者issue时,在内容里附带自己的钱包地址,机器人发现以后,自动为其签名并调用领取奖励合约,从而实现自动发放奖励。

二、页面流程

  1. 创建项目

图片

登录页面获取用户钱包信息,包括地址和公钥等。

创建部分调用后台接口,由后端代理创建合约和创建ERC20积分token,并将token充值到项目合约。再由用户自己向项目合约充值ELA,用于为用户兑换积分。

  1. 申请奖励

图片

志愿者登录以后获取其公钥和钱包地址。

申请奖励需要四步操作:

  1. 提交"工作量证明"到服务器

  2. 分享这条工作量证明记录给朋友或者验证人

  3. 验证人签名,并将签名提交到服务器

  4. 贡献者再次提交“申请奖励”(如果后台可以调用合约,则取消此步骤)

  5. 兑换奖励

图片

将积分兑换为奖励,从前端发起合约调用,将积分币转账到对应的项目合约,再由项目合约将对应的ELA转入用户地址,如果是瓜分类型,则等到期之后再转入用户地址。

  1. 查看信息

图片图片

三、接口协议

1. 瓜分方式积分托管合约

方法1: 初始化

  1. 管理员公钥
  2. 验证人公钥,支持多个
  3. 积分币代码
  4. 奖励周期时长
  5. 每期奖励预算
  6. 开始时间
  7. 结束时间

方法2: 充值积分币

方法3: 充值ELA奖励代币

方法4: 领取奖励

参数:

  1. 收币地址

  2. 验证人签名,可以多个

方法5: 兑换奖励

功能:记录每个周期兑币的积分数,按积分比例瓜分该周期的ELA数量。可以多次兑换。

参数:

  1. 收币地址

方法6: 终止项目

功能:自动将剩余积分和ELA退回到管理员地址。

  1. 后端接口
  2. 备份项目信息

"/api/project", POST , json

入参:

项目信息数据对象全量数据字段

返回:

项目ID,项目项目ID就用合约地址

  1. 查询项目

"/api/project/search",POST,json

入参:

Key: 项目ID or 名称 or 发包方名称 or 管理员地址 or 验证人地址 or NULL(为空则返回全部)

PageSize: 每页记录条数

PageNumber: 请求第几页,页码基于0

Order: ASC | DESC

返回:

JSON数组,每个元素是项目对象全量数据

  1. 提交工作量证明

"/api/task", POST,

入参:

项目数据对象全量数据字段

返回:

工作量ID

  1. 提交工作量证明签名

"/api/task/sign", POST, json

入参:

工作量ID

签名

签名公钥

签名地址

返回:

成功/失败

  1. 查询工作量证明记录

"/api/task/search", POST,json

文件是否需要返回?

入参:

Key: 工作量ID or 贡献者昵称 or 贡献者地址 or 项目ID or 项目名称 or NULL(为空则返回全部)

PageSize: 每页记录条数

PageNumber: 请求第几页,页码基于0

Order: ASC | DESC

返回:

JSON数组,每个元素是项目对象全量数据

四、数据对象

  1. 项目信息
  • 项目ID : id
  • 名称(50字):name:string
  • 描述(500字):info:string
  • 发包方名称(50字): sender_name:string
  • 发包方链接(1000字): sender_url:string
  • 管理员地址: admin_addressl:string
  • 管理员公钥: admin_pubkeyl:string
  • 验证人地址(多个): verifier_address:list
  • 验证人公钥(多个): verifier_pubkey: list
  • 积分代币符号: point_token_symbol: string
  • 积分数量: point_token_num: string
  • 奖励代币符号 :reward_token_symbol: string
  • 奖励币数量 :reward_token_num: string
  • 兑换周期; exchange_time: string
  • 每期预算: budget: string
  • 积分兑换价格: rate: string
  • 开始时间:start_date: string
  • 结束时间: end_date: string
  • 合约地址: contract: string
  1. 工作量
  • 工作量ID : id : string
  • 项目ID : project_id : string
  • 项目名称 : project_name : string
  • 贡献者钱包地址 : contributer_wallet : string
  • 贡献者身份附加信息(200字),用于附加描述贡献者身份,例如github账号,微信账号,邮箱手机等等收集到到信息 : contributer_info : string
  • 提交时间 : submit_time :string
  • 工作描述(1000字): task_info : string
  • 文件附件(多个)
  • 验证人公钥(多个): verifier_pubkey : list
  • 验证人地址(多个): verifier_wallet : list
  • 验证人签名(多个): verifier_sign :list
  • 状态(已提交,已签名,已发放): status: string
  • 发放交易HASH : tx_hash: string
  • 发放时间 : tx_time :string
  • 发放积分数量 : tx_token_num : string

About

工作量积分化,积分市场化。模仿BTC的经济模型,基于区块链Token将日常所有工作量积分化,再让市场来反向为积分定价。这样可以最大化降低大家在互联网上跨时空协作的信任成本,同时也让工作成果以市场结果作为最终定价方式,对参与者形成好的激励。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published