在以太坊智能合约的开发与测试过程中,拥有一个快速、稳定且无需消耗真实加密货币的本地测试环境至关重要,TestRPC(现通常称为 ganache-cli,是原 ethereumjs-testrpc 的继任者)正是这样一个强大的工具,它是一个基于 JavaScript 的以太坊区块链模拟器,可以在本地快速启动一个私有的以太坊网络,让开发者能够高效地编写、部署和测试他们的智能合约,而无需担心主网的高昂 Gas 费用或网络延迟,本文将详细介绍如何安装并开始使用 TestRPC(ganache-cli)。

什么是 TestRPC (ganache-cli)

TestRPC 最初由 ethereumjs 团队开发,旨在提供一个轻量级、内存中的以太坊节点模拟器,它的主要特点包括:

  1. 快速启动:几乎瞬间启动一个区块链网络。
  2. 高性能:在内存中运行,交易处理速度远超真实节点。
  3. 预置账户:默认创建多个带有测试 Ether 的账户,方便开发测试。
  4. 即时挖矿:所有交易都会被立即打包出块,无需等待确认时间。
  5. 可配置性:支持多种配置选项,如区块时间、gas 限制等。
  6. API 兼容:提供与标准 JSON-RPC 兼容的接口,可方便地与 Truffle、Web3.js 等开发工具集成。

随着项目发展,TestRPC 已并入 Truffle Suite 生态系统,并更名为 ganacheganache-cli 是其命令行版本。

安装前准备:Node.js 和 npm

TestRPC (ganache-cli) 是一个 Node.js 包,因此你需要先安装 Node.js 和其包管理器 npm,你可以从 Node.js 官方网站 下载并安装 LTS(长期支持)版本,安装完成后,打开终端或命令提示符,输入以下命令验证安装:

node -v
npm -v

如果显示了版本号,则表示安装成功。

TestRPC (ganache-cli) 的安装

安装 ganache-cli 非常简单,只需使用 npm 的全局安装命令即可,打开你的终端(Windows 下为 Command Prompt、PowerShell 或 Git Bash;macOS/Linux 下为 Terminal),执行以下命令:

npm install -g ganache
  • -g 参数表示全局安装,这样你可以在任何地方通过 ganache 命令启动它。

安装完成后,同样可以通过以下命令验证是否安装成功:

ganache --version

如果输出了 ganache 的版本信息,说明安装成功。

启动和使用 TestRPC (ganache-cli)

安装完成后,你就可以启动 TestRPC 了。

基本启动

在终端中直接输入 ganache 并回车:

ganache

启动后,你会看到类似以下的输出:

Ganache CLI vX.X.X (ganache-core: X.X.X)
Available Accounts
==================
(0) 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B (100 ETH)
(1) 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed (100 ETH)
(2) 0x5FCDA35Az4zj5tXZf1BjW8WjzMJBfE4rQ7x6i6YdJt (100 ETH)
(3) 0x663B8c4b57B3a7B6D547d1bB4a3A8fA2a6A6a6a6 (100 ETH)
(4) 0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db (100 ETH)
(5) 0x6A5a8B5c5D4E3F2A1B0C9D8E7F6A5B4C3D2E1F0A (100 ETH)
(6) 0x7B8C9D0E1F2A3B4C5D6E7F8A9B0C1D2E3F4A5B6C (100 ETH)
(
随机配图
7) 0x8C9D0E1F2A3B4C5D6E7F8A9B0C1D2E3F4A5B6C7D (100 ETH) (8) 0x9D0E1F2A3B4C5D6E7F8A9B0C1D2E3F4A5B6C7D8E (100 ETH) (9) 0xA0E1F2A3B4C5D6E7F8A9B0C1D2E3F4A5B6C7D8E9F (100 ETH) Private Keys ================== (0) 0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d (1) 0x6cbed15c79ce9d81489631b2ea3e1a4e05c0df1c7d21abe29608a88f7ffa5eb0 ... (省略其他私钥) HD Wallet ================== Mnemonic: legal thank year wave sausage worth useful legal despair creek road again ice Base HD Path: m/44'/60'/0'/0/ (default) Listening on 127.0.0.1:8545
  • Available Accounts:列出了 10 个默认创建的测试账户,每个账户都有 100 个测试 Ether。
  • Private Keys:对应每个账户的私钥,可用于导入钱包等操作。
  • HD Wallet:提供了助记词(Mnemonic),你可以用这个助记词在支持 HD 钱包的软件中恢复这些账户。
  • Listening on 127.0.0.1:8545:表示 TestRPC 正在本地的 8545 端口监听 JSON-RPC 请求,这是默认端口,你可以通过启动参数修改。

常用启动参数

ganache 命令支持多种参数,以便自定义测试网络的行为,以下是一些常用的参数:

  • -a, --accounts <number>:指定创建的测试账户数量,默认为 10。
    ganache -a 20
  • -e, --ether <amount>:指定每个账户的初始 Ether 余额,单位是 Ether,默认为 100。
    ganache -e 1000
  • -g, --gasPrice <number>:设置默认的 gas 价格(单位:wei),默认为 20000000000 (20 Gwei)。
    ganache -g 1000000000
  • -l, --gasLimit <number>:设置每个区块的 gas 限制,默认为 0xffffffff (无限)。
    ganache -l 8000000
  • -m, --mnemonic <string>:指定助记词,这样可以复用相同的账户。
    ganache -m "your secret mnemonic here"
  • -p, --port <number>:指定监听端口,默认为 8545。
    ganache -p 8546
  • -h, --host <host>:指定监听主机,默认为 127.0.0.1,如果需要远程访问,可以设置为 0.0.0
    ganache -h 0.0.0.0
  • --db <path>:指定区块链数据存储路径,默认为内存。
    ganache --db ./ganache_db

你可以组合使用这些参数,

ganache -a 15 -e 50 -p 8546 -m "test test test test test test test test test test test test test test test test test test test test"

与 TestRPC 交互

启动 TestRPC 后,你可以使用任何支持 JSON-RPC 的工具与之交互,最常见的是通过 Web3.js 或 Ethers.js 库在 JavaScript 代码中连接到 TestRPC。

示例:使用 Web3.js 连接 TestRPC

首先安装 Web