从角色库访问控制到区块链上的角色和权限访问控制

毛里西奥·费尔南德斯(Mauricio Fernandez)区块链上的角色和权限访问控制

阅读了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函数。

我鼓励您在实现用例时出于任何目的部署和自定义它。

你可能还喜欢