Jeder HeroMiners-Pool beantwortet dieselben schreibgeschützten HTTP-Endpunkte. Es gibt keinen Schlüssel, kein Konto und keine Registrierung: Sie rufen eine URL auf und erhalten JSON zurück, mit gesetztem Access-Control-Allow-Origin: *, sodass eine Seite im Browser die API direkt aufrufen kann. Nutzen Sie sie für eine Rig-Überwachung, einen Auszahlungsmelder, ein eigenes Dashboard oder um die Pool-Daten in eine Tabelle zu holen.
Geben Sie Ihre Adresse ein, und jedes Beispiel unten ist bereit, gegen diesen Pool ausgeführt zu werden. Was Sie hier eingeben, wird nirgendwohin gesendet außer an den Pool selbst, und nur, wenn Sie auf Ausführen klicken.
Basis-URL
https://quantus.herominers.com
Endpunkte
GET/api/stats
Alles, was der Pool gerade über sich weiß: Pool- und Netzwerk-Hashrate, verbundene Miner und Worker, der letzte Block, Gebühren, Ports und die Auszahlungseinstellungen.
Parameter
address
Eine Auszahlungsadresse. Fügt diesen Miner unter miner hinzu, und unter solo_miner, falls er auch solo mint. Ohne sie wird keiner der beiden Schlüssel gesendet.
Mit diesem Endpunkt sollten Sie beginnen. Die Pool-Seite, die Miner-Seite und jedes Diagramm auf dieser Website werden daraus erstellt.
Anfrage
curl "https://quantus.herominers.com/api/stats"
Antwort
Ein Objekt mit pool, network, config, charts, lastblock, payments und visitors, also wie viele Personen gerade auf der Seite sind, als { windowMinutes, activeVisitors, activeLookups }. Wird einmal pro Statistikzyklus neu berechnet, häufigeres Abfragen liefert also dieselben Zahlen.
GET/api/live_stats
Dieselben Daten wie /api/stats, aber die Anfrage bleibt offen, bis der nächste Statistikzyklus abgeschlossen ist, und wird dann beantwortet. Eine Anfrage pro Aktualisierung statt Abfragen per Timer.
Parameter
address
Einen Miner in die Antwort aufnehmen, wie bei /api/stats.
Öffnen Sie eine Verbindung und öffnen Sie sie erneut, sobald sie antwortet. Mehrere gleichzeitig offene Verbindungen von derselben IP werden mit 503 abgelehnt, also nicht parallel auffächern.
Dieselbe Struktur wie /api/stats, nur dass miner und solo_miner immer gesendet werden, leer, wenn keine Adresse angegeben wurde. Die Anfrage bleibt bis zu einen Statistikzyklus lang offen.
GET/api/stats_address
Ein Miner: aktuelle und durchschnittliche Hashrate, gültige Shares und Stale Shares, Guthaben, ausgezahlter Betrag und dieselben Werte pro Worker.
Geben Sie oben address ein, um diese Anfrage auszuführen. Der Befehl zeigt den Wert, weil der Pool ohne ihn mit einem Fehler antwortet.
Antwort
Ein Objekt mit stats (die Summen des Miners), payments, charts, unlocked und workers, einem Array mit einem Eintrag pro Worker, benannt durch seinen name. Eine Adresse, die hier nie gemint hat, erhält einen Fehler statt eines leeren Miners.
GET/api/get_blocks
Vom Pool gefundene Blöcke, die nicht mehr ausstehend sind: ausgezahlt oder verwaist. status gibt an, welches davon.
Parameter
heighterforderlich
Blöcke unterhalb dieser Höhe zurückgeben. Übergeben Sie für die neueste Seite eine Zahl weit über der aktuellen Spitze, danach die niedrigste erhaltene Höhe, um rückwärts zu blättern.
Die Adresse des Finders wird maskiert, bevor sie den Pool verlässt, daher lassen sich über diesen Endpunkt keine Adressen sammeln. time ist in Unix-Sekunden, reward in der kleinsten Einheit des Coins, und ein Solo-Block trägt einen score von s0, wenn er ausgezahlt wurde, oder s1, wenn er verwaist ist.
Vom Pool gesendete Zahlungen, entweder für den ganzen Pool oder für eine Adresse.
Parameter
timeerforderlich
Zahlungen vor diesem Unix-Zeitstempel in Sekunden zurückgeben. Verwenden Sie für die neueste Seite die aktuelle Zeit, danach den ältesten erhaltenen Zeitstempel, um rückwärts zu blättern.
address
Auf eine Auszahlungsadresse beschränken. Weglassen für jede Zahlung, die der Pool je geleistet hat.
limit
Wie viele zurückgegeben werden. Wird auf die Seitengröße des Pools begrenzt, eine größere Zahl liefert also einfach diese.
format
Übergeben Sie parsed, um { tx, amount, time }-Objekte statt des rohen Arrays zu erhalten.
conversions
Mit address übergeben Sie 1, um zusätzlich den Umtauschdatensatz jeder Auszahlung auf der Seite zu erhalten, die in einen anderen Coin umgetauscht wurde. Die Antwort wird dann zu { payments, conversions }. Wird mit format=parsed ignoriert.
Ohne format ein flaches Array, abwechselnd Wert und Zeitstempel, wobei jeder Wert txid:amount ist. Beträge sind Strings in der kleinsten Einheit des Coins und müssen Strings bleiben: Wird einer als Zahl geparst, geht auf einer Chain mit 18 Dezimalstellen Genauigkeit verloren.
GET/api/get_miners_stats
Die zehn größten Miner im Pool sowie die Aufschlüsselung nach Mining-Software und Region hinter der Miner-Seite.
Ein Objekt mit miners, agents, regions, regionHistory und statsDisplay. Adressen sind maskiert. Ist ein Bereich nicht aktiviert, kommt sein Array leer zurück, und statsDisplay gibt das an.
GET/api/get_blocks_search
Durchsucht die Blöcke des Pools nach Höhe, Block-Hash oder Adresse des Finders, über ausstehende und ausgezahlte Blöcke gleichzeitig.
Parameter
qerforderlich
Eine Höhe, ein Block-Hash oder eine Adresse.
offset
So viele Ergebnisse überspringen. Die Antwort enthält hasMore, damit Sie wissen, ob Sie erneut fragen sollten.
Die Suche ist pro IP begrenzt, und wer das Limit überschreitet, erhält rateLimited mit der genauen Wartezeit in retryMs statt eines bloßen Fehlers. Rufen Sie zuerst /api/get_blocks_search_config auf, um die Längengrenzen zu erfahren und ob die Suche überhaupt eingeschaltet ist.
Geben Sie oben q ein, um diese Anfrage auszuführen. Der Befehl zeigt den Wert, weil der Pool ohne ihn mit einem Fehler antwortet.
Antwort
Ein Objekt mit pending und matured, beide abwechselnd Wert und Höhe wie bei /api/get_blocks, dazu totalMatched, offset, limit und hasMore. Ein matured-Block hat das Format von /api/get_blocks; ein pending-Block wartet noch auf seine Reife und verwendet das längere Format für ausstehende Blöcke, seine Felder stehen also in anderer Reihenfolge.
GET/api/get_blocks_search_config
Ob die Blocksuche eingeschaltet ist und welche Grenzen eine Abfrage einhalten muss, damit ein Suchfeld vor der ersten Suche eingerichtet werden kann.
{ enabled, minQueryLength, maxQueryLength, frontendCooldownMs }. Die Längen sind in Zeichen angegeben, und frontendCooldownMs ist die Wartezeit zwischen zwei Suchen.
GET/api/get_miner_payout_level
Die aktuell für eine Adresse festgelegte Auszahlungsgrenze, in ganzen Coins.
Parameter
addresserforderlich
Die Auszahlungsadresse.
Das zugehörige /api/set_miner_payout_level schreibt sie, und das ist nicht für jeden offen: Die Anfrage muss von der Mining-IP der Adresse selbst kommen. Diese Prüfung und das vorgeschaltete Anfragelimit werden im Einstellungs-Tab des Dashboards beschrieben, nicht hier.
Geben Sie oben address ein, um diese Anfrage auszuführen. Der Befehl zeigt den Wert, weil der Pool ohne ihn mit einem Fehler antwortet.
Antwort
{ banned, minerMessage }, und bei einer Sperre zusätzlich blockMining, blockPayments und reason. Es ist der Hinweis, den die Miner-Seite für diese Adresse anzeigt: gesperrt für Mining, für Auszahlungen oder für keines von beiden. minerMessage ist die Nachricht des Betreibers an diese Adresse, als { message, type, createdAt, expiresAt }, oder null, wenn es keine gibt.
Gute Nutzung
Fragen Sie im Takt des Pools ab. Die Zahlen werden einmal pro Statistikzyklus neu berechnet, und config.updateInterval in der Antwort von /api/stats gibt diese Dauer in Sekunden an. Häufigeres Abfragen liefert dieselbe Antwort und kostet beide Seiten Bandbreite.
Nutzen Sie /api/live_stats statt eines schnellen Timers. Es antwortet, sobald es etwas Neues gibt. Das ist für Sie schneller und für den Pool schonender als Abfragen per Timer.
Behalten Sie Beträge als Strings. Belohnungen und Guthaben kommen in der kleinsten Einheit des Coins zurück. Auf einer Chain mit 18 Dezimalstellen überschreiten diese Ganzzahlen, was eine JavaScript-Zahl exakt darstellen kann, sodass das Parsen eine Auszahlung unbemerkt rundet.
Rechnen Sie mit maskierten Adressen. Öffentliche Listen verbergen die Mitte jeder Adresse. Ihre eigene vollständige Adresse brauchen nur Sie, und nur dort, wo Sie sie selbst angeben.
Behandeln Sie ein Anfragelimit als Wartezeit, nicht als Fehler. Wo ein Limit gilt, enthält die Antwort retryMs. Warten Sie so lange und versuchen Sie es dann erneut, statt den Pool mit Anfragen zu überhäufen.
Sagen Sie, wer Sie sind. Ein User-Agent, der Ihr Tool nennt, ist nicht erforderlich, aber so können wir Sie über eine Änderung informieren, statt dass Sie raten müssen, was kaputtgegangen ist.