Logo
Nuevos usuarios de RPC: 35% de descuento el primer mesVer oferta
RPC Assistant

Endpoint RPC de BNB Smart Chain: Configuración de red, ajustes y depuración

Resumen

Aprende a conectarte a BNB Smart Chain (BSC) con el endpoint RPC, la configuración de red y los métodos JSON-RPC adecuados. Esta referencia cubre endpoints públicos frente a gestionados, modos de fallo comunes y cómo elegir la infraestructura adecuada para cargas de trabajo de producción.

Guía rápida de decisión: ¿qué endpoint RPC de BNB Smart Chain deberías usar?

Antes de copiar un endpoint en tu cartera o dApp, decide qué tipo de acceso RPC se adapta a tu carga de trabajo. La elección afecta la fiabilidad, el costo y cuánta depuración tendrás que hacer después.

  • Prototipado o uso ligero: Un endpoint público como https://bnb.api.onfinality.io/public es suficiente para la configuración de la cartera, scripts pequeños y transacciones de prueba. Los endpoints públicos son compartidos y pueden limitar ráfagas, por lo que no son una base estable para aplicaciones de producción.
  • dApp de producción o indexador: Un servicio RPC gestionado con rendimiento dedicado y soporte es más seguro. Obtienes un rendimiento consistente, acceso a datos de archivo y un equipo que se encarga del mantenimiento de los nodos. Consulta Precios de RPC para ver las opciones.
  • Cargas de trabajo de alto rendimiento o con muchos datos: Si consultas eth_getLogs, ejecutas un indexador o atiendes a muchos usuarios, evalúa nodos dedicados. Aíslan tu tráfico de otros inquilinos y reducen el riesgo de limitación de velocidad.

Si todavía estás evaluando proveedores, lee cómo elegir un proveedor de RPC para obtener un marco más amplio. Para detalles específicos de BNB Chain, el resto de este artículo te proporciona la configuración de red, ejemplos de solicitudes y modos de fallo que encontrarás.

BNB Smart Chain de un vistazo

BNB Smart Chain (BSC) es una cadena de bloques compatible con la Máquina Virtual de Ethereum (EVM) que se ejecuta en paralelo con la cadena de participación de BNB Chain. Debido a que es compatible con EVM, puedes usar métodos JSON-RPC estándar de Ethereum, herramientas como ethers.js y viem, y patrones de configuración de carteras que ya conoces.

Datos clave para la integración RPC:

  • Chain ID: 56 (mainnet), 97 (testnet)
  • Token nativo: BNB (18 decimales)
  • Explorador: BscScan
  • Consenso: Prueba de Autoridad Apostada (PoSA), que produce bloques rápidos (~3 segundos)

El tiempo de bloque rápido significa que tu aplicación enviará más transacciones por minuto que en Ethereum, por lo que tu endpoint RPC necesita manejar una mayor tasa de solicitudes para la misma actividad de usuario.

Configuración de red para carteras y dApps

Cuando agregas BNB Smart Chain a MetaMask o configuras una dApp, necesitas los parámetros de red correctos. La siguiente tabla muestra los valores para mainnet y testnet.

ParámetroMainnetTestnet
Nombre de la redBNB Smart ChainBNB Chain Testnet
URL RPChttps://bnb.api.onfinality.io/publichttps://bnb-testnet.api.onfinality.io/public
Chain ID5697
Símbolo de monedaBNBtBNB
Explorador de bloqueshttps://bscscan.comhttps://testnet.bscscan.com

Usa la testnet para desarrollo y puesta en escena. La testnet usa la misma interfaz RPC, por lo que el código que funciona allí debería funcionar en mainnet con solo cambiar el endpoint y el chain ID.

Ejemplo de configuración de cartera

Si estás agregando BNB Smart Chain a una cartera manualmente, el JSON a continuación muestra la estructura típica utilizada por los proveedores de carteras.

{
  "chainId": "0x38",
  "chainName": "BNB Smart Chain",
  "nativeCurrency": {
    "name": "BNB",
    "symbol": "BNB",
    "decimals": 18
  },
  "rpcUrls": ["https://bnb.api.onfinality.io/public"],
  "blockExplorerUrls": ["https://bscscan.com"]
}

Ten en cuenta que chainId está en hexadecimal: 0x38 equivale a 56. Muchos errores de cartera provienen de usar el chain ID decimal en un campo que espera hexadecimal.

Enviando tu primera solicitud JSON-RPC

