NEST 社区开发者 YolkLi 分享 DeFi 开发中需要注意的安全问题,安比实验室郭宇聊到智能合约安全的形式化验证。 原文标题:《Math Show #007 - 深入浅出,如何确保你的 DeFi 资金安全》 6 月 23 日晚 7 点,麦子钱包举办了 Math Show 的第 7 期,有幸邀请了 NEST 社区开发者 YolkLi 和 安比实验室 郭宇,特邀主持人链闻研究总监 潘致雄,带大家「深入浅出,如何确保你的 DeFi 资金安全」,以下是当晚的精彩撰录。 主持人:想必大家对最近 DeFi 最近的火热程度有目共睹,除了带了的财富效应之外,大家其实最核心还是最关注「DeFi 资金」的安全性,那么我们先请第一位嘉宾 NEST 社区开发者 YolkLi 给我们带来的分享。 YolkLi:今晚和大家分享一下日常开发中的一些经验。 代码安全智能合约的开发和传统的开发不同,因为区块链的操作消耗和去中心化特点,代码的质量和安全显得更为突出。大概有三点建议: 1、DeFi 是建立在区块链上的应用,公链(联盟链)底层逻辑或者机制的改变会对 DeFi 应用产生影响,比如 Gas 消耗由于某次改动上升了,导致某个 DeFi 的套利空间不存在了。我们需要关注区块链的发展,尤其是底层的升级对 DeFi 安全性的影响。 2、区块链上的操作是以交易的方式进行的,要保证交易的原子性,交易中所有的操作和影响都要在代码逻辑的覆盖范围内。 3、安全审计,DeFi 面向市场前必须要经过安全审计这步,这是对用户和投资者负责。NEST 目前也在和安比实验室进行 NEST3.0 的审计工作。 跨合约安全很多业务场景需要用到其他的合约接口,前段时间也出现了很多问题,比如 ERC20 的假充值,ERC 777 重入攻击等。 合约的组合会破坏一笔交易的原子性。举个例子: 一张「竞猜」合约:转入 1 ETH 参与竞猜,正确返回 2 ETH ,错误 1 ETH 就损失掉了。假设竞猜过程公平公正,代码也是安全的。我们理想的逻辑是调用者转入 1 ETH 并且返回结果,赚 1 ETH 或者损失 1 ETH。正常调用没有问题,但是如果用另一张合约调用,并且在合约中实现「没有返回 2 ETH 就交易失败」的逻辑,成本只有一点 gas 费,但是永远不会输。在一段正常逻辑外加了一段新的逻辑,游戏就变得不公平了。 当自己的合约内部用到多张合约组合的结构,需要明确整个交易逻辑的闭环,确保没有额外的方法或者权限可以影响交易逻辑。 (责任编辑:admin) |