OpenChainBench
Consulta puntos de referencia reproducibles de infraestructura cripto en vivo (finalidad L1, latencia RPC, tarifas de puente, precisión de gas) desde agentes de IA. Servidor remoto, sin clave API: https://openchainbench.com/api/mcp/mcp
Documentación
OpenChainBench
Benchmarks abiertos y reproducibles para infraestructura cripto. Agregadores, puentes, RPCs, oráculos, feeds de precios, mercados de predicción, DEX de perpetuos, mensajería entre cadenas. Misma métrica, mismas condiciones, cada proveedor. En vivo en openchainbench.com.
OpenChainBench publica un benchmark a la vez, cada uno con el harness que produce sus datos. El objetivo es hacer del rendimiento una propiedad observable de la infraestructura cripto, medida en abierto, por cualquiera que quiera añadir un proveedor o una métrica.
Dirigido por la comunidad, harnesses con licencia MIT + datos CC-BY-4.0, PRs de cualquier parte, incluidos los proveedores que evaluamos.
De un vistazo
- 94 especificaciones de benchmark en vivo en 8 categorías (RPCs, Trading, Agregadores, Puentes, Blockchains, RWA, Exploradores, APIs de NFT)
- 50 harnesses autocontenidos en Go, cada uno con un endpoint Prometheus
/metrics - 32 páginas de preguntas/respuestas curadas · 23 páginas de aterrizaje "alternativas a X"
- 26 rutas de API legibles por máquina (citación, insignias, MCP, feeds, cotizaciones por formato)
- Un Prometheus compartido, un worker de materialización, almacén de snapshots con fastpath CDN: lecturas en frío en < 100 ms en el edge, sin fan-out de origen en rutas calientes
Inicio rápido
pnpm install
pnpm dev # site at http://localhost:3000
pnpm validate # bench spec Zod schema check (run before opening a PR)
pnpm typecheck # tsc --noEmit
Para añadir un benchmark, escribir un harness o corregir un número: consulta CONTRIBUTING.md + el recorrido visual en /contribute.
Superficies legibles por máquina
Cada benchmark tiene licencia CC-BY-4.0 y se expone a través de endpoints diseñados para citación por periodistas, desarrolladores y agentes de IA:
| Endpoint | Audiencia | Qué devuelve |
|---|---|---|
/llms.txt · /llms-full.txt | Rastreadores de LLM | Índice en texto plano (corto) + contexto completo en Markdown (largo) según la convención llmstxt.org. |
/api/citable | Desarrolladores, agentes | JSON plano: cada benchmark con valor actual, líder, frase titular, URL de citación, URL de imagen OG. |
/api/stat/<slug> | Desarrolladores, agentes | Benchmark individual: rankings completos, sparkline (24h), metodología, cita lista para pegar, URL de atribución. |
/api/cite/<slug>/<format> | Zotero, Mendeley, Perplexity | Citación en bibtex, apa, ris o txt con el tipo MIME correcto. |
/api/openapi.json | LangChain, GPTs personalizados, clientes genéricos | Esquema OpenAPI 3.1 que describe cada endpoint. |
/api/mcp/mcp | Clientes MCP (Claude Desktop, Cursor, herramientas de ChatGPT) | Servidor MCP: herramientas list_benchmarks, get_benchmark, query_prom + recurso openchainbench://benchmark/{slug}. |
/api/freshness | UI en vivo, paneles | Mapa {slug → asOf ms}. Cacheado en el edge durante 5 s. |
/api/llm-context | Prompts de sistema de LLM | Cada benchmark con rankings + metodología en un solo bloque Markdown. |
/benchmarks/<slug>/opengraph-image | X, LinkedIn, Slack, iMessage | PNG de 1200×630 con valor actual + líder + sparkline. Se sirve automáticamente al desplegar el enlace. |
/benchmarks/<slug>/share-card?template=... | Exportación manual | 5 plantillas (ranking / snapshot / titular / comparación / leaderboard), ?theme=dark compatible. |
/api/badge/<bench>/<provider> | Sitios de proveedores, READMEs | SVG incrustable de 360×36 con el rango del proveedor + cifra principal. |
/rss.xml · /feed.json | Lectores de feeds, herramientas de agentes | Espejos RSS 2.0 + JSON Feed 1.1, una entrada por benchmark en vivo, actualizados en cada lanzamiento. |
/sitemap.xml · /robots.ts | Rastreadores | Todos los rastreadores de IA (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, …) explícitamente permitidos. |
Datos estructurados en cada página de benchmark: JSON-LD Dataset + StatisticalReport + Observation + TechArticle + FAQPage + BreadcrumbList, además de un grafo de microdatos schema.org Dataset superpuesto al infobox visible "De un vistazo".
Formato de citación para periodistas (lo que emite /api/stat/<slug>.headlineSentence):
"Mobula leads head lag at 0.8s (p50, 24h) on Fastest onchain data provider.
Source: OpenChainBench (https://openchainbench.com/benchmarks/aggregator-head-lag)"
Superficies del sitio
| Ruta | Qué contiene |
|---|---|
/ | Hero + tabla de benchmarks más recientes + panel en vivo |
/benchmarks · /benchmarks/[slug] | Cuadrícula de catálogo + leaderboard por benchmark con gráfico, ledger, filtros de cadena/región, tarjetas para compartir, FAQ |
/benchmarks/[slug]/[chain] | Vista de benchmark por cadena con explicación específica de la cadena |
/products/[slug] | La página única por producto: cada benchmark en el que aparece, recuentos de top-1, productos relacionados y una vista por categoría a la que pertenece (app de trading, perpetuos, mercados de predicción, API de datos, puente, RPC, Hyperliquid) seleccionable por píldora o hash de URL |
/chains/[slug] | Centro por cadena: precio nativo en vivo, historial de TVL, cada benchmark que toca esta cadena agrupado por categoría |
/compare/[a]-vs-[b] | Comparación cara a cara entre benchmarks compartidos, orden alfabético canónico aplicado en el edge |
/alternatives/[slug] | Páginas de aterrizaje "alternativas a X" con leaderboard en vivo del benchmark referenciado |
/answers/[slug] | Páginas de preguntas/respuestas respaldadas por un benchmark en vivo, formateadas para motores de respuesta de IA |
/hyperliquid | Cohorte de frontends de HyperLiquid; el panel de cada constructor (ingresos, volumen, fecha de primera actividad) es la vista Hyperliquid de su página /products/[slug] |
/perps · /prediction-markets · /rpc | Centros verticales que agregan múltiples benchmarks por tema |
/mcp | Documentación del servidor MCP + instrucciones de instalación |
/methodology · /contribute · /team · /about · /press · /badges | Estáticas |
Arquitectura
┌─────────────────────────┐ ┌───────────────────┐ ┌──────────────────────┐
│ 50 Go harnesses on │ │ Shared Prometheus │ │ Materialization worker│
│ ocb-par-main (Paris) │─── ▶│ (same VPS) │───▶│ (same VPS, docker) │
│ each exposes /metrics │ │ federates a few │ │ sweeps every 60s │
└─────────────────────────┘ │ Railway regional │ └──────┬───────────────┘
│ harnesses │ │
└───────────────────┘ ▼
┌─────────────────────────┐
│ Redis + CDN blob store │
│ (SRH at kv.opencha…) │
└──────────┬──────────────┘
│
┌─────────────────────────┐
│ Vercel Fluid Compute: │
│ pages read CDN blobs │
│ first, SRH as fallback, │
│ last-known-good on cold │
└─────────────────────────┘
- Harnesses + Prometheus + worker + Redis + SRH se ejecutan en un VPS (
ocb-par-mainen París) mediante docker compose. Un puñado de harnesses multirregión (rpc-capabilities-us/eu/sgp, evm-quote-latency, aggregator-head-lag regionales) permanecen en Railway y se federan en el Prometheus del VPS. - Worker publica snapshots atómicos cada 60 s en Redis + blobs CDN en
kv.openchainbench.com/aggregate/{latest,benches/<slug>,variants/<slug>/<sig>}.json. El sitio lee primero el CDN (~20 ms en el edge), recurre a SRH y luego a la clave de snapshot última conocida en caché fría. - Sitio es Next.js 16 App Router en Vercel Fluid Compute. Auto-despliegue desde
mainen cada push (con prueba de humo del sitemap + auto-rollback + precalentamiento de páginas de benchmark); la ramadevse ejecuta en la vista previa de staging. - Middleware (
src/middleware.ts) gestiona la normalización 308 en minúsculas,/compare/<b>-vs-<a>→ orden alfabético canónico, 410 Gone para benchmarks eliminados, 301 para los renombrados y normalización de claves de caché en APIs públicas de solo lectura. - Relé de stream en vivo (WebSocket en
wss://stream.openchainbench.com/ws) es un servicio separado gestionado por los mantenedores de OpenChainBench porque tiene claves de API upstream; el navegador habla directamente con él, Vercel solo sirve el shell estático.
Recorrido completo con diagramas + una sección "clona y ejecútalo tú mismo" en docs/architecture.md.
Estructura del repositorio
benchmarks/ 94 YAML specs, one per public benchmark
harnesses/ 50 Go harnesses, each self-contained + Dockerized
answers/ 32 Q&A YAMLs backing /answers/<slug>
alternatives/ 23 "alternatives to X" YAMLs backing /alternatives/<slug>
worker/ Materialization worker (sweeps Prom → publishes CDN + Redis blobs)
infrastructure/ Shared Prometheus config
src/ Next.js 16 site (App Router, ISR, Tailwind 4, TypeScript, Zod)
docs/ architecture.md, methodology, walkthrough.md
scripts/ Spec validators + prebuild manifest generators
.github/ CI: prod deploy, staging preview, sync dev from main
Contribuciones
Lee CONTRIBUTING.md para la guía extensa. TL;DR:
- Propón una idea en Discussions
- Abre un issue
📊 Propose a benchmarkcon la métrica + metodología - Escribe el harness (Go recomendado, cualquier lenguaje que sirva
/metricsfunciona) - Alójalo (en cualquier lugar con HTTPS +
/metricspúblico) - Abre un PR contra
dev: YAML de especificación + referencia del harness + configuración de scrape de Prom - Revisa en la vista previa de staging; fusiona a
maincuando lleguen los datos
Convenciones editoriales
- Misma métrica, mismas condiciones. Si dos proveedores no pueden medirse de forma idéntica, no comparten benchmark.
- El marketing de los proveedores no da forma a los números publicados. La metodología pública + el harness reproducible son la única fuente de verdad.
- Retiro antes que eliminación. Los benchmarks retirados devuelven
410 Gonecon un enlace al catálogo actual para que las URLs previamente indexadas decaigan limpiamente. - Señales de frescura en todas partes. Cada superficie citable lleva
dateModified+asOfpara que los LLM distingan datos frescos de obsoletos. - Los benchmarks en borrador nunca citan un número. Si el quórum cae, la página muestra "esperando muestras" en lugar de un líder fabricado.
Comunidad + licencia
- Discussions: github.com/ChainBench/OpenChainBench/discussions
- Twitter/X: @OpenChainBench
- Wikidata: Q140172649
- DOI de Zenodo: 10.5281/zenodo.20800311
- Espejo de dataset en Hugging Face: OpenChainBench/benchmarks (snapshots parquet diarios)
Licencia: código de harness MIT · dataset CC-BY-4.0 · atribución requerida. Consulta LICENSE.