Пули 18
Майнери н/д
Воркери н/д
Розробникам

API пулу

Кожен пул 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, тому не розпаралелюйте запити.

Запит
curl "https://alephium.herominers.com/api/live_stats"
Відповідь

Та сама структура, що й у /api/stats, тільки miner і solo_miner надсилаються завжди й порожні, якщо адресу не вказано. Запит залишається відкритим не довше одного циклу статистики.

GET /api/stats_address

Один майнер: поточний і середній хешрейт, валідні та застарілі шари, баланс, виплачена сума і ті самі показники для кожного воркера.

Параметри
addressобов'язково
Адреса для виплат, яку потрібно знайти.
Запит
curl "https://alephium.herominers.com/api/stats_address"

Введіть address вище, щоб запустити цей запит. Команда показує цей параметр, тому що без нього пул відповідає помилкою.

Відповідь

Об'єкт із полями stats (підсумки майнера), payments, charts, unlocked і workers, масивом з одним записом на воркера, названим за його name. Для адреси, яка ніколи тут не майнила, повертається помилка, а не порожній майнер.

GET /api/get_blocks

Знайдені пулом блоки, які вже не очікують: виплачені або ті, що стали орфан-блоками. Який саме, вказує status.

Параметри
heightобов'язково
Повернути блоки нижче цієї висоти. Для найновішої сторінки передайте число набагато вище за вершину ланцюга, потім найменшу отриману висоту, щоб гортати назад.

Адреса того, хто знайшов блок, маскується ще до того, як залишає пул, тому цей ендпоінт не можна використати для збирання адрес. time вказано в секундах Unix, reward у найменших одиницях монети, а соло-блок має score зі значенням s0, якщо його виплачено, або s1, якщо він став орфан-блоком.

Запит
curl "https://alephium.herominers.com/api/get_blocks?height=9999999999"
Відповідь

Плаский масив, де чергуються значення і висота: [block, height, block, height, ...]. Поля кожного блоку розділені двокрапкою:

0hash1time2difficulty3shares4score5nonce6status7reward8finder9region10rewardScheme
GET /api/get_payments

Виплати, надіслані пулом, по всьому пулу або для однієї адреси.

Параметри
timeобов'язково
Повернути виплати до цієї мітки часу Unix у секундах. Для найновішої сторінки передайте поточний час, потім найранішу отриману мітку, щоб гортати назад.
address
Обмежити однією адресою для виплат. Без неї повернуться всі виплати пулу.
limit
Скільки записів повернути. Обмежується розміром сторінки самого пулу, тож більше число просто поверне цей розмір.
format
Передайте parsed, щоб отримати об'єкти { tx, amount, time } замість сирого масиву.
conversions
Разом з address передайте 1, щоб отримати ще й запис про конвертацію кожної виплати на сторінці, яку було конвертовано в іншу монету. Тоді відповідь набуває вигляду { payments, conversions }. З format=parsed ігнорується.
Запит
curl "https://alephium.herominers.com/api/get_payments?time=1792758504"
Відповідь

Без format це плаский масив, де чергуються значення і мітка часу, а кожне значення має вигляд txid:amount. Суми приходять рядками в найменших одиницях монети й мають залишатися рядками: перетворення на число втрачає точність у ланцюгу з 18 знаками після коми.

GET /api/get_miners_stats

Десять найбільших майнерів пулу, а також розподіл за програмами для майнінгу та регіонами, на якому побудована сторінка майнерів.

Запит
curl "https://alephium.herominers.com/api/get_miners_stats"
Відповідь

Об'єкт із полями miners, agents, regions, regionHistory і statsDisplay. Адреси замасковано. Якщо панель не ввімкнено, її масив приходить порожнім, і statsDisplay повідомляє про це.

GET /api/get_blocks_search_config

Чи ввімкнено пошук блоків і в які межі має вкладатися запит, щоб поле пошуку можна було налаштувати до першого пошуку.

Запит
curl "https://alephium.herominers.com/api/get_blocks_search_config"
Відповідь

{ enabled, minQueryLength, maxQueryLength, frontendCooldownMs }. Довжини вказано в символах, а frontendCooldownMs означає, скільки чекати між двома пошуками.

GET /api/get_miner_payout_level

Поріг виплати, установлений зараз для адреси, у цілих монетах.

Параметри
addressобов'язково
Адреса для виплат.

Парний ендпоінт /api/set_miner_payout_level записує його і відкритий не для всіх: запит має надійти з майнінг-IP самої адреси. Цю перевірку та обмеження частоти перед нею описано на вкладці налаштувань панелі, а не тут.

Запит
curl "https://alephium.herominers.com/api/get_miner_payout_level"

Введіть address вище, щоб запустити цей запит. Команда показує цей параметр, тому що без нього пул відповідає помилкою.

Відповідь

{ status: "done", level }. Адреса, для якої поріг ніколи не задавали, отримує мінімум пулу.

GET /api/miner_ban_status

Повідомлення про блокування, яке сторінка майнера показує для адреси, і повідомлення, залишене для неї оператором, якщо воно є.

Параметри
addressобов'язково
Адреса для виплат.
Запит
curl "https://alephium.herominers.com/api/miner_ban_status"

Введіть address вище, щоб запустити цей запит. Команда показує цей параметр, тому що без нього пул відповідає помилкою.

Відповідь

{ banned, minerMessage }, а в разі блокування також blockMining, blockPayments і reason. Це повідомлення, яке сторінка майнера показує для цієї адреси: заблоковано майнінг, виплати або нічого. minerMessage це повідомлення оператора для цієї адреси у вигляді { message, type, createdAt, expiresAt } або null, якщо повідомлення немає.

Як користуватися правильно

  • Опитуйте в ритмі самого пулу. Цифри перераховуються раз за цикл статистики, а config.updateInterval у відповіді /api/stats повідомляє його тривалість у секундах. Частіші запити повернуть ту саму відповідь і витратять трафік і вам, і нам.
  • Використовуйте /api/live_stats замість частого таймера. Він відповідає тієї миті, коли з'являється щось нове, а це і швидше для вас, і легше для пулу, ніж опитування.
  • Зберігайте суми рядками. Нагороди й баланси приходять у найменших одиницях монети. У ланцюгу з 18 знаками після коми такі цілі числа виходять за межі того, що число JavaScript може зберігати точно, тому перетворення непомітно округлює виплату.
  • Зважайте, що адреси замасковано. Публічні списки приховують середину кожної адреси. Повна адреса потрібна лише вам і лише там, де ви самі її вказуєте.
  • Сприймайте обмеження частоти як очікування, а не як збій. Де діє обмеження, відповідь містить retryMs. Зачекайте стільки і повторіть запит, а не засипайте пул запитами.
  • Представтеся. Заголовок User-Agent з назвою вашого інструмента не обов'язковий, але з ним ми зможемо повідомити вам про зміну, а не гадати, що зламалося.