账号管理

CITA统一对账号进行基于角色的权限管理。系统内置了两种角色:

  • 管理员角色拥有全部权限。包括管理节点的权限、发送交易的权限、创建合约的权限以及所有普通角色的权限;
  • 普通角色拥有读取的权限以及创建角色的权限。包括验证节点是否是共识节点、获取共识节点列表、判断是否拥有角色、获取角色列表、判断是否拥有权限、获取权限列表等。

其中管理员角色和管理员绑定,即管理员账号有且只有管理员角色。管理员的添加只能由管理员操作,并且无法进行删除操作。角色可由用户创建,可相互授予及收回,而角色对应的权限只可由管理员进行设置。

CITA通过智能合约的方式来对账号进行管理。其中账号管理合约用来管理角色,权限管理合约用来管理角色的权限。

账号管理合约接口

  • 创建角色-createRole
    • 账号调用,需拥有用户角色;
    • 成功后创建一个新的角色,并拥有创建者指定权限,默认创建角色继承创建者角色权限,需调用权限管理合约接口;
    • 传入参数:
      • bytes32: 角色名称
      • uint8[]: 权限列表
    • 返回类型为bool,可通过其判断操作成功与否。
  • 添加管理员-addAdmin
    • 账号调用,需拥有管理员角色;
    • 成功后授予账号管理员角色,即添加了新的管理员;
    • 传入参数: address,为账号地址;
    • 返回类型为bool,可通过其判断操作成功与否。
  • 判断账号是否拥有角色-ownRole
    • 只读方法,账号调用,需拥有用户角色;
    • 判断账号是否拥有指定的角色;
    • 传入参数:
      • address: 账号地址;
      • bytes32: 角色名称。
    • 返回类型为bool,可通过其判断操作成功与否。
  • 查询账号拥有的角色-listRole
    • 账号调用,需拥有用户角色;
    • 读取账号所拥有的权限;
    • 传入参数: address,为账号地址;
    • 返回类型为bytes32[MAX_ROLE],为账号拥有的角色列表。其中MAX_ROLE为角色拥有的最大角色数。
  • 授予指定账号角色-grandRole
    • 用户账号调用,需拥有用户角色;
    • 对给定账号授予已存在的角色,成功后该账号拥有此角色;
    • 传入参数:
      • address: 账号地址;
      • bytes32: 角色名称。
    • 返回类型为bool,可通过其判断操作成功与否。
  • 收回指定账号角色-revokeRole
    • 用户账号调用。账号需为角色创建者或者拥有管理员角色;
    • 撤销账号拥有的角色,成功后该账号失去此角色;
    • 传入参数:
      • address: 账号地址;
      • bytes32: 角色名称。
    • 返回类型为bool,可通过其判断操作成功与否。

权限管理合约接口

  • 设置角色权限-setRolePermission
    • 账号调用,需拥有管理员角色;
    • 只能由管理员授予角色权限,成功后角色拥有指定权限;
    • 传入参数:
      • bytes32: 角色名称;
      • uint8[]: 权限列表。
    • 返回类型为bool,可通过其判断操作成功与否。
  • 判断角色是否拥有权限-ownPermission
    • 只读方法,账号调用,需拥有用户角色;
    • 判断角色是否拥有指定的权限;
    • 传入参数:
      • bytes32: 角色名称。
      • uint8: 权限名称;
    • 返回类型为bool,可通过其判断操作成功与否。
  • 查询角色拥有的权限-listPermission
    • 账号调用,需拥有用户角色;
    • 读取角色所拥有的权限;
    • 传入参数: bytes32,为角色名称;
    • 返回类型为bytes32[MAX_PERMISSION],为角色拥有的权限列表。其中MAX_PERMISSION为角色拥有的最大权限数。