viem - 오랜만에 시작하는 web3

Hunter Joe·2025년 8월 8일
0




→←↑↓
📌⚠️

📌 Getting Started

viem docs의 Getting Started 부분정리해 놓은 것

import { createPublicClient, http } from "viem";
import { mainnet } from "viem/chains";

export default async function Home() {
  const client = createPublicClient({
    chain: mainnet,
    transport: http(),
  });

  const blockNumber = await client.getBlockNumber();
  
  console.log(blockNumber);
  return <div>Hello World</div>;
}

// console.
e.g. 23098157n

뒤의 n은 JavaScript의 BigInt 타입 표기

viem의 getBlockNumber()는 정밀도를 보존하기 위해 bigint를 반환하므로 콘솔에 23098157n처럼 표시

출력은 문자열로변환 할 것
문자열로 출력: blockNumber.toString() → "23098157"

📌 Introduction

viem에는 3가지 Client가 존재
1. Public Client : Public한 액션들에 접근
2. Wallet Client : 지갑과 관련한 액션들에 접근
3. Test Client : 테스트에 필요한 액션에 접근(채굴, 다른 계정의 신원으로 행동하는 기능)

📌 Transports


HTTP Transport

  • HTTP(JSON-RPC API) 방식으로 요청을 보냄
  • http://... 주소를 통해 블록체인 노드와 통신
  • 간단 + 안정적

WebSocket Transport

  • WebSocket(JSON-RPC API) 방식으로 요청을 보냄
  • wss://... 주소로 실시간 양방향 통신
  • 블록 생성, 이벤트 발생 같은 알림을 실시간으로 받을 수 있음
  • 연결 유지 관리가 필요

Custom Transport

  • EIP-1193 규격의 request 함수를 사용하는 커스텀 방식
  • 브라우저의 MetaMask provider, WalletConnect provider 등을 직접 연결
  • 사용자가 직접 정의한 방식으로 요청을 처리 가능.
profile
Async FE 취업 준비중.. Await .. (취업완료 대기중) ..

0개의 댓글