网易首页 > 网易号 > 正文 申请入驻

6个简单的步骤来保护你的以太坊智能合约安全

0
分享至

6个简单的步骤来保护你的以太坊智能合约安全

以太坊使用 "智能合约",或建立在区块链技术上的可编程软件程序,为去中心化的应用程序(dApps)、不可伪造的代币(NFT)和去中心化的自治组织(DAO)提供动力。以太坊智能合约提供的丰富功能使web3开发者能够创建复杂的基于区块链的应用程序。

然而,智能合约的不稳定性增加了漏洞、bug和错误,随着加密货币市值达到数万亿美元,黑帽黑客正在寻找智能合约中可以利用的弱点。

在这篇文章中,我们将介绍智能合约安全的最佳做法,故障保护措施,以及用于加强智能合约安全的智能合约分析工具。

以太坊智能合约简介

以太坊智能合约是用Solidity编写的,这是一种类似于C++和Javascript的语言。以太坊智能合约在以太坊区块链上运行,其执行由以太坊虚拟机(EVM)管理--这是一台执行以太坊智能合约的虚拟超级计算机,并分布在世界各地的多个节点上。

以太坊智能合约的架构可能与其他合约不同。智能合约可以是功能有限的简单合约,也可以是具有多层次功能的复杂合约。

智能合约的4个好处

无论他们的预期设计如何,智能合约都提供了相同的好处。

1. 不变性

智能合约不能被轻易修改(除非它被预先编程),这使得它们可以抵抗未经批准的改动。一旦合同被验证并在区块链上存活,要改变或升级智能合同的代码需要很大的努力。

2. 信任

根据设计,智能合约在满足预定条件时自动执行一组指令。这发生在没有外部控制的情况下,所以参与的用户可以信任代码在没有人类中介的情况下工作。两个人可以在不信任对方的情况下进行交易,因为他们知道智能合约将充当一个公平的仲裁者。

3. 成本效益

智能合约与法律文书的结合,(智能法律合约)可以简化个人之间的交易,消除对中间人的需求。由于没有中间人的补偿,各方可以在执行和实施协议上花费更少。

4. 速度

每个智能合约都在条件性编程(即如果这样,那么那样)上运行。当合同的逻辑规则得到满足时,这些程序化的行动立即发生。因此,交易可以比传统系统更快发生。

保护以太坊智能合约的6种行之有效的方法

在区块链上运行的智能合约将为世界各地的用户改变治理、金融、物联网和许多其他行业。然而,由于开发人员必须考虑所有的安全挑战,智能合约的安全漏洞必须得到认真对待。

以下是web3开发者在以太坊和EVM兼容的区块链上构建dapp时必须采用的一些基本智能合约安全最佳实践。

1. 严格执行智能合约审计

在2022年,在没有安全审计的情况下部署智能合约应该是一种犯罪。即便如此,许多开发者仍在推出未经审计的智能合约。来自Certik的DeFi安全状况报告显示,大多数被利用的智能合约没有得到安全审计。

可以理解的是,聘请智能合约审计师的费用并不便宜。但正确的安全检查可以为你在接下来的日子里节省更多。在DeFi,数百万人在利用拙劣代码的弱点进行的黑客攻击中损失。

一个好的区块链安全审计师遵循一个成熟的审计过程,以发现智能合约代码中的缺陷,并发现在开发过程中未被注意到的错误。此外,他们可以在部署前对智能合约的修复和优化给出有用的建议。

2. 测试你的代码

测试、测试、再测试你的代码,以发现错误和其他漏洞。

严格的测试也许是确保智能合约在部署到主网后按预期执行的最简单和最有效的方法。

将智能合约部署在测试网络上,观察它是否有任何异常。这样,你就可以知道协议是否按照它应该的方式运行。

推荐用于测试Ethereum智能合约的测试网包括:

  • • Rinkeby
  • • Kovan
  • • Ropsten
  • • Truffle

需要测试网ETH吗?使用Alchemy的免费Rinkeby ETH龙头,开始测试你的合约。

运行单元测试来隔离单个代码片段

单元测试也是提高合约安全性的一个好主意。单元测试着眼于你的代码的单一部分,所以如果发生故障,你可以知道什么地方出错了。

在将每个新功能整合到智能合约之前,最好为其运行单元测试。记住,智能合约在本质上是不可改变的,如果以后出现漏洞,就不可能对代码进行修补。

3. 与同僚一起审查代码

如果你在一个团队中工作,确保每个成员都进行独立的代码审计并提供详细的反馈。单独的开发人员可能希望在整个开发过程中找到一个值得信赖的同事来同行审查他们的智能合约代码,以提高安全性。

4. 降低软件的复杂度

软件安全的最终规则是保持代码简单。代码中的复杂性越高,变量就越多,从而增加了失败的机会。

正如荷兰计算机科学家Edsger W. Dijkstra所说。"简单是可靠性的先决条件"。

