Identity

概述

Identity是我们新引入到区块链系统中的一个概念。在以往开放式区块链系统中所有操作都对系统中任意用户开放。而在新的系统中,我们可以通过给不同用户赋予权限,使其能够担负相应的职责;也可以通过撤销用户的某些权限,禁止用户执行相应的操作。这样能够增强系统对于用户管控能力。

赋予/撤销权限操作需要操作提交者具备相应的权限才可以执行。

什么是Identity

提示

Identity 是区块链系统中每个用户类似于员工卡一样的存在,它包含了用户的身份信息(address/domainId/nodeNameKYC)、权限信息(permission)、基础信息(property)等

  • 身份信息
    • address(domainId,nodeName):这里的address是开放式区块链系统的超集,为了更好的区分系统中的用户,我们让Id和参与投票的节点名称直接作为唯一标识的特殊地址使用。
    • KYC:KYC是对用户身份信息的一种额外补充,当某些合约需要用户信息匹配才能执行(eg:需要用户是中国国籍才能购买该货币)的一种业务属性。
  • 权限信息(permission):与一般管理系统类似,标识用户所具备的权限信息。
  • 冻结信息(froze):用户可以被冻结某个BD,而被禁止执行由该BD衍生的合约。反之亦可对用户解冻某个BD
  • 基础信息(property):用户设置的一些基础属性,待后续业务开发。

Identity类型

提示

目前 Identity 在系统中被分为三大类型:user、domain、node

  1. user:系统内执行交易的主要用户,初始具备默认权限,可以执行系统的基础交易。
  2. node:节点,处理交易、投票的角色。
  3. domain:,管理节点的加入、离开。详细可以参照1

Identity的作用

正如前文所述,Identity是对于公链用户模块的一个扩展:

  • 权限、冻结/解冻BD功能使得内部系统中的机构、组织能够直接控制某个用户,限制或解锁该用户的操作能力;
  • KYC使得具体业务可以有选择性的对某一类用户进行开放;

权限Permission

  • 创建BD时,用户需要设置BD初始化(衍生为合约)所需要的初始化权限,以及其中各个功能执行时用户所需要的接口权限

  • 用户提交操作时,在实际执行前系统会对提交者所拥有的权限进行校验,只有当提交者具备该权限时,才能实际执行该操作。

因此在创建BD时设置合理的权限,就能恰当管理用户的行为。

提示

普通用户的默认权限为:DEFAULT,因此如果想直接开放接口给所有用户,设置接口权限为DEFAULT即可。 同理,由于 RS节点的默认权限为:RS。因此如果想只对RS节点开放权限,只需要设置权限为RS即可。

冻结/解冻BD

在执行BD定义的function前,系统会校验用户提交交易中设置的bdCode是否已被冻结,如若被冻结,则无法继续执行。

针对某些用户,系统提供了冻结BD功能,让系统可以通过该接口限制部分用户执行某些BD。

KYC

在合约创建时,可以设置用户需要某些KYC属性才能执行(例如,用户国籍满足要求),因此可以针对某些条件限制能执行该合约的用户群体。

提示

用户的KYC属性需要由系统认证机构才能为他设置。