博客
关于我
Aragon DAO 权限分析
阅读量:795 次
发布时间:2019-03-25

本文共 1083 字,大约阅读时间需要 3 分钟。

Aragon DAO权限结构简要分析

在Aragon DAO中,权限管理是确保Dapp协同工作的重要环节。本文将从权限分类、实现、初始化及管理等方面,对Aragon DAO的权限结构进行简要分析,试图为开发者提供一些实用的参考。

一、权限分类

在Aragon DAO中,权限主要分为两个层面:角色权限与管理权限。

角色权限指的是某一Dapp中特定功能的执行权限,而管理权限则负责对Dapp中角色权限的配置与管理。例如,若有合约A-B-C-D,合约A包含一个写数据的方法f(),用来更改其状态变量X:

  • 调用A.f()更改X的权限,需提供B地址,这属于角色权限
  • 为A.f()设置调用权限为C地址,这由D负责,属于管理权限
  • 需要注意的是,Aragon DAO系统要求默认管理权限由投票合约负责,所有管理操作需通过投票机制完成。

    二、权限实现

    Aragon ACL合约采用map结构存储权限信息。主要包括以下几个方面:

  • 权限哈希计算:通过roleHash函数定义角色权限hash值,其输入包括Dapp地址和操作描述
  • 权限参数存储:将权限参数通过编码存入数据库
  • 管理权限映射:将管理权限委托存储在对应的地址中
  • ACL合约核心逻辑位于ACL.sol,主要函数包括:

    • 初始化函数:设置初始权限创建者,确保系统安全
    • _createPermission:为实例创建权限
    • setPermissionManager:设置Dapp管理权限
    • Revocation相关函数:管理角色权限
    • Query函数:提供权限查询接口

    三、权限初始化

    ACL合约初始化过程为:

  • 存储初始块号,确保单次初始化
  • 检查调用来源,只允许核心 kernel合约
  • 设置初始权限,配置默认管理员
  • 初始化过程重要,因为它确定了系统管理框架。

    四、权限管理

    ACL合约提供丰富的权限管理接口,涵盖:

    • createPermission:设置未管理权限的Dapp
    • grantPermission:赋予已管理权限的Dapp
    • revokePermission:取消特定权限
    • setPermissionManager:更换管理权限
    • removePermissionManager:移除管理权限
    • createBurnedPermission:销毁未用的权限
    • Query接口:支持权限检查和信息查询

    本文仅描述关键管理方法,对其他内部函数不做详细说明。

    总结来说,Aragon DAO权限结构设计颇为完善。通过角色与管理权限的分类设置,实现了灵活的Dapp协同,同时确保了系统安全性。对于其他DAO系统的设计或优化,这一机制可提供重要参考。

    转载地址:http://itpyk.baihongyu.com/

    你可能感兴趣的文章
    mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
    查看>>
    mysql中json_extract的使用方法
    查看>>
    mysql中json_extract的使用方法
    查看>>
    mysql中kill掉所有锁表的进程
    查看>>
    mysql中like % %模糊查询
    查看>>
    MySql中mvcc学习记录
    查看>>
    mysql中null和空字符串的区别与问题!
    查看>>
    MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
    查看>>
    MYSQL中TINYINT的取值范围
    查看>>
    MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
    查看>>
    Mysql中varchar类型数字排序不对踩坑记录
    查看>>
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>