跳转到内容

Remix IDE — 浏览器内 Solidity IDE

待复核

Remix IDE 是 Ethereum 基金会维护的浏览器内 Solidity 开发环境。打开 https://remix.ethereum.org 就能写、编译、部署、调试智能合约,不装 Node、不配 Hardhat、不下 Foundry

日常类比:它像 Web 版的 Word + 自带打印机——你不用先去配字体不用买打印机,开浏览器、敲文字、点”打印”,纸(部署的合约)就出来了。打印机就是页面里嵌的那条假区块链。

最小一个例子:

contracts/Hello.sol
pragma solidity ^0.8.20;
contract Hello {
string public greet = "hi";
}

写完左边点”编译”,再点”部署”,右下角立刻出现一个 greet 按钮——点一下,弹出 "hi"。整个过程没装任何东西。

不理解 Remix IDE,下面这些事都没法解释:

  • 为什么大量 Solidity 入门教程第一步都是”打开 remix.ethereum.org”,而不是”先 npm install”
  • 为什么有些链上交易出 bug 时,工程师把 tx hash 粘到一个网页就能逐行回放
  • 为什么 OpenZeppelin / Uniswap 等库能在浏览器里直接 import,没有本地 node_modules
  • 为什么从 hardhat / foundry 这种本地工具链转过来的人,仍然会回头用 Remix 调试

可以把 Remix IDE 拆成 三层

  1. 编辑器 + 编译器:左边写 .sol,右边的 Solidity Compiler 面板内嵌了 solc,点 Compile 就出 ABI(给外部调用看的接口说明书)和 bytecode(链上实际跑的机器码)。类比:自带烤箱的厨房——食材进去、面包出来,不用另装设备。

  2. Deploy & Run 面板:选 ENVIRONMENT(Remix VM 沙箱 / 浏览器钱包 / WalletConnect / 本地 Hardhat),选账户,点 Deploy。部署后的合约会出现在 “Deployed Contracts” 列表,每个 public 函数都自动生成可点击的按钮。

  3. Debugger:粘一个交易 hash 进去,能逐 opcode(单条 EVM 机器指令)步进,看 Stack / Memory / Storage / 局部变量。类比:影碟机的逐帧播放——EVM 是栈机,你能看见每一步 Stack 顶和存储槽怎么变。

三层之间靠 Remix Plugin Engine 串起来——每个面板都是独立 plugin,第三方(OpenZeppelin Wizard / Sourcify 验证 / Slither 静态分析)只要写个 plugin manifest 就能装进来。这意味着官方团队不用什么都自己做,社区缺什么补什么。

案例 1:5 分钟发一个 ERC-20 代币

Section titled “案例 1:5 分钟发一个 ERC-20 代币”
contracts/MyToken.sol
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor() ERC20("MyToken", "MTK") {
_mint(msg.sender, 1_000_000 * 10 ** decimals());
}
}

逐部分解释:

  • import "@openzeppelin/...":Remix 看到这种路径会自动从 GitHub 拉,无需本地 npm install
  • 选 ENVIRONMENT = Remix VM (Cancun),账户里默认有 100 ETH
  • 点 Deploy,下方出现 transfer / balanceOf 按钮,点 balanceOf 输入自己地址,看到 1000000*10^18
  • 把同一个合约 transfer 一笔给另一个 VM 账户,左侧 Terminal 立刻打日志——所有过程都在浏览器内存里,刷新页面就消失,但学语义足够

案例 2:用 Debugger 逐步骤回放一笔失败交易

Section titled “案例 2:用 Debugger 逐步骤回放一笔失败交易”

链上有笔 tx 报 revert,你只有 hash:

  1. ENVIRONMENT 切到 Injected Provider,MetaMask 切到该笔交易所在链
  2. Debugger 面板粘 tx hash,点 Start debugging
  3. 右边能看到当前 opcode、Stack 顶值、Storage 哪个 slot 在变
  4. 配合左边源码高亮,能定位到 require(balance >= amount) 那一行

不需要装 hardhat fork、不需要写 console.log,直接看链上字节码执行轨迹。这是 Remix 相对本地工具最有粘性的功能——很多人毕业去了 foundry,但每次出 revert 还是回 Remix 调试。

案例 3:写并跑一个 Solidity 单元测试

Section titled “案例 3:写并跑一个 Solidity 单元测试”
tests/Hello_test.sol
pragma solidity ^0.8.20;
import "remix_tests.sol";
import "../contracts/Hello.sol";
contract HelloTest {
function checkGreet() public {
Hello h = new Hello();
Assert.equal(h.greet(), "hi", "greet should be hi");
}
}