La forma más rápida de verificar un endpoint es enviar una solicitud eth_chainId con curl. Esto confirma que el endpoint es accesible y devuelve la cadena esperada.

curl -X POST https://bnb.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'

Una respuesta exitosa se ve así:

{"jsonrpc":"2.0","id":1,"result":"0x38"}

El resultado 0x38 es hexadecimal para 56, lo que confirma que estás en la mainnet de BNB Smart Chain.

Para obtener el número de bloque más reciente, usa eth_blockNumber:

curl -X POST https://bnb.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

Usando ethers.js y viem

La mayoría de los desarrolladores interactúan con BNB Smart Chain a través de una biblioteca. Aquí hay un ejemplo mínimo usando ethers.js v6 para leer el último bloque.

import { JsonRpcProvider } from 'ethers';

const provider = new JsonRpcProvider('https://bnb.api.onfinality.io/public');
const blockNumber = await provider.getBlockNumber();
console.log('Latest block:', blockNumber);

Y lo mismo con viem:

import { createPublicClient, http } from 'viem';

const client = createPublicClient({
  chain: {
    id: 56,
    name: 'BNB Smart Chain',
    nativeCurrency: { name: 'BNB', symbol: 'BNB', decimals: 18 },
    rpcUrls: { default: { http: ['https://bnb.api.onfinality.io/public'] } }
  },
  transport: http()
});

const blockNumber = await client.getBlockNumber();
console.log('Latest block:', blockNumber);

Ambas bibliotecas manejan el formato JSON-RPC y el análisis de errores por ti, pero aún necesitas configurar el chain ID y el endpoint correctos.

Soporte WebSocket para datos en tiempo real

Si tu aplicación necesita actualizaciones en tiempo real, como transacciones pendientes o nuevos bloques, usa un endpoint WebSocket. BNB Smart Chain admite conexiones WebSocket, y OnFinality proporciona una URL WebSocket para la red.

Un ejemplo de suscripción WebSocket usando ethers.js:

import { WebSocketProvider } from 'ethers';

const provider = new WebSocketProvider('wss://bnb.api.onfinality.io/public');

provider.on('block', (blockNumber) => {
  console.log('New block:', blockNumber);
});

Las conexiones WebSocket son stateful y consumen más recursos en el servidor. Para producción, asegúrate de que tu proveedor admita WebSocket con límites de conexión adecuados. Consulta la página de red de BNB Chain para obtener detalles sobre el soporte de transporte.

Modos de fallo comunes y cómo depurarlos

Incluso con un endpoint correcto, te encontrarás con problemas. Aquí están los modos de fallo más comunes al trabajar con el RPC de BNB Smart Chain y cómo diagnosticarlos.

SíntomaCausa probablePaso de depuración
eth_chainId devuelve un valor diferenteRed o endpoint incorrectosVerifica que el chain ID sea 56 (mainnet) o 97 (testnet)
Error nonce too lowEl nonce de la transacción está por detrás del siguiente nonce esperado de la cuentaUsa eth_getTransactionCount con "pending" para obtener el nonce correcto
insufficient fundsEl saldo de la cuenta es demasiado bajo para el gasVerifica el saldo con eth_getBalance y estima el gas con eth_estimateGas
Tiempo de espera de la solicitudCongestión de la red o sobrecarga del endpointReintenta con backoff; considera un endpoint dedicado para producción
Error de límite de velocidad (HTTP 429)Demasiadas solicitudes a un endpoint público compartidoReduce la tasa de solicitudes o actualiza a un servicio gestionado/dedicado
execution revertedLa llamada al contrato inteligente fallóUsa eth_call con una transacción simulada e inspecciona la razón del revert

Depurando una transacción que falla

Cuando una transacción falla, el primer paso es obtener el recibo de la transacción y mirar el campo de estado. Un estado de 0x0 significa que la transacción fue revertida.

curl -X POST https://bnb.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xYOUR_TX_HASH"],"id":1}'

Si el recibo muestra un revert, usa eth_call para simular la transacción y capturar la razón del revert. Muchas bibliotecas proporcionan un método call que devuelve la cadena de la razón.

Endpoints públicos vs gestionados: qué cambia para producción

