构建智能合同安全审计环境|火星技术站

< p >如果一个工人想做好工作,他必须首先运用他的技能。只有当他知道如何为智能合同中的安全漏洞的实战实践构建环境时,他才能更好地恢复合同漏洞。

本文主要介绍以太网广场智能合同安全漏洞实验演练所需的工具和环境,以方便后续漏洞实战操作。

在阅读本文之前,您应该了解一下区块链、以太网广场和智能合同在第一部分,本文简要介绍了相关内容

基础知识复习 对区块链的快速了解

区块链技术是一种新的分布式基础设施和计算范例,它使用区块链数据结构来验证和存储数据,使用分布式节点一致性算法来生成和更新数据,使用加密技术来确保数据传输和访问的安全性,并使用由自动化脚本代码组成的智能契约来编程和操作数据

简而言之,区块链是一个分散的分布式分类账数据库

区块链网络传递价值信息,解决信任问题

合同的概念

什么是以太网广场

以太网是基于区块链技术的分散式应用平台它允许任何人在平台上构建和使用通过区块链技术运行的分散应用程序。

以太网平台封装了底层的区块链技术,使区块链应用开发者可以直接基于以太网平台进行开发。只要他们专注于开发应用逻辑的智能契约,开发难度就可以大大降低。

以太网和比特币的最大区别在于以太网有智能合同的概念比特币是一种数字现金价值商店,以太网广场不仅支持数字现金,还支持智能合同。

