少女祈祷中...

从0开始配置智能合约测试环境

0x00 文章介绍

  • 智能合约测试环境搭建
  • 智能合约开发环境搭建
  • MetaMask插件安装
  • 开发环境测试

0x01 智能合约测试环境搭建

一,智能合约开发依赖环境基本分析

node.js与npm

node.js是一个基于Chrome JavaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用,其实就是一个Javascript运行环境。npm其实是Node.js的包管理工具。
node.js和npm是运行Ganache的前置条件, 运行Ganache的最低版本要求是node.js为v12.0.0,npm为v6.12.0, node.js中已经内置了 npm。

truffle

truffle是基于以太坊solidity编程语言的开发框架,是以太坊的开发环境,测试框架和资产管道,简化了去中心化应用的构建和管理流程。本身是采用Javascript编写,支持智能合约的编译、部署和测试。

Ganache

Ganache是用来创建一个虚拟的以太坊区块链的测试客户端,并生成一些我们将在开发过程中用到的虚拟账号,它是基于本地内存执行的,拥有良好的界面,它能对交易立即执行,迅速的创建和调用自己编写的智能合约,提升测试效率。

二,搭建只能合约开发依赖环境

配置系统

更新系统内核、软件以及rpm包并利用apt命令安装基础工具,以满足配置开发环境的依赖。

git:是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,帮助管理 Linux 内核开发

bzip2:是一个无损压缩软件,能够高效的完成文件数据的压缩

build-essential: C++语言编译器

wget:是一个下载文件的工具

make:是gcc的编译器

vim:是一个功能强大的全屏幕文本编辑器

加载命令时如遇见询问Y/N,输入"Y"并回车将继续加载命令。

1
2
3
root@f50ddd87208d:~# sudo apt update
root@f50ddd87208d:~# apt --fix-broken install
root@f50ddd87208d:~# sudo apt-get install git bzip2 build-essential wget make vim

安装node.js与npm

利用apt命令安装npm,并查看npm和node.js的版本号。

1
2
3
4
5
root@f50ddd87208d:~# sudo apt install npm
root@f50ddd87208d:~# npm -v
8.1.3
root@f50ddd87208d:~# node -v
16.1.0

安装truffle

1
root@f50ddd87208d:~# sudo npm install -g truffle

安装Ganache

进入桌面路径,下载Ganache,修改软件的读取权限,即可使用命令行直接启动Ganache。也可以在桌面双击点击 打开Ganache。

1
2
3
4
root@f50ddd87208d:~# cd /root/Desktop
root@f50ddd87208d:~/Desktop# wget https://github.com/trufflesuite/ganache-ui/releases/download/v2.5.4/ganache-2.5.4-linux-x86_64.AppImage
root@f50ddd87208d:~/Desktop# chmod +x ganache-2.5.4-linux-x86_64.AppImage
root@f50ddd87208d:~/Desktop# sudo ./ganache-2.5.4-linux-x86_64.AppImage

退出文件夹:

1
root@f50ddd87208d:~/Desktop# cd ~

0x02 智能合约开发环境搭建

一、智能合约开发环境基本分析

Go Ethereum

Go Ethereum又名geth, 是以太坊的官方客户端,它是用Go编程语言编写的,是以太坊协议的三种实现之一,它是一个命令行工具,提供很多命令和选项,可以连接运行以太坊节点、创建和管理账户、发送交易、挖矿、部署智能合约等。

Go环境搭建

1
2
3
4
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt-get update
sudo apt-get install golang-go
go version

搭建geth环境

安装geth:

1
2
3
4
5
6
7
root@f50ddd87208d:~/Downloads# cd ~
root@f50ddd87208d:~# git clone -b v1.10.18 https://github.com/ethereum/go-ethereum.git
root@f50ddd87208d:~# sudo mv go-ethereum /usr/local/bin/
root@f50ddd87208d:~# cd /usr/local/bin/go-ethereum/
root@f50ddd87208d:~# go env -w GOPROXY=https://goproxy.cn,direct
root@f50ddd87208d:~# make geth
root@f50ddd87208d:~# vim /etc/profile

在配置文件的末尾添加以下内容:

1
2
export PATH=$PATH:/usr/local/bin/go-ethereum/build/bin
export PATH=$PATH:$GETH_PATH

输入以下命令使geth环境生效,当重启容器出现环境不生效,需要再次输入以下命令:

1
root@f50ddd87208d:~#  source /etc/profile

验证环境是否生效:

1
2
3
4
5
6
7
8
9
root@f50ddd87208d:~# geth version
Geth
Version: 1.10.24-stable
Git Commit: 972007a517c49ee9e2a359950d81c74467492ed2
Architecture: amd64
Go Version: go1.18.5
Operating System: linux
GOPATH=/root/gocode
GOROOT=/usr/local/go

0x03 MetaMask插件安装

直接点击浏览器插件搜索安装即可!!!

image-20240102182005464

0x04 开发环境测试

1
2
3
4
5
6
7
8
9
10
11
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.4.0;
contract Simplestorage{
uint storageDate;
function set(uint x) public{
storageDate = x;
}
function get() public constant returns (uint){
return storageDate;
}
}

(1)MetaMask链接Ganache

​ 打开Ganache,将MetaMask链接到Ganache网络。

2)Remix链接MetaMask

打开RemixIDE,即可尝试部署智能合约。如图所示,编译成功后,切换到部署的tab下,将Environment切换成Injected Web3,连接到MetaMask。当前MetaMask连接的是Ganache,账户有以太币。选择账户后,点击下一步再点击连接即链接成功。

环境准备好之后,点击Deploy进行部署,这时会弹出来一个交易确认框,因为在创建合约时,需要付费,这时会提示用户确认价格,点击确认即可。

创建合约交易,将由Remix IDE 自动创建交易并发送到网络让矿工打包。矿工打包完成之后,IDE会显示创建的合约信息,包含合约地址及合约函数。

调用合约函数在Remix IDE中只需输入信息点击函数名即可进行调用。

Share Comments