阅读时间: 6 分钟
DAO 的创建是 web3 独有的,它利用区块链的能力来管理协议而不涉及中心化实体。
DAO 主要围绕两个方面——加密和分布式存储。 这赋予了他们根据社区成员的集体决定运行的能力。
与任何 Web3 协议一样,DAO 协议也存在安全问题。
本文旨在提出 DAO 的基础架构和改进其智能合约安全性以抵御攻击的指南。
DAO 的目的
以太坊一直享有成为有史以来第一个可编程区块链的荣誉。 通过允许开发人员玩代码,它在实现真正的去中心化方面发挥着巨大作用。
在这方面, DAO 智能合约 旨在培养 链上治理
” data-gt-translate-attributes=”[{“attribute”:”data-cmtooltip”, “format”:”html”}]”>链上治理证明了社区纯粹运营区块链的事实。
就像任何其他智能合约一样,DAO 合约基本上旨在自动化流程并在满足预定义条件时执行操作。
为了举例说明,请考虑一个 ERC-20 代币合约。 它基于ERC-20标准创建,包含合约地址、代币供应量、代币名称、代币转移条件等信息。
当满足设定的规则时,令牌的操作被执行。 同样,DAO 合约被编码以指示组织的运作,例如根据成员的投票提案决定资金分配。
例如,DAO 有内置的国库。 这些资金在小组批准后使用,没有任何单一机构有权执行任何计划。
做出与项目有关的关键决策的投票提案可确保听到每个参与者的声音,从而提高链上活动的信任度和透明度。
组织活动的管理权因协议而异,这完全取决于 DAO 编码的完成方式。 因此,在注册任何 DAO 之前,请务必注意用户对协议的管理权限。
设置 DAO 智能合约的步骤
的力学 链上治理
” data-gt-translate-attributes=”[{“attribute”:”data-cmtooltip”, “format”:”html”}]”>链上治理是通过一组合约执行的——token、governor 和 timelock 。让我们了解一下他们每个人的角色。
标记: 代币决定社区成员参与的投票权 链上治理
” data-gt-translate-attributes=”[{“attribute”:”data-cmtooltip”, “format”:”html”}]”>链上治理。代币合约确保余额经过验证以收回权力,并允许参与者表达他们对治理提案的选择。
总督: 治理者合约的编码条件包括向代币持有者分配权力、可接受的代币类型、论坛所需的投票数等。 但是,开发人员可以使用有关他们希望合约如何执行的功能细节进行编码。
此外,州长合约还在代码中包含了投票延迟和投票提案的细节。 它的目的是指示投票提案开放多长时间供参与者投票。
时间锁: Timelock 方面涉及建议角色、执行者角色和管理员角色的 AcessControl 设置。 将时间锁组件与治理系统集成,可以让参与者在不同意决定的情况下自由离开。
关于 DAO 安全恐惧的高级视图。
DAO 对智能合约的依赖使他们对治理投票和资金维护负责。 这些元素中的每一个都有其自身的安全问题; 让我们在下面展开它们。
智能合约中的安全问题
让我们回顾一下著名的“DAO 垮台”。主要原因是 DAO 代码中的错误。黑客能够利用该漏洞并通过以下方式从合约中提取资金: 递归调用
” data-gt-translate-attributes=”[{“attribute”:”data-cmtooltip”, “format”:”html”}]”>递归调用。
该合约持有12.7万个以太币,其中黑客利用合约漏洞窃取了3.6万个以太币。
这一事件清楚地表明需要更多的 DAO 安全经验和实验。 虽然 DAO 因其创新而大受赞誉,但代码质量造成的损害更大。
此外,智能合约的编码应该是完全透明的,以确保以后没有任何功能会变成错误。
治理的安全问题
黑客可以通过多种方式侵入协议的治理。 首先,去中心化通知是一种方式,如果黑客可以阻止通知,他们就可以引入其他 DAO 成员不会注意到的恶意提议。
接下来是要求多通话交易的提议。 如果提案没有被 DAO 审查或审计,攻击者可以使用它们来产生复杂的结果。
错误的阈值和不适当的时间锁会导致不良活动的可能性。 闪电贷是治理安全的另一个问题。 攻击者可以借用大量代币,赋予他们推动提案的多数权力。
带有恶意的提议引发了 严重的安全问题 关于协议中实施的更改。 AAVE 和 Compound 过去曾遭受过此类黑客攻击。
执行的安全问题
MakerDAO 于 2017 年在以太坊网络中推出,表现良好。 直到 2020 年市场崩盘,当时以太币的价格低至 50%。 它是 MakerDAO 中使用的最重要的抵押品,价格暴跌引发了大量流动性。
MakerDAO 的设计初衷并不是为了处理会导致更大财务损失的巨额清算。 虽然这里的代码很强大,但错误在于执行清算机制。
从那时起,DAO 机制的执行也被添加到其他现有的安全问题列表中。
DAO 智能合约审计清单
安全是首要的方面 链上治理
” data-gt-translate-attributes=”[{“attribute”:”data-cmtooltip”, “format”:”html”}]”>链上治理,以保护权力不落入坏人之手。因此,从安全的角度来看,让我们找到开发强大的 DAO 合约的指南。
低级调用: 必须谨慎处理对获取任意数据的任意合约的调用。
处理低级调用很棘手,因为它可能会打开重入攻击向量的机会。 因此,验证调用的成功条件然后处理返回的数据始终是一个好习惯。
ETH持有量: 根据审计结果,在与治理相关的合约中,ETH 处理不当的案例很多。 因此,建议在治理合约需要处理 ETH 时确保发送 ETH 的方式。
另一个需要注意的预防措施是使用允许批量调用的 msg.value。 这种模式很可能会出错。
避免使用闪电贷: 想要影响治理决策并发起攻击的剥削者依赖闪电贷。 他们通过闪电贷获得治理投票,通过代币持有来操纵治理决策。
因此,您可以避免测量当前区块的投票权,因为为获得治理权而进行的闪贷会使系统面临风险。
定期更新: 即使合约不一定有任何缺陷,你也应该经常检查治理代币的市场并相应地调整门槛。 否则,它将允许恶意行为者接管决定。
确保在迁移和升级治理系统时注意细节。 曾经有过类似 Uniswap 发生的例子。 它向州长 Bravo 的迁移启动了一个合同缺陷,该缺陷暂时停止了治理决策。
使用时间锁合同包括延迟: 延时行动使社区能够在协议生效之前审查协议的变化。 这些时间延迟可以通过 Timelock 合约来实现。
与协议相关的漏洞: 用于对协议进行编码的软件适用于可能彼此不同的特定业务逻辑。 在该系统中执行更改时出现的问题也是如此。
事实上,由于批准了一项操纵性的社区提案,复合协议遇到了问题。 因此,由同行和独立方对代码进行彻底审查总是好的,以确保合约的强度和健全性。
QuillAudits 在 DAO 智能合约审计中的卓越表现
在当今时代,为了使系统能够完全自我运行,许多项目正在寻找嵌入的方法 链上治理
” data-gt-translate-attributes=”[{“attribute”:”data-cmtooltip”, “format”:”html”}]”>链上治理。因此,该领域正在根据社区需求迅速发展和繁荣。
攻击也变得越来越复杂,这既具有挑战性又成本高昂。 因此,有必要确保流程到位并严格遵守代码。 羽毛笔审计 进行广泛的研究并审核代码以排除任何潜在的陷阱并保护项目免受恶意活动的侵害。
16 观点