这并不意味着你应该避免构建功能丰富的智能合约,然而,你应该在一开始就从简单的架构开始,并随着时间的推移使用干净的代码和熟悉的模式慢慢扩展功能。

5. 实施故障安全保护

编写Ethereum智能合约时的一条经验法则是 "为失败做准备"。无论你测试多少次,你都不可能涵盖所有可能影响智能合约的错误。因此,为你的Ethereum智能合约设计一个故障安全机制是必要的。

故障安全模式对于限制恶意攻击的损害是很有用的。它们被设计为一旦检测到异常的智能合约活动就会触发。

智能合约故障安全保护的4个例子

兼容EVM的智能合约的故障安全保护的例子包括。

1. 短路器

当发现错误和漏洞时,"短路器 "可以用来阻止功能的执行。对于短路器,你有两个选择来激活它们。

  • • 给予受信任的管理员以触发断路器的权限
  • • 对短路机制进行编程,使其在满足预设条件后运行。

因为智能合约是自动化的,当错误发生时,短路器会限制操作。

2. 速度缓冲器

减速器是一种减缓恶意行为的防故障机制,尽管它不会阻止攻击,但减速器给管理员足够的时间来立即采取纠正措施。

加速器的一个主要例子来自于2016年臭名昭著的DAO黑客攻击。该程序确保在27天后才有可能从DAO中提取资金,这使得资金一直在智能合约中,直到开发者能够取回它们。

3. 速率限制

速率限制可以控制特定时间范围内调用函数的频率,提供了一个权宜之计,以防止重复调用函数以耗尽锁定的资金(如重入攻击)、发行大量ETH代币或执行多次提款的漏洞。

此外,合同层面的速率限制可以用来限制在一个时间间隔内发行代币的数量。

鉴于不良行为者在短时间内发行大量代币的漏洞数量,速率限制是加强智能合约安全的良好预防措施。

4. 余额限制

余额限制通过限制单个智能合约中可锁定的ETH总量来降低智能合约风险。

余额限制将监测智能合约中持有的资金余额。一旦达到阈值,该机制会触发自动拒绝后续付款。

如果你正在推出一个新的智能合约,在你对合约的安全性有信心之前,余额限制可能是一个很好的预防性安全措施。

6. 设计安全的访问控制机制

访问控制机制决定了谁可以管理和改变合约的某些元素,它是你的Ethereum智能合约架构的一个关键路径。

如果错误的人得到所有权或管理权限,他们可以重新编程合同,执行恶意交易。

为了防止错误的人获得管理权限,确保敏感功能需要多级授权才能访问。

Web3开发者应该知道的4个智能合约安全工具

智能合约的安全性是很严肃的。这里有一些分析工具,可以帮助你保护你的智能合约,防止被利用,bug,和漏洞。

1. Octopus

Octopus是一个高功能的分析工具,用于分析智能合约的字节码,深入了解内部行为。它与建立在流行区块链上的智能合约兼容,如NEO、比特币,当然还有以太坊。

2. Oyente

Oyente是一个自动化的智能合约审计工具,用于识别常见的智能合约安全漏洞。它包括一个验证器、资源管理器、CoreAnalysis工具和CGF构建器。每个组件都执行一个关键功能;例如,资源管理器运行智能合约,CoreAnalysis检测所产生的输出中的任何问题。

3. Mythril

Mythril是一个由ConSensys建立的智能合约安全工具,对测试以太坊虚拟机(EVM)字节码很有用。它使用污点分析、SMT解算和符号执行的组合来发现智能合约代码中的漏洞。

4. Securify

Securify是一个由Ethereum基金会支持的智能合约漏洞扫描器。这个流行的以太坊智能合约扫描器可以检测到多达37个智能合约漏洞,并实现了针对上下文的静态分析,以获得更准确的安全报告。

用智能合约安全的最佳实践保护你的下一个项目

当正确实施时,智能合约技术可以被调整以支持各种使用情况。然而,智能合约是代码,由人类编写,有时并不完美。

作为一个智能合约的开发者,你在编写代码时必须遵循安全的最佳实践,包括运行详细的安全分析,利用多种安全分析工具和资源,获得同行评审,简化代码结构,并实施故障安全机制。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
全红婵也没想到,拆伙不到1年,陈芋汐已和她走上完全不同的道路

全红婵也没想到,拆伙不到1年,陈芋汐已和她走上完全不同的道路

一娱三分地
2026-03-02 14:45:22
拜托各位家长,请不要频繁和孩子分享3件事情

拜托各位家长,请不要频繁和孩子分享3件事情

凌晨妈妈
2026-03-23 10:25:19
日本游泳队确定亚运名单,多位年轻选手对汪顺覃海洋夺金形成威胁

日本游泳队确定亚运名单,多位年轻选手对汪顺覃海洋夺金形成威胁

