区块链学习-Remix IDE安装

第一步 安装环境

使用remix服务器版

首先这里写的合约是指solidity合约,使用Remix IDE。所以我们第一步就是安装Remix IDE。remix ide是开发以太坊智能合约的神器,支持网页在线编写、部署和测试智能合约。网址http://remix.ethereum.org
可以选择先跳过安装环境这一步,直接使用在线的http://remix.ethereum.org

我这边的测试环境是kali-linux
安装的指令为

1
2
3
4
git clone https://github.com/ethereum/remix-ide.git
cd remix-ide
sudo npm install
npm run build && npm run serve

注意:一定要sudo npm install,一定要sudo npm install,一定要sudo npm install,重要的事情说三遍,本人在这里踩了一次坑了
一般kali是不会自带npm这个东西的,所以我们需要先安装npm
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题

Linux安装NPM指令(如果是非Linux建议查看Node.js的菜鸟教程,链接为 https://www.runoob.com/nodejs/nodejs-install-setup.html)

1
2
3
4
wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz    // 下载
tar xf node-v10.9.0-linux-x64.tar.xz // 解压
cd node-v10.9.0-linux-x64/ // 进入解压目录
./bin/node -v // 执行node命令 查看版本

解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln 命令来设置软连接:

1
2
3
ln -s /root/node-v10.9.0-linux-x64/bin/npm   /usr/local/bin/
ln -s /root/node-v10.9.0-linux-x64/bin/node /usr/local/bin/
ln -s /root/node-v10.9.0-linux-x64/bin/npx /usr/local/bin/

这边前一个路径是你node.js下载到本地的路径

这样表示成功建立软连接,可以使用npm了。
当然,不建立软连接也可以直接使用,只要进入到npm所在的目录下即可

接下来如果一切正常的话就可以npm run build

npm run serve

然后访问即可

使用remix桌面版

下载安装文件, 下载地址:https://github.com/ethereum/remix-desktop/releases

![img](/picture/区块链学习-Remix IDE安装/bcff8ad286a9424f9a62d96b04f54279.png)

选择exe文件下载,然后正常安装即可。

打开Remix IDE,是这个空白页面

![img](/picture/区块链学习-Remix IDE安装/83f44566e0af42eab0f83a3b19eeff7b.jpeg)

将remix关闭,第二天再启动就能进去了,不知道为什么

![img](/picture/区块链学习-Remix IDE安装/38b8df6f80f241ffbf94e888b1dc8c89.png)

第二步 编写第一个HelloWorld

Solidity是以太坊智能合约编程语言,所以在这之前需要对Solidity一些基本的语法进行一些了解,我是通过https://cryptozombies.io/zh/这个网站进行初步简单的学习的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
pragma solidity ^0.5.11;

//通过log函数重载,对不同类型的变量trigger不同的event,实现solidity打印效果,使用方法为:log(string name, var value)


contract Console {
event LogUint(string, uint);
function log(string memory s , uint x) internal {
emit LogUint(s, x);
}

event LogInt(string, int);
function log(string memory s , int x) internal {
emit LogInt(s, x);
}

event LogBytes(string, bytes);
function log(string memory s , bytes memory x) internal {
emit LogBytes(s, x);
}

event LogBytes32(string, bytes32);
function log(string memory s , bytes32 x) internal {
emit LogBytes32(s, x);
}

event LogAddress(string, address);
function log(string memory s , address x) internal {
emit LogAddress(s, x);
}

event LogBool(string, bool);
function log(string memory s , bool x) internal {
emit LogBool(s, x);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pragma solidity ^0.5.11;
import "browser/Console.sol";


contract HelloWorld is Console{
function getFlag(uint amount) public returns (string memory){
bytes memory flag="flag{asf54654v98x7v}";
if(amount>100){
log("give you flag!",flag);
}
uint state=0;
log("no flag!",state);
}
}

![image-20240320105508997](/picture/区块链学习-Remix IDE安装/image-20240320105508997.png)

通过代码可以知道就是通过读取参数输入的新值,如果amout大于100,那么就打印出flag

![image-20240320105556332](/picture/区块链学习-Remix IDE安装/image-20240320105556332.png)

再部署一下

![image-20240320105622863](/picture/区块链学习-Remix IDE安装/image-20240320105622863.png)

可以看到合约部署成功了