最新内容会更新在主站深入浅出区块链社区

原文链接:搭建智能合约开发环境 Remix IDE 及使用

目前开发智能的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 现在提供了一个APP, 叫Remix APP, 如果是Mac 电脑,可以直接使用其提供的发布包,地址为:https://github.com/horizon-games/remix-app/releases

如果你有很好的网络环境,可以直接访问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- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
  1. 在当前用户profile文件,如(~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc)添加加载nvm的脚本:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
  1. 重启下命令行,输入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 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一样,最左边是文件浏览,中间是代码编辑区域,右边是功能区域,下边是日志区域。

在右侧的功能区域,常用的是CompileRunDebuger几个标签页(Tab)。

Compile页,会动态的显示当前编辑区域合约的编译信息,如显示错误和警告。编译的直接码信息及ABI接口可以通过点击Details查看到。

这篇文章里 也有截图说明。

Run页,可以部署合约,以及调用合约函数等,使用非常简单,我们前面也有多篇文章讲解。

Debuger页在下面调试一节单独讲解。

Remix ide 加载本地磁盘文件

这是一个非常用的功能,但发现使用的人非常少,通过加载本地磁盘文件,就可以方便代码管理工具(如 git)管理我们的合约代码。

我详细介绍下如何这个功能怎么使用?

使用在线版本的Remix可以使用这个功能, 不过需要安装一下remixd, 安装使用命令npm install -g remixd

  1. 在需要的本地合约代码的目录下启动remix-ide, Remix IDE 会自动把当前目录做为共享目录。

如果是使用在线的Remix,需要使用命令remixd -s shared-folder 来指定共享目录。

  1. 加载共享目录,在文件浏览区域上有,有这样一个图标,他用来加载本地共享目录,如图:

调试

在合约编写过程中,合约调试是必不可少的一部分,为了模拟调试的过程,我故意在代码中加入一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。

开始调试

在我们每次执行一个交易(不管是方式调用还是函数执行)的时候,在日志都会输出一条记录,如图:

点击上图中的“Debug”按钮,在Remix右侧的功能区域会切换到调试面板,如下图:



调试过程过程中,有下面几项需要重点关注:

  • Transactions: 可以查看交易及交易的执行过程,并且提供了7个调试的按钮,如下图:

    为了方便介绍,我为每个按钮编了号,每个按钮的含义是:

    1. 后退一步(不进入函数内部)
    2. 后退一步(进入函数内部)
    3. 前进一步(进入函数内部)
    4. 前进一步(不进入函数内部)
    5. 跳到上一个断点
    6. 跳出当前调用
    7. 跳到下一个断点
  • Solidity Locals:显示当前上下文的局部变量的值, 如图:

  • Solidity State: 显示当前执行合约的状态变量,如下图:

在本例中,我们跟踪运行步骤的时候,可以看到局部变量的值为2,赋值给状态变量之后,状态变量的值更改为了3,所以可以判断运行当前语句的时候出错了。

  • Step detail: 显示当前步骤的gas详情等,如下图:

设置断点

这部分为小专栏读者准备,欢迎订阅小专栏区块链技术查看。

参考链接

  1. remix-ide github
  2. Remix Document

深入浅出区块链 - 系统学习区块链,打造最好的区块链技术博客。

如果你学习区块链中遇到问题,欢迎加入知识星球深入浅出区块链问答社区,作为星友福利,星友可加入我创建的区块链技术群,群内已经聚集了200多位区块链技术牛人和爱好者。

搭建智能合约开发环境Remix IDE及使用的更多相关文章

  1. 智能合约开发环境搭建及Hello World合约

    如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约 ...

  2. [转] 智能合约开发环境搭建及Hello World合约

    [From] http://www.cnblogs.com/tinyxiong/p/7898599.html 如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. ...

  3. Mac下基于testrpc和truffle的以太坊智能合约开发环境搭建

    原文地址:石匠的blog truffle是一个基于Javascript开发的一套智能合约开发框架,使用Solidity语言编写合约.truffle有一套自动的项目构建机制,集成了开发,测试和部署的各个 ...

  4. 区块链入门到实战(27)之以太坊(Ethereum) – 智能合约开发

    智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethe ...

  5. 以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约

    以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约 在上一篇文章中,我们使用Truffle自带的客户端Truffle Develop,在私有链上搭建并运行了官方提供的WebPack智能合 ...

  6. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  7. 【转】windows和linux中搭建python集成开发环境IDE

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  8. Truffle 4.0、Geth 1.7.2、TestRPC在私有链上搭建智能合约

    目录 目录 1.什么是 Truffle? 2.适合 Truffle 开发的客户端 3.Truffle的源代码地址 4.如何安装? 4.1.安装 Go-Ethereum 1.7.2 4.2.安装 Tru ...

  9. EOS智能合约开发(四):智能合约部署及调试(附编程示例)

    EOS智能合约开发(一):EOS环境搭建和创建节点 EOS智能合约开发(二):EOS创建和管理钱包 EOS智能合约开发(三):EOS创建和管理账号 部署智能合约的示例代码如下: $ cleos set ...

随机推荐

  1. CentOS6.8下安装Redis

    1.由于Redis是使用C语言开发的,安装时需要对Redis的源码进行编译,编译依赖gcc环境,如果没有gcc,需要先安装gcc: yum install gcc-c++ 2.安装完成后,进入Redi ...

  2. 王之泰201771010131《面向对象程序设计(java)》第一周学习总结

    王之泰201771010131<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.co ...

  3. php的pear编程: phpDocumentor的使用?

    pfc: php基础类库: pecl: php扩展公共库 pear: php extension and application repository. php的扩展和应用库 phar: ['fa:] ...

  4. JXOI2018守卫 区间DP

    链接 https://loj.ac/problem/2545 思路 f[i][j]表示i到j区间的最小监视人数 可以预处理出来g[i][j],表示i能否监视到j (其实预处理的关系不大,完全可以直接判 ...

  5. 奇怪的比赛|2012年蓝桥杯B组题解析第四题-fishers

    (8')奇怪的比赛 某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍:答错了则扣掉与题号相同的分数(选手必须 ...

  6. How to resize slide dimensions without resizing any objects on the slide?

    IF you are competent to unzip the pptx file and modify the XML it can be done, the slide size will c ...

  7. [jsp & thymeleaf] - jsp和thymeleaf的共存解析

    做项目时因为有些老jsp还需要测试用到,所以之前的thymeleaf也需要保持,配置如下: https://github.com/deadzq/jsp-thymeleaf 等空余时间在做详解吧!

  8. Shiro学习笔记四(Shiro集成WEB)

    这两天由于家里出了点事情,没有准时的进行学习.今天补上之前的笔记 -----没有学不会的技术,只有不停找借口的人 学习到的知识点: 1.Shiro 集成WEB 2.基于角色的权限控制 3.基于权限的控 ...

  9. Images之base image

    Create a base image Most Dockerfiles start from a parent image. If you need to completely control th ...

  10. 微服务架构与实践3_api

    场景分析 描述产品服务,基于REST的接口 表述性状态转移(Representational State Transfer,REST) 任务拆分 将整体要做的工作内容划分成小的任务: 统一时间聚焦一个 ...