主页 > imtoken如何导入钱包 > 智能合约安全审计环境搭建 | 火星科技邮报

智能合约安全审计环境搭建 | 火星科技邮报

imtoken如何导入钱包 2023-02-23 07:47:48

工欲善其事,必先利其器。 只有知道如何搭建智能合约安全漏洞实战环境,才能更好的审视合约漏洞。

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

在阅读本文之前,您应该对区块链、以太坊和智能合约有所了解。 本文第一部分是对相关内容的简要快速介绍。

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

区块链技术利用区块链数据结构验证和存储数据,利用分布式节点共识算法产生和更新数据,利用密码学保证数据传输和访问的安全,利用自动化脚本代码组成的智能。 一种新的分布式基础设施和计算范式,使用合约来编程和操​​作数据。

简单来说,区块链是一个去中心化的分布式账本数据库。

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

以太坊搭建_以太坊节点搭建有什么用_以太坊服务端搭建

什么是以太坊

以太坊是一个基于区块链技术的去中心化应用平台。 它允许任何人在平台中构建和使用运行在区块链技术上的去中心化应用程序。

以太坊平台封装了区块链底层技术,允许区块链应用开发者直接基于以太坊平台进行开发,只要专注于针对应用本身的逻辑开发智能合约,可以大大降低开发难度。

以太坊和比特币最大的区别是以太坊有智能合约的概念。 比特币是一种数字货币——一种价值储存手段,而以太坊不仅是一种数字货币,还支持智能合约。

如果想进一步了解什么是以太坊,也可以参考另一篇文章:什么是以太坊——以太坊开发入门指南()

什么是智能合约

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

以太坊节点搭建有什么用_以太坊服务端搭建_以太坊搭建

智能合约是事件驱动的、有状态的计算机程序,运行在可复制的共享账本上。 当满足某些条件时,智能合约会自动执行。 合约一旦部署,不可修改,合约执行后不可逆,所有执行交易可追溯。

智能合约非常适用于对信任度、安全性和持久性要求高的应用场景,例如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权管理、物联网、点对点交易, ETC。

区块链是存在于所有允许方之间的去中心化系统,智能合约消除了传统系统中导致各方冲突的中间人的需要。

以太坊搭建_以太坊服务端搭建_以太坊节点搭建有什么用

如果想更深入的了解智能合约的原理,还可以参考另一篇文章:智能合约运行原理()

智能合约安全漏洞实战环境搭建

目前,Remix 是最值得推荐的开发智能合约的 IDE。 Remix 是以太坊智能合约编程语言 Solidity 的基于浏览器的 IDE。 强烈建议新手使用 Remix 在线 IDE() 进行开发,而不是在本地安装 Solidity。

如果想在本地搭建开发环境,可以看另一篇文章:搭建智能合约开发环境Remix IDE and use()。

我们需要开发和测试智能合约的安全漏洞。 如果我们使用Remix online IDE,根据Remix IDE的Environment选项有不同的方法,如下图:

以太坊搭建_以太坊服务端搭建_以太坊节点搭建有什么用

Remix IDE 中有三个环境选项:

下面分别从以上三种模式对智能合约安全漏洞的实战环境进行讲解,以方便后续对智能合约漏洞的实战演练。

本文使用的Solidity开发也将基于在线Remix IDE。

虚拟机

Javascript VM 模式也是最简单的方法。 您可以直接使用在线Remix IDE进行智能合约的开发、编译、部署、调用、测试、调试等。 非常适合初学者练习,如下图所示:

以太坊节点搭建有什么用_以太坊搭建_以太坊服务端搭建

Remix IDE的具体使用这里不再赘述,可以移步Remix官方文档:#

注入 Web3

注入的Web3主要是通过插件来使用。 借助 metamask,智能合约可以轻松部署到以太坊测试网或主网。

在这种模式下,可以使用remix + metamask + myetherwallet的模式来开发和部署智能合约,这是最简单也是最常用的方法; 您还可以使用 Truffle + Infura,这是一种工程化的高级开发和部署方法。

Remix() 无需介绍;

MetaMask() 是一款在谷歌浏览器上使用的插件式以太坊钱包。 钱包不需要下载。 您只需要在谷歌浏览器中添加相应的扩展程序即可。 它非常轻巧且易于使用。 方便,Metamask详细图文教程:

