viem

INFO

Viem actualmente solo está disponible en Base Goerli testnet(red de prueba).

viem es una interfaz TypeScript para Ethereum que proporciona primitivas sin estado de bajo nivel para interactuar con Ethereum.

Puedes usar viem para interactuar con contratos inteligentes desplegados en Base.

Instalar Para instalar viem, ejecute el siguiente comando:

cssCopy code
npm install --save viem

Configuración

Antes de que puedas comenzar a usar viem, necesitas configurar un Cliente con un Transporte y una blockchain especifica.

javascriptCopy code
import { createPublicClient, http } from 'viem';
import { base } from 'viem/chains';

const client = createPublicClient({
  chain: base,
  transport: http(),
});

INFO

Para usar Base, debes especificar base como la cadena al crear un Cliente.

Para usar Base Goerli (testnet), reemplace base con baseGoerli.

Leyendo datos de la blockchain

Una vez que hayas creado un cliente, puedes usarlo para leer y acceder a datos de Base usando Acciones Públicas.

Las Acciones Públicas son métodos del cliente que se mapean uno a uno con un método RPC "público" de Ethereum (eth_blockNumber, eth_getBalance, etc.)

Por ejemplo, puedes usar el método getBlockNumber del cliente para obtener el último bloque:

javascriptCopy code
const blockNumber = await client.getBlockNumber();

Escribiendo datos en la blockchain

Para escribir datos en Base, necesitas crear un cliente de Billetera (createWalletClient) y especificar una Account (Cuenta) para usar.

javascriptCopy code
import { createWalletClient, custom } from 'viem'
import { base } from 'viem/chains'

const [account] = await window.ethereum.request({ method: 'eth_requestAccounts' })

const client = createWalletClient({
  account,
  chain: base,
  transport: custom(window.ethereum)
})

client.sendTransaction({ ... })

INFO

Además de hacer una solicitud JSON-RPC (eth_requestAccounts) para obtener una Cuenta, viem proporciona varios métodos auxiliares para crear una Account (Cuenta), incluyendo: privateKeyToAccount, mnemonicToAccount y hdKeyToAccount.

Para usar Base Goerli (testnet), reemplace base con baseGoerli.

Interactuando con contratos inteligentes

Puedes usar viem para interactuar con un contrato inteligente en Base creando una instancia de Contract (contrato) usando getContract y pasándole el ABI del contrato, la dirección del contrato y el Cliente Público y/o de Billetera:

javascriptCopy code
import { getContract } from 'viem';
import { wagmiAbi } from './abi';
import { publicClient } from './client';

// 1. Crear instancia de contrato
const contract = getContract({
  address: 'DIRECCION_CONTRATO',
  abi: wagmiAbi,
  publicClient,
});

// 2. Llamar a métodos del contrato, escuchar eventos, etc.
const result = await contract.read.totalSupply();

INFO

DIRECCION_CONTRATO es la dirección del contrato desplegado.

Last updated