OpenChainBench
Consulte benchmarks de infraestrutura cripto ao vivo e reproduzíveis (finalidade L1, latência RPC, taxas de bridge, precisão de gas) a partir de agentes de IA. Servidor remoto, sem chave de API: https://openchainbench.com/api/mcp/mcp
Documentação
OpenChainBench
Benchmarks abertos e reproduzíveis para infraestrutura cripto. Agregadores, pontes, RPCs, oráculos, feeds de preços, mercados de previsão, DEXs perpétuos, mensageria entre cadeias. Mesma métrica, mesmas condições, todos os provedores. Ao vivo em openchainbench.com.
O OpenChainBench publica um benchmark por vez, cada um acompanhado do harness que produz seus dados. O objetivo é tornar o desempenho uma propriedade observável da infraestrutura cripto, medido de forma aberta, por qualquer pessoa que queira adicionar um provedor ou uma métrica.
Comunidade executada, harnesses com licença MIT + dados CC-BY-4.0, PRs de qualquer parte, incluindo os provedores que avaliamos.
De relance
- 94 especificações de benchmark ativas em 8 categorias (RPCs, Trading, Agregadores, Pontes, Blockchains, RWA, Explorers, APIs de NFT)
- 50 harnesses Go autocontidos, cada um com um endpoint Prometheus
/metrics - 32 páginas de perguntas/respostas selecionadas · 23 páginas de destino "alternativas a X"
- 26 rotas de API legíveis por máquina (citação, badges, MCP, feeds, cotações por formato)
- Um Prometheus compartilhado, um worker de materialização, armazenamento de snapshots com fastpath CDN: leituras frias em < 100 ms na borda, sem fan-out de origem em caminhos quentes
Início 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
Adicionar um benchmark, escrever um harness ou corrigir um número: veja CONTRIBUTING.md + o passo a passo visual em /contribute.
Superfícies legíveis por máquina
Cada benchmark é licenciado CC-BY-4.0 e exposto por meio de endpoints projetados para citação por jornalistas, desenvolvedores e agentes de IA:
| Endpoint | Público | O que retorna |
|---|---|---|
/llms.txt · /llms-full.txt | Crawlers de LLM | Índice em texto puro (curto) + contexto Markdown completo (longo) conforme a convenção llmstxt.org. |
/api/citable | Devs, agentes | JSON plano: cada benchmark com valor atual, líder, frase de manchete, URL de citação, URL de imagem OG. |
/api/stat/<slug> | Devs, agentes | Benchmark único: rankings completos, sparkline (24h), metodologia, citação pronta para colar, URL de atribuição. |
/api/cite/<slug>/<format> | Zotero, Mendeley, Perplexity | Citação em bibtex, apa, ris ou txt com o tipo MIME correto. |
/api/openapi.json | LangChain, GPTs personalizados, clientes genéricos | Esquema OpenAPI 3.1 descrevendo cada endpoint. |
/api/mcp/mcp | Clientes MCP (Claude Desktop, Cursor, ferramentas ChatGPT) | Servidor MCP: ferramentas list_benchmarks, get_benchmark, query_prom + recurso openchainbench://benchmark/{slug}. |
/api/freshness | UI ao vivo, dashboards | Mapa {slug → asOf ms}. Cache de borda de 5 s. |
/api/llm-context | Prompts de sistema de LLM | Cada benchmark com rankings + metodologia em um único bloco Markdown. |
/benchmarks/<slug>/opengraph-image | X, LinkedIn, Slack, iMessage | PNG 1200×630 com valor atual + líder + sparkline. Servido automaticamente no unfurl de links. |
/benchmarks/<slug>/share-card?template=... | Exportação manual | 5 modelos (ranking / snapshot / manchete / comparar / leaderboard), ?theme=dark suportado. |
/api/badge/<bench>/<provider> | Sites de provedores, READMEs | SVG incorporável 360×36 com o rank do provedor + figura de manchete. |
/rss.xml · /feed.json | Leitores de feed, ferramentas de agente | Espelhos RSS 2.0 + JSON Feed 1.1, uma entrada por bench ao vivo, atualizados no lançamento. |
/sitemap.xml · /robots.ts | Crawlers | Todos os crawlers de IA (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, …) explicitamente permitidos. |
Dados estruturados em cada página de bench: JSON-LD Dataset + StatisticalReport + Observation + TechArticle + FAQPage + BreadcrumbList, além de um grafo de microdados schema.org Dataset sobreposto à caixa de informações "De relance" visível.
Formato de citação para jornalistas (o que /api/stat/<slug>.headlineSentence emite):
"Mobula leads head lag at 0.8s (p50, 24h) on Fastest onchain data provider.
Source: OpenChainBench (https://openchainbench.com/benchmarks/aggregator-head-lag)"
Superfícies do site
| Rota | O que existe lá |
|---|---|
/ | Hero + tabela de benchmarks mais recentes + dashboard ao vivo |
/benchmarks · /benchmarks/[slug] | Grade de catálogo + leaderboard por bench com gráfico, ledger, filtros de cadeia/região, cartões de compartilhamento, FAQ |
/benchmarks/[slug]/[chain] | Visualização de bench por cadeia com explicador por cadeia |
/products/[slug] | Perfil agregado por provedor: cada bench em que aparece, contagens de top-1, produtos relacionados |
/chains/[slug] | Hub por cadeia: preço nativo ao vivo, histórico de TVL, cada bench que toca esta cadeia agrupado por categoria |
/compare/[a]-vs-[b] | Comparação frente a frente entre benches compartilhados, ordem alfabética canônica aplicada na borda |
/alternatives/[slug] | Páginas de destino "alternativas a X" com leaderboard ao vivo do bench referenciado |
/answers/[slug] | Páginas de perguntas/respostas apoiadas por um bench ao vivo, formatadas para mecanismos de resposta de IA |
/hyperliquid · /hyperliquid/[slug] | Coorte de frontends HyperLiquid + dashboard por builder (receita, volume, data de primeira atividade) |
/perps · /prediction-markets · /rpc | Hubs verticais agregando múltiplos benches por tópico |
/mcp | Documentação do servidor MCP + instruções de instalação |
/methodology · /contribute · /team · /about · /press · /badges | Estático |
Arquitetura
┌─────────────────────────┐ ┌───────────────────┐ ┌──────────────────────┐
│ 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 rodam em um único VPS (
ocb-par-mainem Paris) via docker compose. Alguns harnesses multirregionais (rpc-capabilities-us/eu/sgp, evm-quote-latency, aggregator-head-lag regional) permanecem na Railway e federam no Prom do VPS. - Worker publica snapshots atômicos a cada 60 s no Redis + blobs CDN em
kv.openchainbench.com/aggregate/{latest,benches/<slug>,variants/<slug>/<sig>}.json. O site lê o CDN primeiro (~20 ms na borda), recorre ao SRH e depois à última chave de snapshot conhecida em cache frio. - Site é Next.js 16 App Router no Vercel Fluid Compute. Auto-deploy de
maina cada push (com teste de fumaça do sitemap + auto-rollback + warm-up de páginas de bench); a branchdevroda no preview de staging. - Middleware (
src/middleware.ts) lida com normalização 308 em minúsculas,/compare/<b>-vs-<a>→ ordem alfabética canônica, 410 Gone para benches removidos, 301 para renomeados e normalização de chave de cache em APIs públicas somente leitura. - Relay de stream ao vivo (WebSocket em
wss://stream.openchainbench.com/ws) é um serviço separado executado pela Mobula porque detém as chaves de API upstream; o navegador fala diretamente com ele, o Vercel apenas serve o shell estático.
Passo a passo completo com diagramas + uma seção "clone-e-rote-por-conta-própria" está em docs/architecture.md.
Estrutura do repositório
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
Contribuindo
Leia CONTRIBUTING.md para o guia completo. Resumo:
- Apresente uma ideia em Discussions
- Abra uma issue
📊 Propose a benchmarkcom a métrica + metodologia - Escreva o harness (Go recomendado, qualquer linguagem que entregue
/metricsfunciona) - Hospede-o (em qualquer lugar com HTTPS +
/metricspúblico) - Abra um PR contra
dev: YAML de spec + ref do harness + config de scrape do Prom - Revise no preview de staging; faça merge em
mainquando os dados chegarem
Convenções editoriais
- Mesma métrica, mesmas condições. Se dois provedores não podem ser medidos de forma idêntica, eles não compartilham um bench.
- Marketing de provedor não molda números publicados. Metodologia pública + harness reproduzível são a única fonte de verdade.
- Aposentadoria em vez de remoção. Benches aposentados retornam
410 Gonecom um link para o catálogo atual, para que URLs indexadas anteriormente decaiam de forma limpa. - Sinais de frescor em todo lugar. Toda superfície citável carrega
dateModified+asOfpara que LLMs possam distinguir dados frescos de desatualizados. - Benches em rascunho nunca citam um número. Se o quórum cair, a página renderiza "aguardando amostras" em vez de um líder fabricado.
Comunidade + licença
- Discussions: github.com/ChainBench/OpenChainBench/discussions
- Twitter/X: @OpenChainBench
- Wikidata: Q140172649
- DOI Zenodo: 10.5281/zenodo.20800311
- Espelho de dataset no Hugging Face: OpenChainBench/benchmarks (snapshots parquet diários)
Licença: código do harness MIT · dataset CC-BY-4.0 · atribuição necessária. Veja LICENSE.