如果您想更多地了解什么是以太网通道,您也可以参考另一篇文章:什么是以太网通道-以太网通道开发介绍指南(https://learnlockhair.cn/2017/11/20/whatiseth/)

什么是智能合同

那么什么是智能合同?运行在以太网上程序被称为智能合同,它和其他程序一样,是代码和数据(状态)的集合

合同的概念

intelligent contract是一个事件驱动的、有状态的计算机程序,运行在一个可复制的、共享的账簿上。当满足某些条件时,智能合同将自动执行。一旦合同被部署,它就不能被修改,不能在合同被执行后被撤销,并且所有的执行事务都可以被跟踪。

智能合同非常适合需要高度信任、安全性和持久性的应用场景,例如:数字现金、数字资产、投票、保险、金融应用、市场预测、财产所有权管理、物联网、对等交易等。

区块链是一个分散的系统,存在于所有许可方之间。智能合同消除了对中间人的需求,这种需求会导致传统系统中当事人之间的冲突

合同的概念

如果您想进一步了解智能合同的原理,还可以参考另一篇文章:智能合同操作原理(https://learn lockhair . cn/2018/01/04/understanding-smart-contracts/)

为智能合同中的安全漏洞构建实用环境

目前,Remix是第一个开发智能合同的集成开发环境。混搭是一种基于浏览器的实体集成开发环境,是以太网中智能合同的编程语言。强烈建议新手开发人员使用Remix在线集成开发环境(HTTPS://REMIX.Ethereum.org/)进行开发,而不是在本地安装Solidity。

如果您想要构建自己的本地开发环境,您可以阅读另一篇文章:构建智能合同开发环境混合集成开发环境及其使用(https://learnblockchain.cn/2018/06/07/remix-ide/)

我们需要在实战中开发和测试智能合同的安全漏洞。如果我们通过Remix在线集成开发环境来实现,根据Remix集成开发环境的选项,有不同的方法,如下图所示:

合同的概念

混合集成开发环境有三个环境选项:

Javascript虚拟机是Remix中的内置虚拟机,提供与以太网虚拟机相同的合同部署和操作功能。这相当于在记忆中模拟一个区块链。如果选择了Javascript虚拟机模式,则调试合同。

Injected Web3主要由插件使用,它与元掩码一起,可以轻松地将智能合同部署到以太网测试网络或主网络。

网络3提供商,将Remix连接到指定的以太网节点,例如通过安装以太网客户端geth在本地构建的私有链节点

以下分别从以上三种模式阐述了智能合同安全漏洞实战环境的构建,以方便智能合同漏洞的后续实战演练。

本文中使用的可靠性开发也将基于在线混合集成开发环境。

Javascript虚拟机

Javascript虚拟机模式也是最简单的方式,它可以直接使用在线的混合集成开发环境来开发、编译、部署、调用、测试和调试智能合同。它非常适合初学者练习,如下图所示:

合同的概念

这里不再重复使用特定的混合集成开发环境

,但是可以移动正式的混合文档:https://remix-ide.readthedocs.io/en/latest/#

注入的网络3

Injected Web3主要由插件使用,它与元掩码一起,可以轻松地将智能合同部署到以太网测试网络或主网络。

在这种模式下,您可以使用remix+meta mask+my therwallet模式来开发和部署智能合同。这是最简单也是最常用的方法。您也可以使用块菌+Infura,一种工程高级开发部署方法。

不需要引入混音(http://remix.ethereum.org );

元掩码(HTTPS)是一种在谷歌浏览器Chrome上使用的插入式以太网钱包。钱包不需要下载,只需要在谷歌浏览器中添加相应的扩展程序。它非常轻便,使用方便。元蒙版详细图形教程:https://www.jianshu.com/p/7ea707978dc5

myether wallet(https://www.myetherwallet.com)或简称MEW wallet是最著名的以太网钱包之一。水电部钱包是一个基于网络的服务,允许你控制你的钱。它用于安全地存储、发送和接收以太网和ERC 20令牌,并与智能合同交互这项服务为用户提供了一个地址(公共地址),在这里他们可以从任何人那里获得硬币和代币。它还为用户提供了通过私钥(秘密密码)发送硬币的快捷方式

Infura(https://infura.io/)是一个允许您的dApp快速访问以太网网关的平台。不需要在本地运行以太网网关节点。它后面是一个负载平衡的API节点集群使用它的好处是你永远不必担心连接节点的故障,而Infura会很好地管理这一切。

块菌(suite.com)是一套基于以太网的Solidity语言开发框架基于Javascript本身以太网客户端已经通过一系列命令进行了深度集成、开发、测试和部署。块菌-以太网坚固编程语言开发框架使用指南(HTTPS://truffle.tryblockchain.org/index.html)

下面描述了如何通过简单的混合+元掩码+髓鞘的方法来开发、部署和调用合同。请在启动前将元掩码钱包插件安装到浏览器。

在这里使用了一个简单的实智能测试合同:

9年实用主义稳健^0.4.0;

199

合同简单存储{

uint存储数据;

功能集(uint x)公共{

StoredData = x;

}

函数获取公共常量返回(uint){

返回storedData

}

}

将合同写入混合集成开发环境编辑器并完成编译

合同的概念

然后在元掩码中选择测试网络并申请测试以太网,因为我们在将合同部署到以太网测试网络时还需要测试以太网处理费用,所以部署到以太网主网络将真正花费以太网的金钱和金钱

合同的概念

在测试网络中申请测试ETH

合同的概念

然后点击通过混合集成开发环境部署,此时弹出元掩码交易确认,表明有必要测试以太网

合同的概念

在成功部署

之后,我们可以在测试网络中看到我们的事务哈希,在Remix IDE的控制台窗口中看到我们的契约。

合同的概念

此时可以通过Remix IDE直接调用部署的合同,或者通过myetherwallet调用任何合同。进入my therwallet网站后,您需要选择与my therwallet互动的方式。在这里,我们选择元掩码,然后我的钱包将与元掩码建立连接

合同的概念

我们在部署后输入合同地址,然后输入合同的ABI,然后我们可以直接调用我们部署的合同。

合同的概念

调用契约,如图所示,我们将x的值设置为2,然后获取x的值并将结果返回到2

合同的概念

合同的概念

网络3提供商

网络3提供商,将Remix连接到指定的以太网节点,例如通过本地安装以太网客户端geth构建的私有链节点

Geth是以太网车间开发中使用的典型客户端,它是基于Go语言开发的Geth提供了一个交互式的命令控制台,其中包含了以太网广场的各种功能

安装

后,启动geth控制台并通过以下命令输入:

geth - datadir testNet - dev控制台2>> test.log

执行命名后,它将进入geth控制台:

合同的概念

然后创建帐户,解锁帐户,编写合同,编译合同,从编译细节中复制WEB3DEPLOY中的内容,并通过修改相关信息进入geth客户端执行合同部署。

合同的概念

的成功部署可以直接在geth控制台中进行契约调用,整个部署和调用过程确保了帐户的平衡。有关更详细的程序,请参阅另一篇文章:使用remix+geth(https://learnlockhair.cn/2017/11/24/init-env/)

开发和部署智能合同

磨刀砍柴刻不容缓。只有了解了基础知识,我们才能更好地理解智能合同和智能合同的安全问题。

工人必须运用他们的技能才能做好事。只有当他们知道如何为智能合同中的安全漏洞的实战实践建立一个环境时,他们才能更好地恢复合同漏洞。

大家都在看

相关专题