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.
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.
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.
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.
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.
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
Busca nos blocos do pool por altura, hash do bloco ou endereço de quem o encontrou, em blocos pendentes e pagos ao mesmo tempo.
Parâmetros
qobrigatório
Uma altura, um hash de bloco ou um endereço.
offset
Pula esta quantidade de resultados. A resposta traz hasMore para você saber se deve pedir de novo.
A busca tem limite de requisições por IP, e ultrapassá-lo retorna rateLimited com a espera exata em retryMs em vez de um erro simples. Chame /api/get_blocks_search_config primeiro para saber os limites de tamanho e se a busca está ativada.
Digite q acima para executar este. O comando mostra o campo porque o pool responde com um erro sem ele.
Resposta
Um objeto com pending e matured, ambos alternando valor e altura como /api/get_blocks, mais totalMatched, offset, limit e hasMore. Um bloco matured está no formato de /api/get_blocks; um bloco pending ainda está aguardando maturação e usa o formato pendente, mais longo, então seus campos estão em outra ordem.
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.
{ 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.
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.