从角色库访问控制到区块链上的角色和权限访问控制
区块链上的角色和权限访问控制
阅读了Hackernoon的Alberto CuestaCañada的精彩文章“以太坊区块链的基于角色的访问控制”。
我决定接受他的建议并扩展Alberto的RBAC智能合约实施中的功能,这不是一件容易的事,但是很高兴能进一步了解与数据结构(映射,数组,简单)相关的实体复杂性的更多细节列表…)。
过去,我一直致力于为客户开发概念证明,曾遭受过语言的缺点,但是却很难找到能以一种易于理解的方式来解释事物的人。在这方面,朱利安·克莱帕奇(Julien Klepatch)和他的YouTube频道对我来说非常有用。
花时间听了讲解,并在视频和Alberto的RBAC智能合约代码之间来回移动;显然,我想开发一些功能,这些功能允许为地址分配权限,从而扩展了对按角色分组的地址的精细控制。
需要对众所周知的实体模式进行进一步研究,发现以下内容非常有用:
用结构映射
具有结构和功能的映射的模板。
长处
- 通过唯一ID随机访问
- 身份唯一性的保证
- 将数组,映射,结构包含在每个“记录”中
弱点
- 无法枚举键
- 无法计算按键
- 需要手动检查以区分默认值和明确的“全0”记录
带有索引的映射结构
具有索引和功能的映射的模板。
长处
- 通过唯一的ID或行号随机访问
- 身份唯一性的保证
- 将数组,映射和结构包含在每个“记录”中
- 清单保持申报单
- 计数记录
- 枚举编号
- “软”通过设置布尔值来删除项目
弱点
- 名单的增长不受控制
具有启用删除功能的索引的映射结构
具有启用了删除的索引和功能的映射结构的模板。
长处
- 通过唯一的ID或行号随机访问
- 身份唯一性的保证
- 将数组,映射和结构包含在每个“记录”中
- 计数记录
- 枚举编号
- 使用删除功能以逻辑方式控制活动列表的大小
弱点
- 稍微增加了代码复杂度
- 存储成本略高
- 密钥列表本质上是无序的
具有唯一ID的结构数组
具有唯一ID和功能的结构数组模板。
长处
- 按行号随机访问
- 身份唯一性的保证
- 将数组,映射和结构包含在每个“记录”中
弱点
- 无法通过ID随机访问
- 名单的增长不受控制
现在,道路已经清晰了,并实现了我在Alberto的RBAC智能合约中设想的功能;将其放到名为RPAC.sol的新智能合约中
Struct Permission和iassgined,getCounterpermissionlist,newPermissionset,updatePermissions函数,retrieveaccountpermissions,deletePermission函数。
我鼓励您在实现用例时出于任何目的部署和自定义它。