Aragon DAO 智能合约一览

Valora ·
更新时间:2024-09-20
· 706 次阅读

近年来,区块链技术的快速发展催生了去中心化自治组织(DAO)。目前比较典型的DAO有The DAO、Steemit、Digix DAO、Aragon 等。其中建立在 Aragon上的智能合约系统被称为 AragonOS。

Aragon 其实是一个道平台,任何人都可以在上面创建和管理DAO。它通过注册Dapp的方式来扩展DAO的功能或者应用,目前已经提供了五个公共应用的示例实现,任何DAO都可以自己开发Dapp并注册用来扩展DAO。
本文主要列举Aragon用来创建和管理DAO这部分的框架合约(AragonOS),不包括测试合约。
AragonOS 使用 truffle构建工程,所有合约放在contracts目录下。

一、acl文件夹 acl/IACL.sol 一个接口,只定义了初始化和是否有权限这两个函数 acl/IACLOracle.sol 一个接口,只有一个是否能执行的函数 acl/ACLSyntaxSugar.sol 语法糖 就是快速将bytes32、uint、或者address转换后放入一个uint数组并返回 acl/ACLHelpers.sol 用来解码一些数据 二、common文件夹 common/IForwarder.sol 一个接口,用来进行Forwarder相关的判定 common/IForwarderFee.sol 一个定义forward费用的接口 common/Uint256Helpers.sol 将一个uint256转化为uint64的库,当溢出时会报错 common/TimeHelpers.sol 获得当前块高度和当前块创建时间,返回uint256和uint64两个版本 common/UnstructuredStorage.sol 一个库,使用内联汇编来获取或者设置某个地址的数据,根据数据类型分成多个方法 common/Initializable.sol 继承TimeHelper,初始化继承时间,语义上怪怪的。用来判断是否初始化和进行初始化,使用blockNumber判断,而不是平常使用一个变量判断(也许是因为有延时初始化功能) common/IsContract.sol 很简单的通过地址的代码长度用来决定是不是合约账号 common/Petrifiable.sol 使用uint256最大值来设置延时初始化的blockNuber,永远也不会达到,一般用来石化合约 common/Autopetrified.sol 在部署时石化Petrifiable合约实例,使之不能初始化 common/ConversionHelpers.sol 一个库,用来uint256[]和bytes 的相互转换 common/DepositableStorage.sol 读取或设置是否可以存款(发送ETH到某个合约) common/EtherTokenConstant.sol 用地址0代表eth,非地址0代表erc20代币 common/IVaultRecoverable.sol 一个接口,用来指明资产保险箱合约 common/VaultRecoverable.sol 用来转移资产(ETH和ERC20代币)注意该合约包含未实现方法,因此为一个抽象的合约(0.6.0才有abstract关键字),不能部署 common/SafeERC20.sol 一个用来安全转移erc20代币的库 common/ReentrancyGuard.sol 防止重入攻击,类似线程锁的方式,转移前设置变量为true,转移全部完成后设置变量为false comon/DelegateProxy.sol 委托调用并且返回执行环境 common/DepositableDelegateProxy.sol 向合约发送eth并进行验证和委托调用 三、 lib文件夹 lib/ens/AbstractENS.sol 以太坊上的域名系统(ENS)接口 lib/ens/ENS.sol ENS的实现 lib/ens/PublicResolver.sol 一个简单的使用ENS的实现 lib/math/Math.sol 一个进行比较的数学库 lib/math/SafeMath.sol 对两个uint256进行防溢出算术操作(除法其实没有用处,为了统一还是存在库中) lib/math/SafeMath8.sol 同上,适用于uint8 lib/math/SafeMath64.sol 同上,适用于uint64 lib/misc/ERCProxy.sol 用来定义ERC代理的一些常量和接口 lib/misc/Migrations.sol truffle自带的管理合约…



智能合约 dao

需要 登录 后方可回复, 如果你还没有账号请 注册新账号