博客
关于我
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/

    你可能感兴趣的文章
    npm前端包管理工具简介---npm工作笔记001
    查看>>
    npm包管理深度探索:从基础到进阶全面教程!
    查看>>
    npm升级以及使用淘宝npm镜像
    查看>>
    npm发布包--所遇到的问题
    查看>>
    npm发布自己的组件UI包(详细步骤,图文并茂)
    查看>>
    npm和package.json那些不为常人所知的小秘密
    查看>>
    npm和yarn清理缓存命令
    查看>>
    npm和yarn的使用对比
    查看>>
    npm如何清空缓存并重新打包?
    查看>>
    npm学习(十一)之package-lock.json
    查看>>
    npm安装 出现 npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! 解决方法
    查看>>
    npm安装crypto-js 如何安装crypto-js, python爬虫安装加解密插件 找不到模块crypto-js python报错解决丢失crypto-js模块
    查看>>
    npm安装教程
    查看>>
    npm报错Cannot find module ‘webpack‘ Require stack
    查看>>
    npm报错Failed at the node-sass@4.14.1 postinstall script
    查看>>
    npm报错fatal: Could not read from remote repository
    查看>>
    npm报错File to import not found or unreadable: @/assets/styles/global.scss.
    查看>>
    npm报错TypeError: this.getOptions is not a function
    查看>>
    npm报错unable to access ‘https://github.com/sohee-lee7/Squire.git/‘
    查看>>
    npm淘宝镜像过期npm ERR! request to https://registry.npm.taobao.org/vuex failed, reason: certificate has ex
    查看>>