Кожен пул HeroMiners відповідає на однаковий набір HTTP-ендпоінтів лише для читання. Не потрібні ні ключ, ні акаунт, ні реєстрація: запитайте URL і отримайте JSON, до того ж із заголовком Access-Control-Allow-Origin: *, тож сторінка в браузері може звертатися до нього напряму. З його допомогою можна створити монітор ригів, сповіщення про виплати, власну панель або вивантажити дані пулу в таблицю.
Кожна монета має власний пул із власними цифрами та власним форматом адреси, тому спочатку виберіть монету, а потім введіть адресу саме цієї монети. Усе, що ви тут вводите, надсилається лише самому пулу і лише після натискання «Запустити».
Базовий URL
https://alephium.herominers.com
Ендпоінти
GET/api/stats
Усе, що пул знає про себе просто зараз: хешрейт пулу та мережі, підключені майнери й воркери, останній блок, комісії, порти та налаштування виплат.
Параметри
address
Адреса для виплат. Додає цього майнера в miner, а також у solo_miner, якщо він майнить і соло. Без адреси жоден із цих ключів не надсилається.
З цього ендпоінта варто починати. Сторінка пулу, сторінка майнерів і всі графіки на цьому сайті побудовані на ньому.
Запит
curl "https://alephium.herominers.com/api/stats"
Відповідь
Об'єкт із полями pool, network, config, charts, lastblock, payments і visitors (скільки людей зараз на сайті) у вигляді { windowMinutes, activeVisitors, activeLookups }. Перераховується раз за цикл статистики, тому частіші запити повернуть ті самі цифри.
GET/api/live_stats
Ті самі дані, що й /api/stats, але запит тримається відкритим до завершення наступного циклу статистики і лише тоді отримує відповідь. Один запит на оновлення замість опитування за таймером.
Параметри
address
Додати майнера у відповідь, як у /api/stats.
Відкрийте одне з'єднання і відкривайте його знову після відповіді. Кілька одночасних з'єднань з одного IP відхиляються з кодом 503, тому не розпаралелюйте запити.
Та сама структура, що й у /api/stats, тільки miner і solo_miner надсилаються завжди й порожні, якщо адресу не вказано. Запит залишається відкритим не довше одного циклу статистики.
GET/api/stats_address
Один майнер: поточний і середній хешрейт, валідні та застарілі шари, баланс, виплачена сума і ті самі показники для кожного воркера.
Введіть address вище, щоб запустити цей запит. Команда показує цей параметр, тому що без нього пул відповідає помилкою.
Відповідь
Об'єкт із полями stats (підсумки майнера), payments, charts, unlocked і workers, масивом з одним записом на воркера, названим за його name. Для адреси, яка ніколи тут не майнила, повертається помилка, а не порожній майнер.
GET/api/get_blocks
Знайдені пулом блоки, які вже не очікують: виплачені або ті, що стали орфан-блоками. Який саме, вказує status.
Параметри
heightобов'язково
Повернути блоки нижче цієї висоти. Для найновішої сторінки передайте число набагато вище за вершину ланцюга, потім найменшу отриману висоту, щоб гортати назад.
Адреса того, хто знайшов блок, маскується ще до того, як залишає пул, тому цей ендпоінт не можна використати для збирання адрес. time вказано в секундах Unix, reward у найменших одиницях монети, а соло-блок має score зі значенням s0, якщо його виплачено, або s1, якщо він став орфан-блоком.
Виплати, надіслані пулом, по всьому пулу або для однієї адреси.
Параметри
timeобов'язково
Повернути виплати до цієї мітки часу Unix у секундах. Для найновішої сторінки передайте поточний час, потім найранішу отриману мітку, щоб гортати назад.
address
Обмежити однією адресою для виплат. Без неї повернуться всі виплати пулу.
limit
Скільки записів повернути. Обмежується розміром сторінки самого пулу, тож більше число просто поверне цей розмір.
format
Передайте parsed, щоб отримати об'єкти { tx, amount, time } замість сирого масиву.
conversions
Разом з address передайте 1, щоб отримати ще й запис про конвертацію кожної виплати на сторінці, яку було конвертовано в іншу монету. Тоді відповідь набуває вигляду { payments, conversions }. З format=parsed ігнорується.
Без format це плаский масив, де чергуються значення і мітка часу, а кожне значення має вигляд txid:amount. Суми приходять рядками в найменших одиницях монети й мають залишатися рядками: перетворення на число втрачає точність у ланцюгу з 18 знаками після коми.
GET/api/get_miners_stats
Десять найбільших майнерів пулу, а також розподіл за програмами для майнінгу та регіонами, на якому побудована сторінка майнерів.
Об'єкт із полями miners, agents, regions, regionHistory і statsDisplay. Адреси замасковано. Якщо панель не ввімкнено, її масив приходить порожнім, і statsDisplay повідомляє про це.
GET/api/get_blocks_search
Пошук блоків пулу за висотою, хешем блоку або адресою того, хто його знайшов, одразу серед блоків в очікуванні та виплачених.
Параметри
qобов'язково
Висота, хеш блоку або адреса.
offset
Пропустити стільки результатів. Відповідь містить hasMore, щоб ви знали, чи потрібно запитувати далі.
Пошук обмежено за частотою для кожного IP, і в разі перевищення повертається rateLimited з точним часом очікування в retryMs, а не просто помилка. Спочатку викличте /api/get_blocks_search_config, щоб дізнатися допустиму довжину запиту і чи взагалі ввімкнено пошук.
Введіть q вище, щоб запустити цей запит. Команда показує цей параметр, тому що без нього пул відповідає помилкою.
Відповідь
Об'єкт із полями pending і matured, в обох значення чергується з висотою, як у /api/get_blocks, а також totalMatched, offset, limit і hasMore. Блок із matured має формат /api/get_blocks; блок із pending ще чекає на дозрівання і використовує довший формат блоків в очікуванні, тому порядок його полів інший.
GET/api/get_blocks_search_config
Чи ввімкнено пошук блоків і в які межі має вкладатися запит, щоб поле пошуку можна було налаштувати до першого пошуку.
{ enabled, minQueryLength, maxQueryLength, frontendCooldownMs }. Довжини вказано в символах, а frontendCooldownMs означає, скільки чекати між двома пошуками.
GET/api/get_miner_payout_level
Поріг виплати, установлений зараз для адреси, у цілих монетах.
Параметри
addressобов'язково
Адреса для виплат.
Парний ендпоінт /api/set_miner_payout_level записує його і відкритий не для всіх: запит має надійти з майнінг-IP самої адреси. Цю перевірку та обмеження частоти перед нею описано на вкладці налаштувань панелі, а не тут.
Введіть address вище, щоб запустити цей запит. Команда показує цей параметр, тому що без нього пул відповідає помилкою.
Відповідь
{ banned, minerMessage }, а в разі блокування також blockMining, blockPayments і reason. Це повідомлення, яке сторінка майнера показує для цієї адреси: заблоковано майнінг, виплати або нічого. minerMessage це повідомлення оператора для цієї адреси у вигляді { message, type, createdAt, expiresAt } або null, якщо повідомлення немає.
Як користуватися правильно
Опитуйте в ритмі самого пулу. Цифри перераховуються раз за цикл статистики, а config.updateInterval у відповіді /api/stats повідомляє його тривалість у секундах. Частіші запити повернуть ту саму відповідь і витратять трафік і вам, і нам.
Використовуйте /api/live_stats замість частого таймера. Він відповідає тієї миті, коли з'являється щось нове, а це і швидше для вас, і легше для пулу, ніж опитування.
Зберігайте суми рядками. Нагороди й баланси приходять у найменших одиницях монети. У ланцюгу з 18 знаками після коми такі цілі числа виходять за межі того, що число JavaScript може зберігати точно, тому перетворення непомітно округлює виплату.
Зважайте, що адреси замасковано. Публічні списки приховують середину кожної адреси. Повна адреса потрібна лише вам і лише там, де ви самі її вказуєте.
Сприймайте обмеження частоти як очікування, а не як збій. Де діє обмеження, відповідь містить retryMs. Зачекайте стільки і повторіть запит, а не засипайте пул запитами.
Представтеся. Заголовок User-Agent з назвою вашого інструмента не обов'язковий, але з ним ми зможемо повідомити вам про зміну, а не гадати, що зламалося.