Ogni pool HeroMiners risponde allo stesso insieme di endpoint HTTP di sola lettura. Non servono chiavi, account o registrazione: richiede un URL e riceve JSON, con Access-Control-Allow-Origin: * impostato in modo che una pagina nel browser possa chiamarlo direttamente. Può usarla per creare un monitor dei rig, un avviso dei pagamenti, una dashboard tutta Sua, o per portare i dati della pool in un foglio di calcolo.
Ogni moneta ha la propria pool, con i propri numeri e il proprio formato di indirizzo. Scelga quindi prima la moneta e inserisca un indirizzo di quella moneta. Nulla di ciò che digita qui viene inviato altrove se non alla pool stessa, e solo quando preme Esegui.
URL di base
https://alephium.herominers.com
Endpoint
GET/api/stats
Tutto ciò che la pool sa di sé in questo momento: hashrate della pool e della rete, miner e worker connessi, l'ultimo blocco, commissioni, porte e impostazioni dei pagamenti.
Parametri
address
Un indirizzo di pagamento. Aggiunge quel miner sotto miner, e sotto solo_miner se mina anche in solo. Se viene omesso, nessuna delle due chiavi viene inviata.
È l'endpoint da cui partire. La pagina della pool, la pagina dei miner e ogni grafico di questo sito sono costruiti a partire da esso.
Richiesta
curl "https://alephium.herominers.com/api/stats"
Risposta
Un oggetto con pool, network, config, charts, lastblock, payments e visitors, quante persone sono sul sito in questo momento, come { windowMinutes, activeVisitors, activeLookups }. Viene ricalcolato una volta per ciclo di statistiche, quindi interrogarlo più spesso restituisce gli stessi numeri.
GET/api/live_stats
Lo stesso contenuto di /api/stats, ma la richiesta resta aperta fino al termine del ciclo di statistiche successivo e solo allora riceve risposta. Una richiesta per aggiornamento invece di interrogare a intervalli con un timer.
Parametri
address
Include un miner nel contenuto, come con /api/stats.
Apra una connessione e la riapra quando risponde. Più connessioni aperte contemporaneamente dallo stesso IP vengono rifiutate con un 503, quindi non le moltiplichi.
La stessa struttura di /api/stats, tranne che miner e solo_miner vengono sempre inviati, vuoti quando non è stato indicato alcun indirizzo. La richiesta resta aperta fino a un ciclo di statistiche.
GET/api/stats_address
Un miner: hashrate attuale e medio, share valide e obsolete, saldo, importo pagato e gli stessi dati per worker.
Inserisca address qui sopra per eseguire questo. Il comando lo mostra perché senza di esso la pool risponde con un errore.
Risposta
Un oggetto con stats (i totali del miner), payments, charts, unlocked e workers, un array con una voce per worker identificata dal suo name. Un indirizzo che non ha mai minato qui risponde con un errore anziché con un miner vuoto.
GET/api/get_blocks
Blocchi trovati dalla pool che non sono più in attesa: pagati oppure orfani. status indica quale.
Parametri
heightobbligatorio
Restituisce i blocchi al di sotto di questa altezza. Passi un numero molto superiore alla punta della catena per la pagina più recente, poi l'altezza più bassa ricevuta per scorrere le pagine all'indietro.
L'indirizzo di chi ha trovato il blocco viene mascherato prima di lasciare la pool, quindi questo endpoint non può essere usato per raccogliere indirizzi. time è in secondi Unix, reward è nell'unità più piccola della moneta, e un blocco minato in solo riporta uno score di s0 quando è stato pagato o s1 quando è diventato orfano.
Pagamenti inviati dalla pool, per l'intera pool o per un singolo indirizzo.
Parametri
timeobbligatorio
Restituisce i pagamenti precedenti a questo timestamp Unix in secondi. Usi l'ora attuale per la pagina più recente, poi il timestamp più vecchio ricevuto per scorrere le pagine all'indietro.
address
Limita a un solo indirizzo di pagamento. Se omesso, restituisce tutti i pagamenti effettuati dalla pool.
limit
Quanti restituirne. È limitato alla dimensione di pagina della pool stessa, quindi un numero maggiore restituisce semplicemente quella.
format
Passi parsed per ricevere oggetti { tx, amount, time } invece dell'array grezzo.
conversions
Con address, passi 1 per ricevere anche il record di conversione di ogni pagamento della pagina convertito in un'altra moneta. La risposta diventa allora { payments, conversions }. Ignorato con format=parsed.
Senza format, un array piatto che alterna valore e timestamp, dove ogni valore è txid:amount. Gli importi sono stringhe nell'unità più piccola della moneta e devono restare stringhe: convertirli in numero fa perdere precisione su una catena con 18 decimali.
GET/api/get_miners_stats
I dieci miner più grandi della pool, più le suddivisioni per software di mining e per regione alla base della pagina dei miner.
Un oggetto con miners, agents, regions, regionHistory e statsDisplay. Gli indirizzi sono mascherati. Quando un pannello non è attivato, il suo array arriva vuoto e statsDisplay lo indica.
GET/api/get_blocks_search
Cerca tra i blocchi della pool per altezza, hash del blocco o indirizzo di chi lo ha trovato, tra i blocchi in attesa e quelli pagati contemporaneamente.
Parametri
qobbligatorio
Un'altezza, un hash di blocco o un indirizzo.
offset
Salta questo numero di risultati. La risposta contiene hasMore, così sa se chiedere di nuovo.
La ricerca ha un limite di richieste per IP, e superarlo restituisce rateLimited con l'attesa esatta in retryMs anziché un semplice errore. Chiami prima /api/get_blocks_search_config per conoscere i limiti di lunghezza e sapere se la ricerca è attivata.
Inserisca q qui sopra per eseguire questo. Il comando lo mostra perché senza di esso la pool risponde con un errore.
Risposta
Un oggetto con pending e matured, entrambi alternati valore e altezza come /api/get_blocks, più totalMatched, offset, limit e hasMore. Un blocco matured è nel formato di /api/get_blocks; un blocco pending è ancora in attesa di maturare e usa il formato più lungo dei blocchi in attesa, quindi i suoi campi sono in un ordine diverso.
GET/api/get_blocks_search_config
Se la ricerca dei blocchi è attivata e i limiti che una query deve rispettare, così da poter configurare una casella di ricerca prima della prima ricerca.
{ enabled, minQueryLength, maxQueryLength, frontendCooldownMs }. Le lunghezze sono in caratteri, e frontendCooldownMs è quanto attendere tra due ricerche.
GET/api/get_miner_payout_level
La soglia di pagamento attualmente impostata per un indirizzo, in monete intere.
Parametri
addressobbligatorio
L'indirizzo di pagamento.
Il corrispondente /api/set_miner_payout_level la scrive, e non è aperto a chiunque: la richiesta deve provenire dall'IP di mining dell'indirizzo stesso. Questo controllo, e il limite di richieste che lo precede, sono descritti nella scheda «Impostazioni» della dashboard anziché qui.
Inserisca address qui sopra per eseguire questo. Il comando lo mostra perché senza di esso la pool risponde con un errore.
Risposta
{ banned, minerMessage } e, quando è bloccato, anche blockMining, blockPayments e reason. È l'avviso che la pagina del miner mostra per questo indirizzo: bloccato per il mining, per i pagamenti, o per nessuno dei due. minerMessage è il messaggio dell'operatore per questo indirizzo, come { message, type, createdAt, expiresAt }, oppure null quando non ce n'è nessuno.
Come usarla al meglio
Interroghi la pool al suo ritmo. I numeri vengono ricalcolati una volta per ciclo di statistiche, e config.updateInterval nella risposta di /api/stats indica quanto dura, in secondi. Chiedere più spesso restituisce la stessa risposta e consuma banda a entrambe le parti.
Preferisca /api/live_stats a un timer rapido. Risponde non appena c'è qualcosa di nuovo, il che è più rapido per Lei e più leggero per la pool rispetto alle interrogazioni a intervalli.
Conservi gli importi come stringhe. Ricompense e saldi arrivano nell'unità più piccola della moneta. Su una catena con 18 decimali questi interi superano ciò che un numero JavaScript può rappresentare con esattezza, quindi convertirli arrotonda un pagamento senza avvisare.
Si aspetti indirizzi mascherati. Gli elenchi pubblici nascondono la parte centrale di ogni indirizzo. Il Suo indirizzo completo serve solo a Lei, e solo dove è Lei a fornirlo.
Tratti un limite di richieste come un'attesa, non come un errore. Dove si applica un limite, la risposta contiene retryMs. Attenda per quel tempo e riprovi, invece di insistere senza sosta.
Dica chi è. Un User-Agent con il nome del Suo strumento non è obbligatorio, ma ci permette di avvisarLa di una modifica anziché lasciarLa a indovinare cosa si è rotto.