Você
Desenvolvedores

API do pool

Todo pool da HeroMiners responde ao mesmo conjunto de endpoints HTTP somente leitura. Não há chave, conta nem cadastro: você acessa uma URL e recebe JSON de volta, com Access-Control-Allow-Origin: * definido para que uma página no navegador possa chamá-la diretamente. Use-a para criar um monitor de rigs, um aviso de pagamentos, seu próprio painel ou para levar os dados do pool para uma planilha.

Digite seu endereço e todos os exemplos abaixo ficam prontos para rodar neste pool. Nada do que você digita aqui é enviado para outro lugar além do próprio pool, e só quando você clica em Executar.

URL base
https://quantus.herominers.com

Endpoints

GET /api/stats

Tudo o que o pool sabe sobre si mesmo neste momento: hashrate do pool e da rede, mineradores e workers conectados, o último bloco, taxas, portas e as configurações de pagamento.

Parâmetros
address
Um endereço de pagamento. Adiciona esse minerador em miner, e em solo_miner se ele também minera solo. Sem ele, nenhuma das duas chaves é enviada.

Este é o endpoint por onde começar. A página do pool, a página de mineradores e todos os gráficos deste site são construídos a partir dele.

Requisição
curl "https://quantus.herominers.com/api/stats"
Resposta

Um objeto com pool, network, config, charts, lastblock, payments e visitors, quantas pessoas estão no site agora, como { windowMinutes, activeVisitors, activeLookups }. É recalculado uma vez por ciclo de estatísticas, então consultar mais rápido que isso retorna os mesmos números.

GET /api/live_stats

O mesmo conteúdo de /api/stats, mas a requisição fica aberta até o próximo ciclo de estatísticas terminar e só então é respondida. Uma requisição por atualização em vez de consultar em intervalos fixos.

Parâmetros
address
Inclui um minerador no conteúdo, como em /api/stats.

Abra uma conexão e reabra quando ela responder. Várias abertas ao mesmo tempo a partir do mesmo IP são recusadas com um 503, então não as multiplique.

Requisição
curl "https://quantus.herominers.com/api/live_stats"
Resposta

O mesmo formato de /api/stats, exceto que miner e solo_miner são sempre enviados, vazios quando nenhum endereço foi informado. A requisição fica aberta por até um ciclo de estatísticas.

GET /api/stats_address

Um minerador: hashrate atual e médio, shares válidos e stale, saldo, valor pago e os mesmos números por worker.

Parâmetros
addressobrigatório
O endereço de pagamento a consultar.
Requisição
curl "https://quantus.herominers.com/api/stats_address"

Digite address acima para executar este. O comando mostra o campo porque o pool responde com um erro sem ele.

Resposta

Um objeto com stats (os totais do minerador), payments, charts, unlocked e workers, um array com uma entrada por worker identificada pelo seu name. Um endereço que nunca minerou aqui responde com um erro em vez de um minerador vazio.

GET /api/get_blocks

Blocos encontrados pelo pool que não estão mais pendentes: pagos ou órfãos. status diz qual.

Parâmetros
heightobrigatório
Retorna blocos abaixo desta altura. Passe um número bem acima da ponta da cadeia para a página mais recente e, depois, a menor altura recebida para voltar páginas.

O endereço de quem encontrou o bloco é mascarado antes de sair do pool, então este endpoint não pode ser usado para coletar endereços. time está em segundos Unix, reward está na menor unidade da moeda, e um bloco solo traz um score de s0 quando foi pago ou s1 quando ficou órfão.

Requisição
curl "https://quantus.herominers.com/api/get_blocks?height=9999999999"
Resposta

Um array simples que alterna valor e altura: [block, height, block, height, ...]. Cada bloco é separado por dois-pontos:

0hash1time2difficulty3shares4score5nonce6status7reward8finder9region10rewardScheme
GET /api/get_payments

Pagamentos enviados pelo pool, de todo o pool ou de um endereço.