体娱一家亲
2026-03-23 21:52:16
霍尔木兹海峡,重磅!特朗普、伊朗各执一词!美股爆发,黄金、白银突变!

霍尔木兹海峡,重磅!特朗普、伊朗各执一词!美股爆发,黄金、白银突变!

证券时报e公司
2026-03-23 22:16:44
俄罗斯装钱的麻袋都不够了,每天多挣500亿,四年战争,一朝回血

俄罗斯装钱的麻袋都不够了,每天多挣500亿,四年战争,一朝回血

健身狂人
2026-03-20 19:49:55
这位开国上将,55年授衔后长期不受重用,混的还不如一些中将少将

这位开国上将,55年授衔后长期不受重用,混的还不如一些中将少将

大运河时空
2026-01-23 09:30:03
油车降费电车缴费,2026年公路税费大改,你的车一年到底亏没亏?

油车降费电车缴费,2026年公路税费大改,你的车一年到底亏没亏?

番外行
2026-02-26 19:43:18
13辆消防车出动!中山坦洲一建筑物发生火情

13辆消防车出动!中山坦洲一建筑物发生火情

南方都市报
2026-03-23 18:06:19
伊朗消息人士:已准备对关键基础设施遭袭作出强力回应

伊朗消息人士:已准备对关键基础设施遭袭作出强力回应

财联社
2026-03-24 01:05:11
中国篮球又出丑闻!26岁明星球员桃色实锤,郭士强做的太对了

中国篮球又出丑闻!26岁明星球员桃色实锤,郭士强做的太对了

李橑在北漂
2026-03-11 19:48:45
真的佩服我们公司的主管!

真的佩服我们公司的主管!

太急张三疯
2026-01-16 06:28:07
这一次的伊朗战争,是军事史上的里程碑!

这一次的伊朗战争,是军事史上的里程碑!

从前这些事
2026-03-11 07:32:06
够狠!乌军无人机指挥官放话:要把俄军活活“放血”流干

够狠!乌军无人机指挥官放话:要把俄军活活“放血”流干

老马拉车莫少装
2026-03-24 00:01:04
“常州首富、LED大王”接连被查:实控人留置潮,下一个轮到谁?

“常州首富、LED大王”接连被查:实控人留置潮,下一个轮到谁?

正经社
2026-03-23 15:40:35
前英超裁判谈曼联对阵伯恩茅斯比赛中的争议判罚;阿兰·希勒:裁判搞砸了曼联对阵伯恩茅斯的比赛

前英超裁判谈曼联对阵伯恩茅斯比赛中的争议判罚;阿兰·希勒:裁判搞砸了曼联对阵伯恩茅斯的比赛

MUREDS
2026-03-23 23:49:33
章子怡脸上那个“毛病”,竟是20年前被一个老外传染的。

章子怡脸上那个“毛病”,竟是20年前被一个老外传染的。

西楼知趣杂谈
2026-03-21 20:56:36
忌惮伊朗导弹“打到伦敦”?英国核动力潜艇抵达阿拉伯海,得令即开火

忌惮伊朗导弹“打到伦敦”?英国核动力潜艇抵达阿拉伯海,得令即开火

上观新闻
2026-03-23 04:36:05
网红富二代王政源被判入狱两年半,罚1500万,央视财经9分大制作

网红富二代王政源被判入狱两年半,罚1500万,央视财经9分大制作

裕丰娱间说
2026-03-23 08:55:04
乌克兰攻入俄罗斯领土布良斯克!摧毁S400等多套防空系统

乌克兰攻入俄罗斯领土布良斯克!摧毁S400等多套防空系统

项鹏飞
2026-03-23 20:23:02
上海老破小成交量暴增!中产正在收缩

上海老破小成交量暴增!中产正在收缩

童童聊娱乐啊
2026-03-23 20:32:26
2026-03-24 03:16:49
财圈小二
财圈小二
个人爱好,分享财经与互联网
100文章数 11关注度
往期回顾 全部

科技要闻

裁掉2万多名员工后,扎克伯格对自己下手了

头条要闻

特朗普:伊朗还有最后一次机会

头条要闻

特朗普:伊朗还有最后一次机会

体育要闻

不敢放手一搏,你拿什么去争冠?

娱乐要闻

钟丽缇就女儿考拉争议道歉:女儿还小

财经要闻

市场见底了吗?谁在抛售?机构火线解读

汽车要闻

东风雪铁龙新凡尔赛C5X上市 官方一口价11.37万起

态度原创

游戏
艺术
亲子
本地
公开课

Xbox合作伙伴直播公布 3月27日早上2点举行

艺术要闻

砸10亿!苏宁易购总部大楼,张近东雄心的象征

亲子要闻

牛奶引起咳嗽,真正原因是什么?好多小孩,喝奶粉容易咳嗽,这是为啥

本地新闻

这里是宝鸡 嫽滴很!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版