Remix是什么?
Remix是一个IDE (integrated development environment 集成开发环境),用于智能合约开发,使用的语言是solidity,是一个基于浏览器的IDE。也是以太坊官方的IDE。
Remix有哪些功能?
- 开发智能合约(集成了solidity语言的编辑器)
- 动态调试(debug)智能合约
- 访问已部署的智能合约的状态和属性
- 代码分析,给出错误提示,并给出最佳实践的提示
- 调试和测试Dapp(需要借助于Mist或者其它注入了Web3的工具)
怎么安装?
有两种使用方式,一种是在线方式,直接访问地址 https://remix.ethereum.org/
另一种是本地安装
# 下载源码
git clone https://github.com/ethereum/browser-solidity.git
# 进入源码目录
cd browser-solidity
# 使用npm包管理工具安装remix
npm install
# 启动remix服务
npm start
# 打开浏览器,输入地址http://127.0.0.1:8080
怎么使用?
文件浏览器
IDE左侧是文件浏览器区域,左上角有一排功能按钮。
- 创建新文件
- 从硬盘中导入文件
- 将项目文件上传至github
- 将项目文件复制到另外一个remix实例中
- 连接到本地硬盘
solidity编辑器
IDE中部上方是solidity编辑器区域。
- 每5秒自动保存。
- 支持多tab
- 左上角的+-符号可以改变字体大小
- 自动语法检查,黄色是警告和建议,红色是语法错误
命令行终端(Terminal)
IDE中部下方是一个交互式的命令行终端。
- 集成了javascript解释器,可以使用js脚本与系统交互。
- 注入了web3对象(只有在
web provider
和injected provider
两种模式下才有)
功能面板
IDE右侧是功能面板
- 编译(Compile)
- 默认每次编辑代码都会自动编译,如果合约有很多依赖,建议关闭自动编译。
- 详情按钮中有包含编译生成的详细信息。
- 运行(Run)
- 运行环境有三种模式可选:
-
JavaScript VM
: 这种模式是在浏览器中模拟一个区块链,合约在这个模拟的沙盒中执行,刷新页面就会使所有数据清空,不会做任何持久化,没有注入web3对象。 -
Injected Provider
:连接到包含注入web3对象的源上,例如Mist和Metamask。 -
Web3 Provider
:连接到远程节点,需要填写源的url地址和端口,例如geth、ganache等客户端,包含web3对象。
-
- Account 当前操作的账户,比如用于发布合约、调用合约方法。
- Gas Limit 合约交易的gas最大限量。
- Value 向合约发送以太币。
- Create 部署合约。相当于new一个合约实例。
- At Address 假定此地址是所选合约的一个已部署的实例。相当于将地址强制转换为一个合约实例。
- 设置(Settings)
- 编译器版本选择
- Text Wrap 编辑器自动换行
- Always use VM at Load 这个不懂
- Enable Optimization 编译优化,对执行gas做优化,调试期间不要使用,可能会引起行为异常。
- 分析(Analysis)
这里是编译器做静态代码分析的选项,给出相应的警告。
默认全部勾选,并自动执行。也可以手动执行。 - 调试器(Debugger)
动态调试内容比较多,之后再专门介绍。 - 支持(Support)
这里是一个在线支持的链接,可以在线与remix的开发团队沟通,提交bug或者意见反馈。也可以直接访问地址: https://gitter.im/ethereum/remix