> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://v3.viem.sh/api/mcp` to find what you need.

# Guides

## Overview

Task-oriented guides for building Ethereum applications and libraries with Viem. Each guide
combines related APIs into a complete workflow and links to the API reference for deeper detail.

New to Viem? Start with [Getting Started](/docs), then choose a guide below.

<Cards>
  <Card icon="lucide:box" title="Blocks & Events" description="Read and watch blocks, query logs, and manage event filters." to="/docs/guides/blocks-events" />

  <Card icon="lucide:database" title="Chain Data" description="Inspect addresses, storage, state proofs, and ENS records." to="/docs/guides/chain-data" />

  <Card icon="lucide:network" title="Clients & Transports" description="Set up Clients, resolve them across chains, compose transports, and handle RPC failures." to="/docs/guides/clients" />

  <Card icon="lucide:file-code-2" title="Contract Interactions" description="Read, simulate, write, deploy, batch, and observe smart contracts." to="/docs/guides/contracts" />

  <Card icon="lucide:badge-check" title="EIP-7702 Authorizations" description="Delegate an EOA with EIP-7702 and execute calls through ERC-7821." to="/docs/guides/authorizations" />

  <Card icon="lucide:lock-keyhole" title="Encryption" description="Encrypt data with AES-GCM using password-derived or passkey-derived keys." to="/docs/guides/encryption" />

  <Card icon="lucide:circle-alert" title="Error Handling" description="Type function errors, narrow failures, and inspect nested causes." to="/docs/errors" />

  <Card icon="lucide:blocks" title="Extending Viem" description="Build tree-shakable Actions, preserve types, extend Clients, and publish libraries." to="/docs/guides/extending" />

  <Card icon="lucide:shield-check" title="Post-Quantum" description="Create ML-DSA-44 keys, sign data, and derive keys from passkeys." to="/docs/guides/post-quantum" />

  <Card icon="lucide:flask-conical" title="Testing" description="Test against Anvil by controlling accounts, blocks, state, and the transaction pool." to="/docs/guides/testing" />

  <Card icon="lucide:coins" title="Tokens" description="Define tokens, read balances, transfer funds, and manage allowances." to="/tokens/guides" />

  <Card icon="lucide:send" title="Transactions" description="Send, prepare, sign, estimate, and track Ethereum transactions." to="/docs/guides/transactions" />

  <Card icon="lucide:wallet" title="Wallets & Accounts" description="Connect wallets, work with Accounts, batch calls, request permissions, and sign data." to="/docs/guides/wallets" />

  <Card icon="lucide:cpu" title="WASM & Engines" description="Use WebAssembly, Node.js, and custom cryptography Engines with Viem." to="/docs/guides/engine" />
</Cards>
