目前开发智能的IDE, 首推仍是Remix, 而Remix官网, 老是因为各类各样的(网络)缘由没法使用,本文就来介绍一下如何在本地搭建智能合约开发环境remix-ide并介绍Remix的使用。html
一.写在前面
Remix 是以太坊智能合约编程语言Solidity IDE,阅读本文前,你应该对以太坊、智能合约有所了解,若是还不了解,建议先看以太坊是什么。node
二.Remix IDE 介绍
Remix IDE 是一款基于浏览器的IDE,跟有些开发聊的时候,发现有一些同窗对浏览器的IDE,有一些偏见,其实Atom编辑器就是基于web技术开发的一款编辑器(Atom能够看作一个没有地址栏的浏览器),其实基于浏览器的IDE,有一个很大的好处就是不用安装,打开即用。git
Remix IDE的功能全面(传统IDE有的功能这里都有),好比:github
1.代码提示补全,代码高亮
2.代码警告、错误提示
3.运行日志输出
4.代码调试
...web
三.Remix IDE 安装
Remix 如今提供了一个APP, 叫Remix APP, 若是是Mac 电脑,能够直接使用其提供的发布包,地址为:https://github.com/horizon-games/remix-app/releasesnpm
若是你有很好的网络环境,能够直接访问Remix官网。
要不能仍是仍是像我同样老老实实把Remix IDE安装在本地,我发现要想成功安装选择对应的版本很关键,具体的版本要求以下:编程
$ node --version v7.10.1 $ npm --version 4.2.0 $ nvm --version 0.33.11
1.nvm 安装浏览器
nvm是一个node 版本工具,咱们可使用nvm来安装不一样版本的node。
nvm官方安装方法以下:bash
命令行中输入:网络
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
在当前用户profile文件,如(~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc)添加加载nvm的脚本:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
重启下命令行,输入nvm 试试,应该能够看到 nvm 命令的帮助
2.使用nvm安装node
由于Remix IDE 要求使用node 7.10.1, 命令行输入一下命令进行安装:
nvm install 7
安装完成以后,使用node --version 和 npm --version检查下版本号,是否和刚刚列出版本要求一致。
3.命令行安装Remix ide
方法1:
直接使用npm安装,这也是我安装使用的方法。
npm install remix-ide -g
remix-ide
若是出现错误:Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
能够尝试用如下方法解决:
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
若是咱们使用的是正确的node 和npm 版本的话,应该均可以安装成功,安装成功以后,remix-ide命令用来启动ide。
方法2:
remix-ide的github 上还提供了另外一个方法进行安装,经过clone 代码来安装,方法以下:
git clone https://github.com/ethereum/remix-ide.git cd remix-ide npm install npm run setupremix # this will clone https://github.com/ethereum/remix for you and link it to remix-ide npm start
四.Remix ide使用
Remix IDE 默认是使用8080端口启动的,启动以后在浏览器打开:http://localhost:8080/, 如图:
和大多数IDE同样,最左边是文件浏览,中间是代码编辑区域,右边是功能区域,下边是日志区域。
在右侧的功能区域,经常使用的是Compile、Run及Debuger几个标签页(Tab)。
在Compile页,会动态的显示当前编辑区域合约的编译信息,如显示错误和警告。编译的直接码信息及ABI接口能够经过点击Details查看到。
点“Details"弹出以下弹出框,在弹出的对话框中可找到WEB3DEPLOY部分。详见:https://learnblockchain.cn/2017/11/24/init-env/
在Run页,能够部署合约,以及调用合约函数等,使用很是简单。
Debuger页在下面单独讲解。
1.Remix ide 加载本地磁盘文件
这是一个很是用的功能,但发现使用的人很是少,经过加载本地磁盘文件,就能够方便代码管理工具(如 git)管理咱们的合约代码。
我详细介绍下如何这个功能怎么使用?
使用在线版本的Remix可使用这个功能, 不过须要安装一下remixd, 安装使用命令npm install -g remixd。
a.在须要的本地合约代码的目录下启动remix-ide, Remix IDE 会自动把当前目录作为共享目录。
若是是使用在线的Remix,须要使用命令remixd -s shared-folder 来指定共享目录。
b.加载共享目录,在文件浏览区域上有,有这样一个图标,他用来加载本地共享目录,如图:
2.调试
在合约编写过程当中,合约调试是必不可少的一部分,为了模拟调试的过程,我故意在代码中加入一ge错误的逻辑代码以下:
pragma solidity ^0.4.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData += x; // 错误的,多加了一个加号 } function get() public constant returns (uint) { return storedData; } }
加入了错误的逻辑以后,我第2次调用set函数,合约状态变量的值,可能会出错(若是第一次不是用参数0去调用的话)。
注意若是须要调试合约,在部署合约的环境应该选择:JavaScript VM。
3.开始调试
在咱们每次执行一个交易(不论是方式调用仍是函数执行)的时候,在日志都会输出一条记录,如图:
点击上图中的“Debug”按钮,在Remix右侧的功能区域会切换到调试面板,以下图:
调试过程过程当中,有下面几项须要重点关注:
a.Transactions: 能够查看交易及交易的执行过程,而且提供了7个调试的按钮,以下图:
为了方便介绍,我为每一个按钮编了号,每一个按钮的含义是:
1后退一步(不进入函数内部)
2后退一步(进入函数内部)
3前进一步(进入函数内部)
4前进一步(不进入函数内部)
5跳到上一个断点
6跳出当前调用
7跳到下一个断点
b.Solidity Locals:显示当前上下文的局部变量的值, 如图:
c.Solidity State: 显示当前执行合约的状态变量,以下图:
在本例中,咱们跟踪运行步骤的时候,能够看到局部变量的值为2,赋值给状态变量以后,状态变量的值更改成了3,因此能够判断运行当前语句的时候出错了。
d.Step detail: 显示当前步骤的gas详情等,以下图:
4.进入调试
展开Debug按钮,复制transaction hash值,将其粘贴到右边Debugger下的Transaction index or hash输入框,再点击“Start debugging”按钮便可进入调试,这时可进行单步调试等操做。