Parâmetros
timeobrigatório
Retorna pagamentos anteriores a este timestamp Unix em segundos. Use a hora atual para a página mais recente e, depois, o timestamp mais antigo recebido para voltar páginas.
address
Limita a um endereço de pagamento. Sem ele, retorna todos os pagamentos que o pool fez.
limit
Quantos retornar. Limitado ao tamanho de página do próprio pool, então um número maior simplesmente retorna esse tamanho.
format
Passe parsed para receber objetos { tx, amount, time } em vez do array bruto.
conversions
Com address, passe 1 para receber também o registro de conversão de cada pagamento da página que foi convertido para outra moeda. A resposta passa a ser { payments, conversions }. Ignorado com format=parsed.
Requisição
curl "https://quantus.herominers.com/api/get_payments?time=1792922073"
Resposta

Sem format, um array simples que alterna valor e timestamp, sendo cada valor txid:amount. Os valores são strings na menor unidade da moeda e devem continuar como strings: convertê-los em número perde precisão em uma cadeia com 18 casas decimais.

GET /api/get_miners_stats

Os dez maiores mineradores do pool, mais as divisões por programa de mineração e por região que alimentam a página de mineradores.

Requisição
curl "https://quantus.herominers.com/api/get_miners_stats"
Resposta

Um objeto com miners, agents, regions, regionHistory e statsDisplay. Os endereços são mascarados. Quando um painel não está ativado, seu array vem vazio e statsDisplay informa isso.

GET /api/get_blocks_search_config

Se a busca de blocos está ativada e os limites que uma consulta precisa respeitar, para que uma caixa de busca possa ser configurada antes da primeira busca.

Requisição
curl "https://quantus.herominers.com/api/get_blocks_search_config"
Resposta

{ enabled, minQueryLength, maxQueryLength, frontendCooldownMs }. Os tamanhos são em caracteres, e frontendCooldownMs é quanto esperar entre duas buscas.

GET /api/get_miner_payout_level

O limite de pagamento definido no momento para um endereço, em moedas inteiras.

Parâmetros
addressobrigatório
O endereço de pagamento.

O /api/set_miner_payout_level correspondente é quem grava esse valor, e ele não está aberto a qualquer um: a requisição tem que vir do próprio IP de mineração do endereço. Essa verificação, e o limite de requisições antes dela, estão descritos na aba de configurações do painel, e não aqui.

Requisição
curl "https://quantus.herominers.com/api/get_miner_payout_level"

Digite address acima para executar este. O comando mostra o campo porque o pool responde com um erro sem ele.

Resposta

{ status: "done", level }. Um endereço que nunca definiu um recebe o mínimo do pool.

GET /api/miner_ban_status

O aviso de bloqueio que a página do minerador mostra para um endereço, e qualquer mensagem que o operador deixou para ele.

Parâmetros
addressobrigatório
O endereço de pagamento.
Requisição
curl "https://quantus.herominers.com/api/miner_ban_status"

Digite address acima para executar este. O comando mostra o campo porque o pool responde com um erro sem ele.

Resposta

{ banned, minerMessage } e, quando bloqueado, também blockMining, blockPayments e reason. É o aviso que a página do minerador mostra para este endereço: bloqueado para minerar, para receber pagamentos, ou nenhum dos dois. minerMessage é a mensagem do operador para este endereço, como { message, type, createdAt, expiresAt }, ou null quando não há nenhuma.

Como usar bem

  • Consulte no ritmo do próprio pool. Os números são recalculados uma vez por ciclo de estatísticas, e config.updateInterval na resposta de /api/stats diz quanto tempo isso dura, em segundos. Pedir com mais frequência retorna a mesma resposta e gasta banda dos dois lados.
  • Prefira /api/live_stats a um timer rápido. Ele responde no momento em que há algo novo, o que é mais rápido para você e mais leve para o pool do que consultar em intervalos.
  • Mantenha os valores como strings. Recompensas e saldos vêm na menor unidade da moeda. Em uma cadeia com 18 casas decimais, esses inteiros passam do que um número JavaScript consegue guardar com exatidão, então convertê-los arredonda um pagamento sem avisar.
  • Conte com endereços mascarados. As listagens públicas escondem o meio de cada endereço. Seu endereço completo só é necessário para você, e só onde você mesmo o informa.
  • Trate um limite de requisições como espera, não como falha. Onde há um limite, a resposta traz retryMs. Aguarde esse tempo e tente de novo em vez de insistir sem parar.
  • Diga quem você é. Um User-Agent com o nome da sua ferramenta não é obrigatório, mas permite que a gente avise você sobre uma mudança em vez de você ter que adivinhar o que quebrou.