RISE Logo-Light

Get Started with Viem

Set up Viem for RISE development

Learn how to set up and configure Viem for building on RISE.

Installation

Install Viem using your preferred package manager:

npm install viem

Project Setup

Create a new TypeScript project:

mkdir my-rise-viem-project
cd my-rise-viem-project
npm init -y
npm install --save-dev typescript @types/node
npx tsc --init

Import RISE Testnet

RISE Testnet is available in Viem's built-in chains:

import { riseTestnet } from 'viem/chains'

That's it! No need to manually configure the chain.

Create Clients

Public Client (Read-only)

For reading blockchain data:

import { createPublicClient, http } from 'viem'
import { riseTestnet } from 'viem/chains'

const publicClient = createPublicClient({
  chain: riseTestnet,
  transport: http()
})

// Get block number
const blockNumber = await publicClient.getBlockNumber()
console.log('Block number:', blockNumber)

// Get account balance
const balance = await publicClient.getBalance({
  address: '0x...'
})
console.log('Balance:', balance)

Wallet Client (Read & Write)

For sending transactions:

import { createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { riseTestnet } from 'viem/chains'

const account = privateKeyToAccount('0xYOUR_PRIVATE_KEY')

const walletClient = createWalletClient({
  account,
  chain: riseTestnet,
  transport: http()
})

// Send a transaction
const hash = await walletClient.sendTransaction({
  to: '0x...',
  value: 1000000000000000000n // 1 ETH
})
console.log('Transaction hash:', hash)

Environment Variables

Create a .env file for sensitive data:

PRIVATE_KEY=0x...
RPC_URL=https://testnet.riselabs.xyz

Load environment variables:

import { config } from 'dotenv'
config()

const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)

Example: Complete Setup

// index.ts
import { createPublicClient, createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { riseTestnet } from 'viem/chains'

// Initialize clients
const publicClient = createPublicClient({
  chain: riseTestnet,
  transport: http()
})

const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)

const walletClient = createWalletClient({
  account,
  chain: riseTestnet,
  transport: http()
})

// Get account info
const address = account.address
const balance = await publicClient.getBalance({ address })
const blockNumber = await publicClient.getBlockNumber()

console.log('Address:', address)
console.log('Balance:', balance)
console.log('Latest block:', blockNumber)

Next Steps