Login
欢迎来到未来世界

您现在的位置是: 首页 > 计算机 > 区块链

区块链

区块链100讲:智能合约审计指南(区块链智能化合约)

区块链 加入收藏
下面要带大家了解的是区块链100讲:智能合约审计指南,希望能给网友您带来不错的体验。智能合约代码的审计,目前还不是技术社区内经常会讨论的主题。今年3月6日,发表在博客网站【SchneieronSecurity】上的一篇博客(原文链接:【原文中附有一篇专业的

下面要带大家了解的是区块链100讲:智能合约审计指南,希望能给网友您带来不错的体验。

智能合约代码的审计,目前还不是技术社区内经常会讨论的主题。

今年3月6日,发表在博客网站【Schneier on Security】上的一篇博客(原文链接:【https://www.schneier.com/blog/archives/2018/03/security_vulner_13.html】,原文中附有一篇专业的研究报告【Finding The Greedy, Prodigal, and Suicidal Contracts at Scale】)指出,目前在以太坊中,有89%的智能合约代码都或多或少存在安全漏洞/隐患,这显然是一个非常惊人的调查结果,对社区而言也是一个巨大的风险因素。

而随着智能合约的增多乃至未来可能的大规模发展,相信对各种合约代码的审计也将会变成一个专门的、专业的领域,并且是不能够、也不应该被忽视的。

本文译自Merunas Grincalaitis(一位以太坊开发者)于2017年9月18日发表在Medium上的文章,原文链接:【https://medium.com/@merunasgrincalaitis/how-to-audit-a-smart-contract-most-dangerous-attacks-in-solidity-ae402a7e7868】。

本文是作者结合自己所写的一份智能合约代码来讲述智能合约审计要点的技术文章,并包含了对Solidity语言可能遇到的几种危险攻击的介绍。

对于以太坊智能合约开发者而言有一定的参考和学习价值。

——译者你有没有考虑过如何审计一个智能合约来找出安全漏洞?你可以自己学习,或者你可以使用这份便利的一步步的指南来准确地知道在什么时候该做什么,并对合约进行审计。

我已经研究过很多智能合约的审计,并且我已经找到了从任何合约中提取所有重要信息的最常规步骤。

在本文中,你将会学到以下内容:生成对一个智能合约的完整审计报告所需的所有步骤。

作为以太坊智能合约审计人员需要了解的最重要的攻击类型。

应该在合约中寻找什么,和一些你不会在其他任何地方找到的有用的提示。

让我们直接开始审计合约吧:1如何审计一个智能合约为了教会你如何进行审计,我会审计我自己写的一份合约。

这样,你可以看到可以由你自行完成的真实世界的审计。

现在你也许会问:智能合约的审计到底是指什么?智能合约审计就是仔细研究代码的过程,在这里就是指在把Solidity合约部署到以太坊主网络中并使用之前发现错误、漏洞和风险:因为一旦发布,这些代码将无法再被修改。

这个定义仅仅是为了讨论目的。

请注意,审计不是验证代码安全的法律文件。

没有人能100%确保代码不会在未来发生错误或产生漏洞。

这仅仅是保证你的代码已被专家校订过,基本上是安全的。

讨论可能的改进,主要是为了找出那些可能会危害到用户的以太币的风险和漏洞。

好了,现在我们来看看一份智能合约审计报告的结构:免责声明: 在这里你会说审计不是一个具有法律约束力的文件,它不保证任何东西。

这只是一个讨论性质的文件。

审计概览和优良特性: 快速查看将被审计的智能合约并找到良好的实践。

对合约的攻击: 在本节中,你将讨论对合约的攻击以及会产生的结果。

这只是为了验证它实际上是安全的。

合约中发现的严重漏洞: 可能严重损害合约完整性的关键问题。

那些会允许攻击者窃取以太币的严重问题。

合约中发现的中等漏洞: 那些可能损害合约但危害有限的漏洞。

比如一个允许人们修改随机变量的错误。

低严重性的漏洞: 这些问题并不会真正损害合约,并且可能已经存在于合约的已部署版本中。

逐行评注: 在这部分中,你将分析那些具有潜在改进可能的最重要的语句行。

审计总结: 你对合约的看法和关于审计的最终结论。

将这份结构说明保存在一个安全的地方,这是你安全地审计智能合约时需要做的全部内容。

它将确实地帮助你找到那些难以发现的漏洞。

我建议你从第7点“逐行评注”开始,因为当逐行分析合约时,你会发现最重要的问题,你会看到缺少了什么,以及哪些地方应该修改或改进。

在后文中,我会给你展示一个免责声明,你可以把它作为审计的第一步。

你可以从第1点开始看下去,直到结束。

接下来,我将向你展示使用这样的结构完成的审计结果,这是我针对我自己写的一个合约来做的。

你还将在第3点中看到对于智能合约可能受到的最重要的攻击的介绍。

2赌场合约审计你可以在我的Github上看到审计的代码:https://github.com/merlox/casino-ethereum/blob/master/contracts/Casino.sol以下就是我的合约Casino.sol的审计报告:序言在这份智能合约审计报告中将包含以下内容:免责声明审计概览和优良特性对合约的攻击合约中发现的严重漏洞合约中发现的中等漏洞低严重性的漏洞逐行评注审计总结1、免责声明审计不会对代码的实用性、代码的安全性、商业模式的适用性、商业模式的监管制度或任何其他有关合约适用性的说明以及合约在无错状态的行为作出声明或担保。

审计文档仅用于讨论目的。

2、概述该项目只有一个包含142行Solidity代码的文件 Casino.sol 。

所有的函数和状态变量的注释都按照标准说明格式(即Ethereum Nature Specification Format,缩写为natspec,它是以太坊社区官方的代码注释格式说明,原文参考github:【https://github.com/ethereum/wiki/wiki/Ethereum-Natural-Specification-Format】,译者注)进行编写,这可以帮助我们快速地理解程序是如何工作。

该项目使用了一个中心化的服务实现了Oraclize API,来在区块链上生成真正的随机数字。

译者注:Oraclize是一种为智能合约和区块链应用提供数据的独立服务,官网:【http://www.oraclize.it】。

以上就是小编为您介绍的关于区块链100讲:智能合约审计指南的相关信息,本文到此结束。

图集详情底部广告位