viem
Documentation for using Viem, a TypeScript interface for EVM-compatible blockchains. This page covers installation, setup, and various functionalities such as reading and writing blockchain data and interacting with smart contracts on Base.
viem
Viem is currently only available on Base Sepolia testnet.
viem a TypeScript interface for Ethereum that provides low-level stateless primitives for interacting with Ethereum.
You can use viem to interact with smart contracts deployed on Base.
Install
To install viem run the following command:
Setup
Before you can start using viem, you need to setup a Client with a desired Transport and Chain.
To use Base, you must specify base
as the chain when creating a Client.
To use Base Sepolia (testnet), replace base
with baseSepolia
.
Reading data from the blockchain
Once you have created a client, you can use it to read and access data from Base using Public Actions
Public Actions are client methods that map one-to-one with a “public” Ethereum RPC method (eth_blockNumber
, eth_getBalance
, etc.)
For example, you can use the getBlockNumber
client method to get the latest block:
Writing data to the blockchain
In order to write data to Base, you need to create a Wallet client (createWalletClient
) and specify an Account
to use.
In addition to making a JSON-RPC request (eth_requestAccounts
) to get an Account, viem provides various helper methods for creating an Account
, including: privateKeyToAccount
, mnemonicToAccount
, and hdKeyToAccount
.
To use Base Sepolia (testnet), replace base
with baseSepolia
.
Interacting with smart contracts
You can use viem to interact with a smart contract on Base by creating a Contract
instance using getContract
and passing it the contract ABI, contract address, and Public and/or Wallet Client:
CONTRACT_ADDRESS
is the address of the deployed contract.