Identity
概述¶
Identity是我们新引入到区块链系统中的一个概念。在以往开放式区块链系统中所有操作都对系统中任意用户开放。而在新的系统中,我们可以通过给不同用户赋予权限,使其能够担负相应的职责;也可以通过撤销用户的某些权限,禁止用户执行相应的操作。这样能够增强系统对于用户管控能力。
赋予/撤销权限操作需要操作提交者具备相应的权限才可以执行。
什么是Identity¶
提示
Identity 是区块链系统中每个用户类似于员工卡一样的存在,它包含了用户的身份信息(address/domainId/nodeName,KYC)、权限信息(permission)、基础信息(property)等
- 身份信息
- address(domainId,nodeName):这里的
address
是开放式区块链系统的超集,为了更好的区分系统中的用户,我们让域
Id和参与投票的节点
名称直接作为唯一标识的特殊地址使用。 - KYC:
KYC
是对用户身份信息的一种额外补充,当某些合约需要用户信息匹配才能执行(eg:需要用户是中国国籍
才能购买该货币)的一种业务属性。
- address(domainId,nodeName):这里的
- 权限信息(permission):与一般管理系统类似,标识用户所具备的权限信息。
- 冻结信息(froze):用户可以被冻结某个
BD
,而被禁止执行由该BD
衍生的合约。反之亦可对用户解冻某个BD
。 - 基础信息(property):用户设置的一些基础属性,待后续业务开发。
Identity类型¶
提示
目前 Identity 在系统中被分为三大类型:user、domain、node
- user:系统内执行交易的主要用户,初始具备
默认权限
,可以执行系统的基础交易。 - node:
节点
,处理交易、投票的角色。 - 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属性需要由系统认证机构才能为他设置。