账号和权限¶
个人账号AK¶
个人账号是指一个具体的地址Addr,用户的创建是离线的行为,可以通过命令行工具或者API进行创建
合约账号¶
合约账号是超级链智能合约的管理单元
- 账号的创建:
任何账号或者AK都可以调用系统级智能合约创建账号
创建账号需要指定账号对应的拥有者的地址集,如果一个账号中只有一个地址, 那么这个Addr对账号完全控制;
创建账号需要指定ACL控制策略,用于账号其他管理动作的权限控制;
创建账号需要消耗账号资源;
- 账号名命名规则;
合约账号由三部分组成,分为前缀,中间部分,后缀。
前缀为XC,后缀为@链名
中间部分为16个数字组成。
在创建合约账号的时候,只需要传入16位数字,在使用合约账号的时候,使用完整的账号。
- 账号管理:依地址集合据创建时指定的地址集和权限策略,管理账号其他操作
账号股东剔除和加入
账号资产转账
创建合约,创建智能合约需要消耗账号资源,先将utxo资源打到账号下,通过消耗账号的utxo资源创建合约,验证的逻辑需要走账号的ACL控制
合约Method权限模型管理
- 智能合约:超级链中的一个具体的合约,属于某个账号
账号所属人员允许在账号内部署合约
账号所属人员可以定义合约管理的权限模型
设置合约方法的权限模型,合约内有一个权限表,记录:{ contract.method,permission_model}
合约命名规则:长度为4~16个字符(包括4和16),首字母可选项为[a-ZA-Z_],末尾字符可选项为[a-zA-Z0-9_],中间部分的字符可选项为[a-zA-Z_.]
权限系统¶
超级链权限系统主要实现两个功能:账号权限管理、合约权限管理
账号权限管理 账号的创建、添加和删除AK、设置AK权重、权限模型
合约权限管理 设置合约调用权限,支持2种权限模型:
背书阈值:在名单中的AK或Account签名且他们的权重值加起来超过一定阈值,就可以调用合约
AK集合: 定义多组AK集合,集合内的AK需要全部签名,集合间只要有一个集合有全部签名即可
访问控制列表(ACL)
如果把合约账号当作一家股份制公司,那么ACL便是公司股东投票的机制,ACL可以规定合约账号背后各“股东”账号的权重,只有当“股东”签名的权重之和大于设定阈值时操作才会有效地进行。
超级链中ACL配置格式如下:
1 2 3 4 5 6 7 8 9 10 | {
"pm": {
"rule": 1, # rule=1表示签名阈值策略,rule=2表示AKSet签名策略
"acceptValue": 0.6 # acceptValue为签名需达到的阈值
},
"aksWeight": { # aksWeight里规定了每个地址对应账号签名的权重
"AK1": 0.3,
"AK2": 0.3
}
}
|