MyEtherWallet() 或简称 MEW 钱包,是最著名的以太坊钱包之一,MEW 钱包是一种基于网络的服务,可让您控制您的资金。 它用于安全地存储、发送和接收以太币和 ERC-20 代币,并与智能合约进行交互。 该服务为其用户提供一个地址(公共地址),用户可以在其中接收来自任何人的硬币和代币。 它还为用户提供了通过私钥(秘密密码)发送硬币的快捷方式。

Infura() 是一个让你的 dApp 快速接入以太坊的平台,无需在本地运行以太坊节点,其背后是一个负载均衡的 API 节点集群。 使用它的好处是你永远不必担心连接节点的故障,Infura 会处理这一切。

Truffle() 是基于以太坊的 Solidity 语言的开发框架。 本身基于 Javascript。 深度集成以太坊客户端,开发、测试、部署,一行命令搞定。 Truffle - 以太坊Solidity编程语言开发框架使用指南()

下面介绍如何通过remix + metamask + myetherwallte 的简单方法开发、部署和调用合约。 在开始之前,请在您的浏览器中安装 Metamask 钱包插件。

这是一个简单的测试 Solidity 智能合约:

pragma solidity ^0.4.0;

contract SimpleStorage {
uint storedData;
function set(uint x) public {
storedData = x;
}

function get public constant returns (uint) {
return storedData;
}
}

将合约写入Remix IDE编辑器以太坊节点搭建有什么用,完成编译。

以太坊节点搭建有什么用_以太坊搭建_以太坊服务端搭建

然后在Metamask中选择测试网,申请测试ETH,因为我们部署合约到以太坊测试网的时候,还要测试ETH的手续费,而部署到以太坊又得花真金白银在ETH上主网。

以太坊搭建_以太坊服务端搭建_以太坊节点搭建有什么用

申请在测试网测试ETH

以太坊搭建_以太坊服务端搭建_以太坊节点搭建有什么用

然后通过Remix IDE点击Deploy,弹出Metamask交易确认,可以看到需要花费ETH进行测试。

以太坊服务端搭建_以太坊搭建_以太坊节点搭建有什么用

部署成功后以太坊节点搭建有什么用,您可以在测试网络上看到我们的交易哈希,在 Remix IDE 的控制台窗口中可以看到我们的合约。

以太坊节点搭建有什么用_以太坊服务端搭建_以太坊搭建

这时候你可以直接通过Remix IDE调用部署好的合约,或者通过MyetherWallet调用任意合约。 进入MyetherWallet网站后,您需要选择与MyetherWallet交互的方式。 这里我们选择Metamask,然后MyetherWallet会和Metamask建立连接。

以太坊服务端搭建_以太坊节点搭建有什么用_以太坊搭建

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

以太坊搭建_以太坊服务端搭建_以太坊节点搭建有什么用

调用合约,如图,我们设置一个x的值为2,然后获取x的值,返回结果为2。

以太坊服务端搭建_以太坊搭建_以太坊节点搭建有什么用

以太坊节点搭建有什么用_以太坊搭建_以太坊服务端搭建

Web3 供应商

Web3 Provider 将 Remix 连接到指定的以太坊节点,例如通过本地安装以太坊客户端 geth 构建的私有链节点。

Geth是以太坊开发中使用的典型客户端,基于Go语言开发。 Geth 提供了一个交互式命令控制台,通过命令控制台包含了以太坊的各种功能(API)。

安装完成后,启动geth控制台,输入以下命令:

geth --datadir testNet --dev console 2>> test.log

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

以太坊服务端搭建_以太坊搭建_以太坊节点搭建有什么用

然后创建账户,解锁账户,编写合约,编译合约,从编译详情中复制WEB3DEPLOY中的内容,修改相关信息后进入geth客户端执行合约。

以太坊服务端搭建_以太坊节点搭建有什么用_以太坊搭建

部署成功后,可以在geth控制台直接调用合约。 整个部署和调用过程保证账户有余额。 更详细的流程请看另一篇文章:使用remix+geth开发部署智能合约()

磨刀不误砍柴。 只有了解基础知识,我们才能更好地理解智能合约及其安全问题。

工欲善其事,必先利其器。 只有知道如何搭建智能合约安全漏洞实战环境,才能更好的审视合约漏洞。

本文是以太坊智能合约安全漏洞实战的前奏。 智能合约安全漏洞实战的后续详细文章敬请期待。