左边点 “Solidity Unit Testing” 面板的 Run,几秒后出 pass / fail 报告。这是 Remix 内置的轻量测试 runner,不用装额外框架。Assert.equal / Assert.notEqual 等断言来自 remix_tests.sol,是 Remix 注入的。

  1. ENVIRONMENT 默认 Remix VM 不是真链:新手 Deploy 完去链上浏览器找合约——找不到,因为它还在浏览器内存里。要切到 Injected Provider/MetaMask 才会真正广播。
  2. MetaMask 网络对不上:钱包停在 Mainnet 你想发 Sepolia,部署看似成功但 hash 在错的链上,浏览器一查”交易不存在”。每次 Deploy 前先看 MetaMask 顶栏链名。
  3. OpenZeppelin import 偶尔卡住:Remix 自动从 GitHub 拉时遇到限流会一直转圈。解法:左边 File Explorer 点 GitHub 图标,手动 OpenZeppelin/openzeppelin-contracts@v5.0.0 拉到本地 workspace。
  4. Debugger 报 transaction not found:粘了 Sepolia tx hash 但 ENVIRONMENT 还停在 Remix VM。Debugger 只在当前 Environment 里查 hash,环境切对再粘。

适用

  • Solidity 入门第一周——零安装就能跑通”写 → 部署 → 调用”闭环
  • 教学 / Workshop / 直播演示——一个浏览器链接就是完整环境
  • 链上事后分析——粘 tx hash 用 Debugger 回放,比本地搭 fork 快
  • 跑小合约的临时验证——3 个文件以内、不需要 CI 的场景
  • 跨平台不挑机器:只要有浏览器,Linux / Mac / Windows / 教室公用机都能跑
  • Workshop 现场分享:把当前文件 Save to Gist 一键生成可分享链接

不适用

  • 中大型项目(多文件、需要 CI / 自动化测试 / 部署脚本)→ 升级到 hardhat / foundry
  • 需要 fuzz / invariant 测试 → 用 foundry 的 forge
  • 需要复杂依赖管理 / 单测覆盖率 → Remix 的 npm 解析有限,用 ape-framework / hardhat
  • 私链 / 联盟链定制部署 → 用 besu / go-ethereum 的 RPC + 本地脚本
  • 2015–2016 年:社区已有 browser-solidity(浏览器里写 Solidity);当年装 go-ethereum + solc 仍是劝退新人的大门槛
  • 2016 年 5 月:Ethereum 基金会博客宣布 Remix——把可复用的 html5/js 调试模块做出来,目标是嵌进 browser-solidity 以及 VS Code 等编辑器
  • 2018 年前后:Remix IDE 走向插件化(约 v0.7),外部团队可挂自己的工具;随后与相关仓库收敛进 remix-project monorepo,分出 web / Desktop / VSCode 扩展
  • 2022-2024:插件生态成熟,OpenZeppelin Wizard、Sourcify 验证、Slither 分析都做成 plugin
  • 2026 年:remix-project 已到 v2.5.x 线,Apache-2.0,仍是 Solidity 教程默认入门环境
  • 这条历史也解释了为什么 hardhat / foundry 出现后 Remix 仍然没被替代——它瞄准的是入门和调试,不是工程化
  1. 零安装是教学的最大杠杆——把”装环境那一周”砍成 0,吸引来的人多 10 倍
  2. 插件化把工具链拆成可拼装的乐高——Remix 自己只做编辑器 + 编译器内核,其他都让别人做
  3. VM 沙箱 + 真链桥接同台——同一个面板既能本地试也能上真链,省了切换成本
  4. 入门工具不需要等于生产工具——用 Remix 学会,再迁到 foundry / hardhat 做工程,是健康的成长路径
  • hardhat —— 本地 Solidity 工具链,从 Remix 毕业后第一站
  • foundry —— 本地 Solidity 工具链,Rust 写的高速版
  • ape-framework —— Python 系 Solidity 工具链,另一种风格
  • go-ethereum —— Ethereum 主流执行客户端,Remix 通过 RPC 连它
  • besu —— Java 系 Ethereum 客户端,企业 / 联盟链常用
  • teku —— Ethereum 共识层客户端,与 Remix 部署的合约共同构成完整网络
  • bitcoin —— 智能合约前史,对比 Solidity 才有意义
  • anchor —— Anchor — Solana 合约开发框架
  • arbitrum —— Arbitrum Nitro — Offchain Labs 的 Optimistic Rollup 客户端
  • metamask —— MetaMask — 装在浏览器里的以太坊钱包
  • optimism —— Optimism — 以太坊 L2 旗舰栈,把交易搬到便宜车道再回主网结算
  • rabby-wallet —— Rabby Wallet — 签名前先告诉你”会变成什么样”的 EVM 钱包
  • scroll —— Scroll — 字节码级 zkEVM
  • walletconnect —— WalletConnect — dApp 与钱包之间的加密对讲机
  • web3-js —— web3.js — 老牌 EVM JavaScript 客户端库