Los endpoints públicos son convenientes para el desarrollo, pero conllevan compensaciones que afectan a las aplicaciones de producción.

  • Recursos compartidos: Los endpoints públicos son utilizados por muchos desarrolladores. El uso intensivo por parte de otros puede ralentizar tus solicitudes o causar limitación de velocidad.
  • Sin SLA: Los endpoints públicos típicamente no ofrecen garantías de tiempo de actividad ni soporte. Si el endpoint se cae, no tienes recurso.
  • Datos limitados: Algunos endpoints públicos no admiten solicitudes de archivo o suscripciones WebSocket de manera confiable.

Los servicios RPC gestionados, como el servicio API de OnFinality, proporcionan infraestructura dedicada o compartida con límites definidos, monitoreo y soporte. Para cargas de trabajo de producción, debes evaluar si un servicio gestionado satisface tus necesidades.

Al comparar proveedores, considera:

  • Rendimiento y límites de velocidad: ¿Cuál es el máximo de solicitudes por segundo? ¿Hay límites de ráfaga?
  • Disponibilidad de datos: ¿Necesitas datos de archivo o métodos de rastreo?
  • Soporte WebSocket: ¿Se permiten conexiones WebSocket y cuál es el límite?
  • Conmutación por error: ¿El proveedor enruta automáticamente alrededor de fallos de nodos?
  • Soporte: ¿Puedes contactar a un humano cuando algo se rompe?

OnFinality ofrece tanto nodos compartidos como dedicados para BNB Chain. Los nodos dedicados te dan recursos aislados, lo cual es importante para aplicaciones de alto rendimiento o sensibles a la latencia.

Monitoreando la salud de tu RPC

Una vez que tu aplicación esté en vivo, monitorea la salud de tu conexión RPC. Una verificación de salud simple es enviar una solicitud ligera periódicamente y medir el tiempo de respuesta.

while true; do
  start=$(date +%s%N)
  response=$(curl -s -X POST https://bnb.api.onfinality.io/public \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}')
  end=$(date +%s%N)
  echo "Response: $response"
  echo "Latency: $(( (end - start) / 1000000 )) ms"
  sleep 10
done

Configura alertas para picos de latencia, tasas de error y errores de nonce. Si ves errores repetidos de nonce too low, tu lógica de gestión de transacciones puede necesitar manejar transacciones pendientes con más cuidado.

Conclusiones clave

  • BNB Smart Chain es compatible con EVM, por lo que los métodos y herramientas JSON-RPC estándar de Ethereum funcionan.
  • Usa el chain ID correcto (56 para mainnet, 97 para testnet) y el endpoint para evitar errores de configuración.
  • Los endpoints públicos son adecuados para desarrollo, pero las aplicaciones de producción deberían considerar infraestructura gestionada o dedicada para fiabilidad y soporte.
  • Depura problemas comunes verificando el chain ID, nonce, saldo y usando eth_call para simular transacciones.
  • Monitorea la salud de tu RPC con scripts simples y configura alertas para anomalías.

Preguntas frecuentes

¿Cuál es la URL RPC para BNB Smart Chain?

La URL RPC pública para la mainnet de BNB Smart Chain es https://bnb.api.onfinality.io/public. Para testnet, usa https://bnb-testnet.api.onfinality.io/public.

¿Cuál es el chain ID para BNB Smart Chain?

El chain ID es 56 para mainnet y 97 para testnet. En hexadecimal, 56 es 0x38.

¿Puedo usar herramientas de Ethereum con BNB Smart Chain?

Sí, porque BNB Smart Chain es compatible con EVM. Bibliotecas como ethers.js y viem funcionan con cambios de configuración mínimos.

¿Cómo obtengo BNB de prueba para la testnet?

Puedes solicitar BNB de prueba desde un faucet de testnet. Consulta la página de Testnet de BNB Chain para obtener orientación.

¿Qué debo hacer si me limitan la velocidad en un endpoint público?

Reduce tu tasa de solicitudes, implementa caché o actualiza a un servicio RPC gestionado con límites más altos. Consulta Precios de RPC para ver las opciones.

¿OnFinality admite WebSocket para BNB Smart Chain?

Sí, OnFinality admite transporte WebSocket para BNB Smart Chain. Usa la URL WebSocket wss://bnb.api.onfinality.io/public para suscripciones en tiempo real.

Para obtener una lista completa de redes compatibles, visita redes RPC compatibles.

Base de conocimiento RPC

Detalles RPC relacionados

Nunca te preocupes por la infraestructura nuevamente

OnFinality elimina la carga pesada de DevOps para que puedas construir de forma más inteligente y rápida.

Comenzar