Pools 18
Mineradores n/d
Workers n/d
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.

Cada moeda tem seu próprio pool, com seus próprios números e seu próprio formato de endereço. Por isso, escolha a moeda primeiro e digite um endereço dessa moeda. 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://alephium.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://alephium.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://alephium.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://alephium.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://alephium.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://alephium.herominers.com/api/get_payments?time=1792758504"
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://alephium.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://alephium.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://alephium.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://alephium.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.