跳到正文
← 使用教程

怎样用 Remix VM 安全练习合约?编译、部署、读写与预期失败

链小知 · 入门 · 核验 · 依官方文档整理

在浏览器沙箱里验证一个有边界检查的计数合约,全程使用沙箱账号,不连接真实钱包。

开始前准备

  • 通过 remix.ethereum.org 打开官方 IDE。
  • 仅使用 Remix VM 环境;不选择 Browser Extension 或公共网络。
  • 本教程是基于官方文档的演练设计,本次尚未实机执行。

1. 建立单独练习文件

创建 TutorialCounter.sol,使用下列原创最小合约。它只能把 number 设为 0–9,适合同时观察成功写入和边界失败: ```solidity // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; contract TutorialCounter { uint256 public number; function setNumber(uint256 next) external { require(next < 10, "limit"); number = next; } } ```

检查结果:文件内容仅有练习合约,没有外部调用、私钥或网络配置。

2. 选择编译器并编译

在 Solidity Compiler 选择与 pragma 兼容的 0.8.x 编译器,记录具体版本后 Compile。出现错误时读对应行;不要先切换钱包或部署网络。多合约文件要核对当前选中的合约是 TutorialCounter。

检查结果:编译没有错误,当前选择的名称正确。

3. 确认沙箱环境再部署

打开 Deploy & Run,选名称以 Remix VM 开头的沙箱环境,Value 保持 0,再 Deploy。官方说明 VM 是浏览器内沙箱并预置测试账号;若弹出真实钱包确认,请停止并重新检查环境。

检查结果:Deployed Contracts 出现实例,环境仍为 Remix VM。

4. 先读,再写,再读

展开实例,读取 number,应为初始值 0;在 setNumber 输入 7,执行后再次读取,应为 7。官方文档区分只读函数按钮与改变状态的按钮;此处写入仅在沙箱链中发生。

检查结果:先后读到 0 与 7,并能指出哪一次操作改变状态。

5. 主动验证边界失败

再输入 10 调用 setNumber,合约应按 require 回滚。查看终端错误,并重新读取 number,预期仍为 7。若读到 10,先检查是否部署了另一个没有边界条件的实例;若找不到实例则核对是否切换环境。

检查结果:观察到失败且原状态未被改写,而不是仅看编译通过。

6. 保存练习结果及局限

保留源码、编译器版本、沙箱环境、成功写入与失败后读数。这个演练只证明已执行的读写和边界行为;不能推导任意真实合约安全。不要把沙箱 ETH、实例地址或测试结果展示成主网资金与部署。

检查结果:记录清楚标为本地沙箱;是否实际完成由自己的读数与终端结果证明。

怎样确认完成

  • 在自己的沙箱中观察到 0→7。
  • 输入 10 失败后仍读到 7;若未实际运行,应保留为未验证。

常见错误与边界

  • Browser Extension 与 Remix VM 混淆。
  • 编译成功就当合约行为验证完成。
  • 没有读回状态就声称回滚保留原值。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据