Tous les pools HeroMiners répondent au même ensemble d'endpoints HTTP en lecture seule. Pas de clé, pas de compte, pas d'inscription : vous demandez une URL et recevez du JSON, avec Access-Control-Allow-Origin: * défini pour qu'une page dans le navigateur puisse l'appeler directement. Utilisez-la pour créer un moniteur de rigs, une alerte de paiement, votre propre tableau de bord, ou pour importer les données du pool dans un tableur.
Saisissez votre adresse et tous les exemples ci-dessous sont prêts à être exécutés sur ce pool. Rien de ce que vous saisissez ici n'est envoyé ailleurs qu'au pool lui-même, et seulement quand vous cliquez sur Exécuter.
URL de base
https://quantus.herominers.com
Endpoints
GET/api/stats
Tout ce que le pool sait de lui-même en ce moment : hashrate du pool et du réseau, mineurs et workers connectés, le dernier bloc, les frais, les ports et les réglages de paiement.
Paramètres
address
Une adresse de paiement. Ajoute ce mineur dans miner, et dans solo_miner s'il mine aussi en solo. Sans elle, aucune des deux clés n'est envoyée.
C'est l'endpoint par lequel commencer. La page du pool, la page des mineurs et tous les graphiques de ce site sont construits à partir de lui.
Requête
curl "https://quantus.herominers.com/api/stats"
Réponse
Un objet avec pool, network, config, charts, lastblock, payments et visitors, le nombre de personnes sur le site en ce moment, sous la forme { windowMinutes, activeVisitors, activeLookups }. Il est recalculé une fois par cycle de statistiques, donc interroger plus souvent renvoie les mêmes chiffres.
GET/api/live_stats
Le même contenu que /api/stats, mais la requête reste ouverte jusqu'à la fin du prochain cycle de statistiques et ne reçoit sa réponse qu'à ce moment-là. Une requête par mise à jour au lieu d'interroger avec un minuteur.
Paramètres
address
Inclut un mineur dans le contenu, comme pour /api/stats.
Ouvrez une connexion et rouvrez-la quand elle répond. Plusieurs connexions ouvertes en même temps depuis la même IP sont refusées avec un 503, ne les multipliez donc pas.
La même forme que /api/stats, sauf que miner et solo_miner sont toujours envoyés, vides si aucune adresse n'a été indiquée. La requête reste ouverte jusqu'à un cycle de statistiques.
GET/api/stats_address
Un mineur : hashrate actuel et moyen, shares valides et périmés, solde, montant payé et les mêmes chiffres par worker.
Saisissez address ci-dessus pour exécuter celle-ci. La commande l'affiche car le pool renvoie une erreur sans lui.
Réponse
Un objet avec stats (les totaux du mineur), payments, charts, unlocked et workers, un tableau avec une entrée par worker identifiée par son name. Une adresse qui n'a jamais miné ici renvoie une erreur au lieu d'un mineur vide.
GET/api/get_blocks
Les blocs trouvés par le pool qui ne sont plus en attente : payés ou orphelins. status indique lequel.
Paramètres
heightobligatoire
Renvoie les blocs sous cette hauteur. Passez un nombre bien au-dessus de la pointe de la chaîne pour la page la plus récente, puis la hauteur la plus basse reçue pour remonter les pages.
L'adresse de celui qui a trouvé le bloc est masquée avant de quitter le pool, cet endpoint ne permet donc pas de collecter des adresses. time est en secondes Unix, reward est dans la plus petite unité de la cryptomonnaie, et un bloc solo porte un score de s0 s'il a été payé ou de s1 s'il est devenu orphelin.
Les paiements envoyés par le pool, pour tout le pool ou pour une adresse.
Paramètres
timeobligatoire
Renvoie les paiements antérieurs à cet horodatage Unix en secondes. Utilisez l'heure actuelle pour la page la plus récente, puis l'horodatage le plus ancien reçu pour remonter les pages.
address
Limite à une adresse de paiement. Sans elle, renvoie tous les paiements effectués par le pool.
limit
Le nombre à renvoyer. Il est plafonné à la taille de page du pool, donc un nombre plus grand renvoie simplement cette taille.
format
Passez parsed pour recevoir des objets { tx, amount, time } au lieu du tableau brut.
conversions
Avec address, passez 1 pour recevoir aussi l'enregistrement de conversion de chaque paiement de la page converti dans une autre cryptomonnaie. La réponse devient { payments, conversions }. Ignoré avec format=parsed.
Sans format, un tableau plat qui alterne valeur et horodatage, où chaque valeur est txid:amount. Les montants sont des chaînes dans la plus petite unité de la cryptomonnaie et doivent rester des chaînes : les convertir en nombre fait perdre de la précision sur une chaîne à 18 décimales.
GET/api/get_miners_stats
Les dix plus gros mineurs du pool, ainsi que les répartitions par logiciel de minage et par région qui alimentent la page des mineurs.
Un objet avec miners, agents, regions, regionHistory et statsDisplay. Les adresses sont masquées. Quand un panneau n'est pas activé, son tableau arrive vide et statsDisplay l'indique.
GET/api/get_blocks_search
Recherche dans les blocs du pool par hauteur, hash de bloc ou adresse de celui qui l'a trouvé, dans les blocs en attente et payés à la fois.
Paramètres
qobligatoire
Une hauteur, un hash de bloc ou une adresse.
offset
Ignore ce nombre de résultats. La réponse inclut hasMore pour que vous sachiez s'il faut redemander.
La recherche est limitée en nombre de requêtes par IP, et dépasser la limite renvoie rateLimited avec l'attente exacte dans retryMs au lieu d'une simple erreur. Appelez d'abord /api/get_blocks_search_config pour connaître les limites de longueur et savoir si la recherche est activée.
Saisissez q ci-dessus pour exécuter celle-ci. La commande l'affiche car le pool renvoie une erreur sans lui.
Réponse
Un objet avec pending et matured, alternant tous deux valeur et hauteur comme /api/get_blocks, plus totalMatched, offset, limit et hasMore. Un bloc matured est au format de /api/get_blocks ; un bloc pending attend encore sa maturité et utilise le format en attente, plus long, donc ses champs sont dans un autre ordre.
GET/api/get_blocks_search_config
Si la recherche de blocs est activée et les limites qu'une requête doit respecter, pour configurer un champ de recherche avant la première recherche.
{ enabled, minQueryLength, maxQueryLength, frontendCooldownMs }. Les longueurs sont en caractères, et frontendCooldownMs est le temps à attendre entre deux recherches.
GET/api/get_miner_payout_level
Le seuil de paiement actuellement défini pour une adresse, en unités entières de la cryptomonnaie.
Paramètres
addressobligatoire
L'adresse de paiement.
C'est le /api/set_miner_payout_level correspondant qui l'enregistre, et il n'est pas ouvert à tous : la requête doit venir de l'IP de minage de l'adresse elle-même. Cette vérification, et la limite de requêtes qui la précède, sont décrites dans l'onglet des réglages du tableau de bord, pas ici.
Saisissez address ci-dessus pour exécuter celle-ci. La commande l'affiche car le pool renvoie une erreur sans lui.
Réponse
{ banned, minerMessage } et, quand elle est bloquée, aussi blockMining, blockPayments et reason. C'est l'avis que la page du mineur affiche pour cette adresse : bloquée pour le minage, pour les paiements, ou ni l'un ni l'autre. minerMessage est le message de l'opérateur pour cette adresse, sous la forme { message, type, createdAt, expiresAt }, ou null s'il n'y en a pas.
Bien l'utiliser
Interrogez au rythme du pool. Les chiffres sont recalculés une fois par cycle de statistiques, et config.updateInterval dans la réponse de /api/stats indique sa durée, en secondes. Demander plus souvent renvoie la même réponse et consomme de la bande passante des deux côtés.
Préférez /api/live_stats à un minuteur rapide. Il répond dès qu'il y a du nouveau, ce qui est plus rapide pour vous et plus léger pour le pool qu'une interrogation à intervalles.
Stockez les montants sous forme de chaînes. Les récompenses et les soldes arrivent dans la plus petite unité de la cryptomonnaie. Sur une chaîne à 18 décimales, ces entiers dépassent ce qu'un nombre JavaScript peut stocker exactement, donc les convertir arrondit un paiement sans prévenir.
Attendez-vous à des adresses masquées. Les listes publiques masquent la partie centrale de chaque adresse. Votre adresse complète n'est utile qu'à vous, et seulement là où vous la saisissez vous-même.
Traitez une limite de requêtes comme une attente, pas comme un échec. Là où il y a une limite, la réponse inclut retryMs. Attendez ce délai et réessayez au lieu d'insister sans arrêt.
Dites qui vous êtes. Un User-Agent au nom de votre outil n'est pas obligatoire, mais il nous permet de vous prévenir d'un changement au lieu de vous laisser deviner ce qui est cassé.