viem
Conéctese a 256 Blocks usando viem
viem es una interfaz con TypeScript como prioridad para Ethereum que proporciona primitivas de bajo nivel sin estado para interactuar con la blockchain. Se enfoca en la experiencia del desarrollador, estabilidad, tamaño del bundle y rendimiento.
Instalación
npm install viemO con yarn:
yarn add viemInicio Rápido
Conéctese a 256 Blocks usando el encabezado X-API-Key con fetchOptions:
import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';
// Create the transport with custom headers
const transport = http('https://rpc.256blocks.com/ethereum', {
fetchOptions: {
headers: {
'X-API-Key': 'your-api-key'
}
}
});
// Create the client
const client = createPublicClient({
chain: mainnet,
transport
});
// Get the latest block number
const blockNumber = await client.getBlockNumber();
console.log('Latest block:', blockNumber);Lectura del Saldo de una Cuenta
import { createPublicClient, http, formatEther } from 'viem';
import { mainnet } from 'viem/chains';
const transport = http('https://rpc.256blocks.com/ethereum', {
fetchOptions: {
headers: {
'X-API-Key': 'your-api-key'
}
}
});
const client = createPublicClient({
chain: mainnet,
transport
});
// Get account balance
const balance = await client.getBalance({
address: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb'
});
console.log('Balance:', formatEther(balance), 'ETH');Lectura de Datos de Contratos
import { createPublicClient, http, formatUnits } from 'viem';
import { mainnet } from 'viem/chains';
const transport = http('https://rpc.256blocks.com/ethereum', {
fetchOptions: {
headers: {
'X-API-Key': 'your-api-key'
}
}
});
const client = createPublicClient({
chain: mainnet,
transport
});
// ERC-20 ABI (minimal)
const erc20Abi = [
{
name: 'balanceOf',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'account', type: 'address' }],
outputs: [{ type: 'uint256' }]
},
{
name: 'decimals',
type: 'function',
stateMutability: 'view',
inputs: [],
outputs: [{ type: 'uint8' }]
}
] as const;
// USDC contract on Ethereum
const usdcAddress = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
const balance = await client.readContract({
address: usdcAddress,
abi: erc20Abi,
functionName: 'balanceOf',
args: ['0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb']
});
const decimals = await client.readContract({
address: usdcAddress,
abi: erc20Abi,
functionName: 'decimals'
});
console.log('USDC Balance:', formatUnits(balance, decimals));Soporte Multi-Cadena
Conéctese a diferentes cadenas usando la configuración de cadena apropiada:
import { createPublicClient, http } from 'viem';
import { mainnet, base, arbitrum, polygon, optimism } from 'viem/chains';
function createClient(chain: any, chainPath: string, apiKey: string) {
const transport = http(`https://rpc.256blocks.com/${chainPath}`, {
fetchOptions: {
headers: {
'X-API-Key': apiKey
}
}
});
return createPublicClient({ chain, transport });
}
// Create clients for different chains
const ethClient = createClient(mainnet, 'ethereum', 'your-api-key');
const baseClient = createClient(base, 'base', 'your-api-key');
const arbClient = createClient(arbitrum, 'arbitrum', 'your-api-key');
const polygonClient = createClient(polygon, 'polygon', 'your-api-key');