搭建智能合约开发环境RemixIDE及使⽤
最新内容会更新在主站
原⽂链接:
⽬前开发智能的IDE,⾸推还是Remix, ⽽Remix, 总是由于各种各样的(⽹络)原因⽆法使⽤,本⽂就来介绍⼀下如何在本地搭建智能合约开发环境remix-ide并介绍Remix的使⽤。
写在前⾯
Remix 是以太坊智能合约编程语⾔Solidity IDE,阅读本⽂前,你应该对以太坊、智能合约有所了解,
如果还不了解,建议先看。
Remix IDE 介绍
Remix IDE 是⼀款基于浏览器的IDE,跟有些开发聊的时候,发现有⼀些同学对浏览器的IDE,有⼀些偏见,其实Atom编辑器就是基于web 技术开发的⼀款编辑器(Atom可以看做⼀个没有地址栏的浏览器),其实基于浏览器的IDE,有⼀个很⼤的好处就是不⽤安装,打开即⽤。Remix IDE的功能全⾯(传统IDE有的功能这⾥都有),⽐如:
1. 代码提⽰补全,代码⾼亮
2. 代码警告、错误提⽰
3. 运⾏⽇志输出
4. 代码调试
5. ...
Remix IDE 安装
如果你有很好的⽹络环境,可以直接访问Remix。
要不能还是还是像我⼀样⽼⽼实实把Remix IDE安装在本地,我发现要想成功安装选择对应的版本很关键,具体的版本要求如下:
$ node --version
v7.10.1
$ npm --version
4.2.0
$ nvm --version
0.33.11
nvm 安装
nvm 是⼀个node 版本⼯具,我们可以使⽤nvm来安装不同版本的node。
nvm 官⽅如下:
1. 命令⾏中输⼊:
curl -o- raw.githubusercontent/creationix/nvm/v0.33.11/install.sh | bash
2. 在当前⽤户profile⽂件,如(~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc)添加加载nvm的脚本:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
3. 重启下命令⾏,输⼊nvm 试试,应该可以看到 nvm 命令的帮助
使⽤nvm 安装node
因为Remix IDE 要求使⽤node 7.10.1, 命令⾏输⼊⼀下命令进⾏安装:
nvm install 7
安装完成之后,使⽤node --version 和 npm --version检查下版本号,是否和刚刚列出版本要求⼀致,在版本⼀值的qing
命令⾏安装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 github/ethereum/remix-ide.git
cd remix-ide
npm install
npm run setupremix # this will clone github/ethereum/remix for you and link it to remix-ide
npm start
Remix ide 使⽤
和⼤多数IDE⼀样,最左边是⽂件浏览,中间是代码编辑区域,右边是功能区域,下边是⽇志区域。
在右侧的功能区域,常⽤的是Compile、Run及Debuger⼏个标签页(Tab)。
在Compile页,会动态的显⽰当前编辑区域合约的编译信息,如显⽰错误和警告。编译的直接码信息及ABI接⼝可以通过点击Details查看到。在也有截图说明。
在Run页,可以部署合约,以及调⽤合约函数等,使⽤⾮常简单,我们前⾯也有多篇⽂章讲解。
Debuger页在下⾯调试⼀节单独讲解。
Remix ide 加载本地磁盘⽂件
这是⼀个⾮常⽤的功能,但发现使⽤的⼈⾮常少,通过加载本地磁盘⽂件,就可以⽅便代码管理⼯具(如 git)管理我们的合约代码。
我详细介绍下如何这个功能怎么使⽤?
使⽤在线版本的Remix可以使⽤这个功能,不过需要安装⼀下, 安装使⽤命令npm install -g remixd。
1. 在需要的本地合约代码的⽬录下启动remix-ide, Remix IDE 会⾃动把当前⽬录做为共享⽬录。
如果是使⽤在线的Remix,需要使⽤命令remixd -s shared-folder来指定共享⽬录。
2. 加载共享⽬录,在⽂件浏览区域上有,有这样⼀个图标,他⽤来加载本地共享⽬录,如图:
调试
在合约编写过程中,合约调试是必不可少的⼀部分,为了模拟调试的过程,我故意在代码中加⼊⼀ge错误的逻辑代码如下:
pragma solidity ^0.4.0;
contract SimpleStorage {
uint storedData;
function set(uint x) public {
storedData += x; // 错误的,多加了⼀个加号
}
function get() public constant returns (uint) {
solidityreturn storedData;
}
}
加⼊了错误的逻辑之后,我第2次调⽤set函数,合约状态变量的值,可能会出错(如果第⼀次不是⽤参数0去调⽤的话)。
注意如果需要调试合约,在部署合约的环境应该选择:JavaScript VM。
开始调试
在我们每次执⾏⼀个交易(不管是⽅式调⽤还是函数执⾏)的时候,在⽇志都会输出⼀条记录,如图:
点击上图中的“Debug”按钮,在Remix右侧的功能区域会切换到调试⾯板,如下图:
调试过程过程中,有下⾯⼏项需要重点关注:
Transactions: 可以查看交易及交易的执⾏过程,并且提供了7个调试的按钮,如下图:
为了⽅便介绍,我为每个按钮编了号,每个按钮的含义是:
1. 后退⼀步(不进⼊函数内部)
2. 后退⼀步(进⼊函数内部)
3. 前进⼀步(进⼊函数内部)
4. 前进⼀步(不进⼊函数内部)
5. 跳到上⼀个断点
6. 跳出当前调⽤
7. 跳到下⼀个断点
Solidity Locals:显⽰当前上下⽂的局部变量的值,如图:
Solidity State:显⽰当前执⾏合约的状态变量,如下图:
在本例中,我们跟踪运⾏步骤的时候,可以看到局部变量的值为2,赋值给状态变量之后,状态变量的值更改为了3,所以可以判断运⾏当前语句的时候出错了。
Step detail:显⽰当前步骤的gas详情等,如下图:
设置断点
这部分为⼩专栏读者准备,欢迎订阅⼩专栏查看。
参考链接
1.
2.
- 系统学习区块链,打造最好的区块链技术博客。
如果你学习区块链中遇到问题,欢迎加⼊知识星球问答社区,作为星友福利,星友可加⼊我创建的区块链技术,内已经聚集了200多位区块链技术⽜⼈和爱好者。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论