名词解释

为消除歧义,明确本文提及的部分名词及含义

需求列表

  1. $SCORE是临时性不可转移代币,未来会等比空投正式代币$SEED(兑换)
    1. 总量10亿,不可增发
    2. 部署在以太坊,接口符合ERC20标准(但实际上不可转移)
    3. 支持snapshot接口,方便计算节点资格
    4. 普通用户永远无法转移也无法销毁自己手上的代币
    5. 是否仍保留该积分代币存疑(等待”一种代币vs.两种代币”的投票)
  2. 含有超级管理员OwnerOwner可以执行敏感操作,包括:
    1. 添加/删除普通管理员admin
    2. 销毁/转移任何人持有的任何数量的$SCORE代币
    3. 增加/删除特殊管理员burner,该管理员burner可以销毁代币(用于后面的空投/兑换)
  3. 普通管理员admin可以直接从0地址mint到用户地址,该名单可以由Owner调整,可能包含:
    1. 市政厅
    2. 孵化器
    3. 各个公会管理员或者金库
    4. 质押池
  4. 普通管理员admin的额度公开可查,可由超级管理员owner随时调整
  5. 普通用户可以:
    1. 查看自己的余额,但不能转移,也不能销毁
    2. 查看admin的可用额度
  6. 空投/兑换事宜
    1. 用户主动兑换,还是被动空投?(主动)
    2. 兑换后是否销毁$SCORE?(销毁)

接口

Score使用通用的ERC-20接口,除此以外还加入了以下定制化接口。

function grantRole(bytes32 role, address account) public;
function setBudget(address spender, uint256 amount) public;
function mint(address to, uint256 amount) public;

function snapshot() public;

function burnFrom(address account, uint256 amount);

function pause() public;
function unpause() public;

使用方法举例

1. 超级管理员owner如何添加普通管理员admin

score.grantRole(role, account);

2. 超级管理员owner如何增加普通管理员admin的额度