账号管理

本文档描述账号的冻结/解冻操作及其操作权限的设计方案。

重要

账号冻结/解冻操作支持storagestate的存储模式,不支持mptstate的存储模式。

名词解释

账号管理的相关操作包括冻结、解冻、查询状态、授权、查询授权。

  • 冻结账号:可逆操作,一账号冻结后不能部署及调用合约
  • 解冻账号:撤销冻结的操作,一账号解冻后可部署及调用合约
  • 查询账号状态:查询账号状态,返回该账号可用/已冻结的状态

账号的冻结/解冻操作只能由链的委员进行。权限相关操作请参考基于角色的权限控制

重要

冻结账号的操作不会对原有账号内容进行修改,只会通过标志位进行记录。

账号状态(可用、已冻结)转换矩阵如下:

available(可用) frozen(已冻结)
freeze(冻结) 冻结成功 失败,提示已冻结
unfreeze(解冻) 失败,提示账号可用无需解冻 解冻成功

具体实现

账号状态存储

  • 复用字段frozen,用于记录该账号是否已冻结,该字段默认为false,表示可用,冻结时该值为true;

注意:

  1. 对不存在字段frozen的账号表,查询该字段时将返回false;

账号状态判断

Executive中根据账号地址获取frozen字段值,进行判断后部署或执行交易,或者抛出异常,提示该账号已冻结。

重要

兼容性说明:账号管理相关操作只能在2.5及以上版本上进行。