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.
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.