VNISH GLOBALAcademy

VNISH GLOBAL · Для разработчиков

Четыре запроса к API майнера

VNISH API: сведения об устройстве, сводка, история метрик и статус. Справочник по документу из конкретной сборки S19j XP / CV / NAND / 1.3.5.

S19j XP · CV · NANDЧетыре операции GETПодготовлено:

Начните без майнера

Скачайте наши небольшие примеры на Python и откройте локальный учебный файл. Каждый файл написан вручную и показывает отдельные поля. Это не ответ реального устройства, не замер производительности и не полная схема ответа.

python3 miner_read.py --fixture info
python3 miner_read.py --fixture summary
python3 miner_read.py --fixture metrics
python3 miner_read.py --fixture status

Скачать примеры, учебные файлы и тесты (.zip). Нужен Python 3.9 или новее, дополнительные пакеты не требуются. В архиве есть README и лицензия MIT для нашего кода.

Для чтения реального майнера замените 192.168.1.20 его точным локальным IP. Работайте с устройством, которым владеете или которое вам разрешено читать. Скрипт делает один GET, выводит выбранные поля и завершает работу.

python3 miner_read.py --base-url http://192.168.1.20 --endpoint info

Четыре адреса ниже относятся к майнеру. Публичный каталог файлов на vnish.global работает отдельно. На этой странице нет сканирования сети или подключения к устройству из браузера.

GET/api/v1/info

Начните с данных о прошивке и платформе самого устройства. Сопоставьте их со сборкой, для которой используете примеры.

curl --noproxy '*' --fail --max-time 5 --header 'Accept: application/json' \
  'http://192.168.1.20/api/v1/info'
fw_name / fw_version
Название и версия прошивки. Значения сообщает работающее устройство.
platform / install_type
Платформа контрольной платы и тип установки. Среди значений схемы есть cv и nand.
model / algorithm
Код модели майнера и алгоритм майнинга.
hr_measure
В источнике перечислены GH/s, MH/s и N/A. Сохраните значение устройства перед интерпретацией хешрейта.

Полный ответ также может содержать серийный номер, системные и сетевые сведения. Наш пример на Python пропускает их; прямой запрос curl выводит полный ответ.

GET/api/v1/summary

Текущая сводка находится в поле miner. Источник допускает miner: null и не помечает это поле верхнего уровня обязательным. Отсутствующее или пустое значение означает отсутствие данных, а не нулевой хешрейт.

python3 miner_read.py --base-url http://192.168.1.20 --endpoint summary
miner.hr_average
Поле среднего хешрейта. Сохраните число и проверьте единицы на реальном устройстве.
miner.hr_realtime
Поле текущего хешрейта. Не переводите его в TH/s без проверки единиц.
miner.power_consumption
Поле мощности. В изученном определении его единицы не указаны, поэтому пример сохраняет исходное число.

Поля average_hashrate, instant_hashrate и power_usage помечены в схеме устаревшими. В примерах используются поля выше. Примеры не рассчитывают комиссию и не утверждают её размер.

GET/api/v1/metrics

История измерений за выбранный период. Источник описывает Unix-время, название часового пояса, массив метрик и отдельный массив событий.

python3 miner_read.py --base-url http://192.168.1.20 --endpoint metrics \
  --time-slice 3600 --step 60
time_slice
Период назад от текущего момента, в секундах. По умолчанию 86400. Документированный максимум 259200, то есть трое суток.
step
Шаг усреднения в секундах. По умолчанию 900, то есть 15 минут. Наш пример требует положительное 32-битное целое число.
metrics[].time
Unix-время. Сохраните его для сопоставления измерений; это не порядковый номер отсчёта.
metrics[].data
Поля хешрейта, мощности, максимальных температур платы и чипов, управления вентиляторами. Наш скрипт выводит только хешрейт и мощность.
annotations
Отдельные события с временными метками. Наш скрипт показывает их количество.

Единицы этих числовых полей метрик явно не заданы в изученной схеме. Пример сохраняет значения без предположений и пересчёта.

В источнике есть несогласованность: описание ответа HTTP 200 говорит «Config saved successfully». При этом операция обозначена как GET, а схема ответа содержит метрики. Справочник следует методу и схеме.

GET/api/v1/status

Состояние майнера и служебные флаги. Получение флага перезапуска или перезагрузки само по себе не является командой выполнить это действие.

python3 miner_read.py --base-url http://192.168.1.20 --endpoint status
miner_state
В изученной схеме есть состояния mining, initializing, starting, auto-tuning, restarting, shutting-down, stopped и failure.
miner_state_time
Время в текущем состоянии. По описанию источника реализовано только для mining; единица времени не указана.
find_miner / unlocked
Флаги поиска устройства и блокировки экрана. Чтение не отправляет команду поиска или разблокировки.
restart_required / reboot_required
Флаги необходимости перезапуска или перезагрузки. Примеры только выводят их.

Доступ и обработка ошибок

Для /summary источник перечисляет пустую альтернативу авторизации, bearer-токен и API-ключ. У остальных трёх операций требования авторизации явно не заданы. Это не доказывает, какой доступ разрешает реальное устройство.

Наш скрипт не отправляет секреты и останавливается на HTTP 401 или 403. Он не входит в учётную запись, не разблокирует майнер, не повторяет запрос и не следует перенаправлениям. Принимаются только точные локальные IP, системные прокси отключены для запроса. Тайм-аут составляет пять секунд, предел ответа 2 МиБ. Проверка сертификата HTTPS остаётся включённой.

Скрипт проверяет типы нескольких выбранных полей. Это не полная проверка схемы, исправности майнера или совместимости прошивки.

Источник и границы проверки

Мы изучили API-документ из архива vnish-s19j-xp-cv-nand-v1.3.5.tar.gz: S19j XP, контрольная плата CV, NAND, прошивка 1.3.5. Путь документа в распакованном пакете: /usr/share/dashd/ui/docs/api-doc.json. В нём указан базовый путь сервера /api/v1.

Название документа xminer-api, значение info.version равно 0.1.0. Это метаданные API-документа, а не версия прошивки. Здесь приведены наши объяснения и отдельные факты об интерфейсе; исходный документ целиком не распространяется.

SHA-256 архива прошивки:58d2b534595532214f19676f9eba6cd3ac1a9e59ede5eb519a3a8d2129f04dc3SHA-256 изученного API-документа:8bc6ed02457447d4d2d96def8cc8866d03a8c35edd8e496eb50b22b8230a1ebc

Проверка включала изучение источника и локальные тесты примеров. Мы не подключались к ASIC, не прошивали и не перезагружали его. Для других моделей, платформ и версий нужны отдельные проверки.

Запись этой сборки · Каталог прошивок VNISH GLOBAL · Пример версии и имени архива