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

    你可能感兴趣的文章
    Problem F: 质心算法
    查看>>
    Problem N HDU 2612 Find a way (两次BFS求最值)
    查看>>
    Process /usr/libexec/gdu-notification-daemon was killed by signal 6 (SIGABRT)
    查看>>
    process.env.VUE_APP_BASE_API 获取不到
    查看>>
    Process.run() 和 Process.start() 之间的区别
    查看>>
    Processes
    查看>>
    Processing通过编程实现艺术设计_实现艺术和现实的交互---数据设计分析002
    查看>>
    ProcessOnLoading
    查看>>
    SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成
    查看>>
    PROFINET 模拟器使用教程
    查看>>
    Program type already present: android.support.v4.widget.EdgeEffectCompat
    查看>>
    PyTorch中文版官方教程来啦(附下载)
    查看>>
    Progress Kemp LoadMaster 远程命令执行漏洞复现(CVE-2024-1212)
    查看>>
    Project configuration is not up-to-date with pom.xml. Run Maven->Update Project
    查看>>
    Project Euler 15 Lattice paths
    查看>>
    Project Euler 48 Self powers( 大数求余 )
    查看>>
    Project Euler Problem 12: Highly divisible triangular number
    查看>>
    ProjectEuler 2
    查看>>
    projection介绍及EPSG:4326和EPSG:3857的投射转换
    查看>>
    project打开文件时,显示无法识别此文件格式?
    查看>>