Monitor de Encomendas HyperCore
Acompanhe as ordens de negociação no Hyperliquid Core (L1) em tempo real com o Quicknode Streams e o KV Store para uma filtragem dinâmica.

Visão geral
Esta aplicação de exemplo permite o acompanhamento em tempo real de ordens de negociação no Hyperliquid Core (L1). Recorre ao Quicknode Streams + Key-Value Store (KV Store) para uma filtragem inteligente e dinâmica, sem necessidade de reiniciar os fluxos. Monitorize os grandes investidores, acompanhe o estado das ordens e receba atualizações em tempo real através de uma interface de utilizador moderna.
Arquitetura
Núcleo Hiperlíquido (L1)
-> Quicknode Streams + KV
-> POST /api/webhook/streams (assinatura verificada)
-> Upsert no OrderLog + emissão de SSE
-> Feed de encomendas em tempo real na interface do utilizador
Características
- Filtragem de endereços em tempo real através de listas do KV Store
- Filtragem dinâmica por estado (em aberto, concluído, cancelado, rejeitado, acionado)
- Filtragem nativa da blockchain ao nível do fluxo
- Server-Sent Events (SSE) para atualizações em tempo real da interface do utilizador
- Scripts de configuração do Quicknode Streams (criar + ativar)
- Adicionar endereços de negociadores em massa
- Verificação da assinatura do webhook e verificações do carimbo temporal
- Resolução ENS para endereços Ethereum (opcional)
- Prisma + armazenamento local SQLite
Pré-requisitos
- Node.js 20+ e um gestor de pacotes (pnpm, yarn, npm).
- Conta Quicknode com acesso a Streams e ao KV Store: Crie uma conta e obtenha o seu Chave da API de administração para
QN_API_KEY. - URL pública do webhook: Utilize um túnel como
ngrokou implementar a aplicação de forma a queAPP_URLé acessível através do Quicknode. - Opcional: Ponto de extremidade RPC da rede principal do Ethereum para a resolução de nomes ENS (
QN_EVM_ENDPOINT).
Estrutura do projeto
filtros/
hl-orders-filter.js # Filtro Quicknode Streams (HyperCore)
scripts/
setup-streams.ts # Cria listas KV + stream (em pausa)
activate-streams.ts # Ativa o fluxo por ID
src/
app/api/ # Rotas da API (webhooks, utilizadores, SSE)
lib/ # Auxiliares do Quicknode, webhooks e SSE
types/ # Definições do TypeScript
prisma/
schema.prisma # Esquema SQLite
Variáveis de ambiente
Copiar .env.example para .env e preencha:
QN_API_KEY="" # Chave API do Quicknode com permissões para Streams + KV
QN_STREAM_SECURITY_TOKEN="" # Token de segurança do Stream (do script de configuração)
APP_URL="http://localhost:3000" # URL pública da aplicação (ngrok para webhooks locais)
DATABASE_URL="file:./dev.db" # Base de dados SQLite
QN_EVM_ENDPOINT="" # Opcional: RPC da Ethereum para resolução do ENS
ADMIN_API_KEY="" # Opcional para desenvolvimento local, obrigatório para produção
Notas:
QN_STREAM_SECURITY_TOKENé devolvido porconfiguração:streams.APP_URLtem de estar acessível pelo Quicknode (utilize o ngrok ou um URL implementado).- Certifique-se de que a sua chave API tem as permissões para Streams e KV Store ativadas.
Introdução
1. Instalar as dependências
pnpm instalar
# npm install
# yarn install
2. Crie o seu ficheiro de ambiente
cp .env.example .env
3. Adicionar as variáveis necessárias
Preencha .env (ver Pré-requisitos).
Para webhooks locais, exponha a sua aplicação com o ngrok e copie o URL HTTPS para APP_URL:
ngrok http 3000
4. Inicializar a base de dados
pnpm prisma migrate dev --nome hypercore-order-monitor
pnpm db:seed
O script inicial cria filtros de estado (ativando abrir, preenchido, acionado (por predefinição) e adiciona um endereço de trader de exemplo.
5. Criar fluxos Quicknode + listas KV
pnpm executar setup:streams
Copie o token de segurança impresso para .env (QN_STREAM_SECURITY_TOKEN).
6. Inicie a aplicação
pnpm dev
7. Ativar a transmissão
pnpm executar activate:streams
Abrir http://localhost:3000, adicione os endereços dos negociadores e deverá ver os eventos de ordens em tempo real à medida que os fluxos enviam webhooks.
Base de dados
O SQLite é utilizado por predefinição. O esquema do Prisma encontra-se em prisma/schema.prisma.
Comandos comuns:
pnpm prisma migrate dev --name <name>
pnpm db:seed
pnpm prisma studio
Segurança e carga útil do Webhook
- Ponto final:
POST /api/webhook/streams - Cabeçalhos obrigatórios:
x-qn-nonce,x-qn-timestamp,x-qn-signature - A carga útil pode ser comprimida com gzip; o manipulador deteta automaticamente
content-encoding: gzip - Utilizações da verificação de assinaturas
QN_STREAM_SECURITY_TOKEN
Pontos de acesso da API
Pontos finais públicos:
GET /api/health- exame médicoGET /api/users- lista de operadores sob vigilânciaGET /api/statuses- filtros de estado da listaPOST /api/webhook/streams- Webhook do Quicknode StreamsGET /api/sse- Fluxo de eventos de encomendas da SSE
Terminais protegidos (requerem Authorization: Bearer <ADMIN_API_KEY>):
POST /api/users- adicionar um negociadorPOST /api/users/bulk- adicionar negociantes em massa (limite de 50 endereços)PATCH /api/users?id=...- atualizar o traderDELETE /api/users?id=...- remover o negociadorGET /api/orders- listar encomendas com filtrosPATCH /api/statuses- atualizar os estados ativosPOST /api/statuses/reset- restabelecer as predefinições
Scripts de sincronização
pnpm run sync:statuses- Reconcilia a lista de estados do KV com a base de dadospnpm run sync:users- Reconcilia a lista de utilizadores do KV com a base de dadospnpm run reset:kv- Elimina as listas KV do HyperCore
Pré-visualização

- Fazer um fork do repositório
- Criar um ramo de funcionalidades:git checkout -b feature/amazing-feature
- Envie as suas alterações:git commit -m "Adicionar uma funcionalidade fantástica"
- Envie o seu branch:git push origin feature/amazing-feature
- Abrir um Pull Request.