Web3 & DApp Development Fundamentals · 课时

cast 与 anvil

CLI 与本地节点

第 4 / 4 课13 个步骤

cast 与 anvil 是 CoddyKit 上的免费 Web3 & DApp Development Fundamentals 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Web3 & DApp Development Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Web3 & DApp Development Fundamentals 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

Two CLI Workhorses

Beyond forge, Foundry ships cast and anvil. cast is a Swiss-army knife for interacting with chains and contracts from the terminal. anvil is a fast local Ethereum node for development.

Together they let you deploy, call, and inspect contracts without writing any application code.

Starting Anvil

Running anvil spins up a local chain at http://127.0.0.1:8545. It prints ten pre-funded accounts with their private keys, ready for testing.

By default it mines a block for every transaction instantly, so there is no waiting.

$ anvil
Listening on 127.0.0.1:8545
Available Accounts
(0) 0xf39F...2266 (10000 ETH)
Private Keys
(0) 0xac09...ff80

Anvil Options

Anvil is highly configurable:

  • --fork-url — fork a live network's state
  • --block-time — mine on a fixed interval instead of per-transaction
  • --accounts / --balance — control test accounts
  • --chain-id — set the chain id
$ anvil --fork-url https://eth.example.com --block-time 5

Reading Chain Data with Cast

cast queries chain state directly. Common read commands:

  • cast block-number — current block
  • cast balance <addr> — ETH balance
  • cast nonce <addr> — account nonce
$ cast block-number --rpc-url http://127.0.0.1:8545
$ cast balance 0xf39F...2266

Calling View Functions

cast call performs a read-only call to a contract function, returning the result without sending a transaction or spending gas.

$ cast call 0xToken "balanceOf(address)(uint256)" 0xUser \
    --rpc-url http://127.0.0.1:8545

Sending Transactions

cast send signs and broadcasts a state-changing transaction. You supply the contract address, the function signature, arguments, and a private key.

$ cast send 0xToken "transfer(address,uint256)" 0xBob 100 \
    --private-key $PK --rpc-url http://127.0.0.1:8545

Encoding and Decoding

Cast handles ABI and data conversions:

  • cast abi-encode / cast calldata — build calldata
  • cast 4byte — look up a function selector
  • cast --to-dec / --to-hex — number base conversion
  • cast keccak — hash a value
$ cast calldata "transfer(address,uint256)" 0xBob 100
$ cast keccak "Transfer(address,address,uint256)"

Inspecting Transactions

After sending, inspect results:

  • cast tx <hash> — transaction details
  • cast receipt <hash> — receipt including gasUsed and logs
  • cast run <hash> — replay with a full trace

cast run is invaluable for debugging why a transaction reverted.

$ cast receipt 0xabc...123
$ cast run 0xabc...123 --rpc-url http://127.0.0.1:8545

Cheats on Anvil

Anvil exposes special RPC methods for testing, mirroring Foundry cheatcodes:

  • anvil_setBalance — set any account's balance
  • anvil_impersonateAccount — send as any address
  • anvil_mine — mine blocks on demand
  • evm_increaseTime — advance the clock

Call them through cast rpc.

$ cast rpc anvil_setBalance 0xUser 0xDE0B6B3A7640000
$ cast rpc evm_increaseTime 3600

A Local Workflow

A typical local loop:

  • Start anvil in one terminal
  • Deploy with forge script or forge create against it
  • Use cast send and cast call to exercise the contract
  • Debug failures with cast run

All without leaving the command line.

$ forge create src/Counter.sol:Counter \
    --private-key $PK --rpc-url http://127.0.0.1:8545

Forking for Realistic Tests

Combining anvil --fork-url with cast lets you experiment against a snapshot of mainnet locally: impersonate a whale, call a live protocol, and see real behavior without spending real funds.

This is the safest way to prototype interactions with deployed contracts.

Quick Check

Which command performs a read-only call to a contract function without sending a transaction or spending gas?

Recap

You learned the cast and anvil tools:

  • anvil runs a fast local node with pre-funded accounts and forking
  • cast call reads state; cast send writes it
  • Cast encodes/decodes calldata, hashes, and inspects receipts and traces
  • cast run replays transactions for debugging
  • Anvil RPC cheats manipulate balances, time, and mining

This completes the Foundry Toolkit course.

免费开始

用 AI 导师学习 Web3 & DApp Development Fundamentals — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
29
课程
105

常见问题解答

「cast 与 anvil」课时是免费的吗?

是的 — 「cast 与 anvil」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Web3 & DApp Development Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Web3 & DApp Development Fundamentals 课程共包含 4 节课。

「cast 与 anvil」这节课中我会学到什么?

CLI 与本地节点 你通过在浏览器中直接运行的动手代码来练习 Web3 & DApp Development Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Web3 & DApp Development Fundamentals 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Web3 & DApp Development Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「cast 与 anvil」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Web3 & DApp Development Fundamentals 课中编写并运行代码吗?

能。每节 Web3 & DApp Development Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Foundry 与 Hardhat 对比
  2. forge 测试
  3. 模糊测试与不变量
  4. cast 与 anvil
← 返回 Web3 & DApp Development Fundamentals