VNISH GLOBAL · Для разработчиков
Четыре запроса к API майнера
VNISH API: сведения об устройстве, сводка, история метрик и статус. Справочник по документу из конкретной сборки S19j XP / CV / NAND / 1.3.5.
Начните без майнера
Скачайте наши небольшие примеры на 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 summaryminer.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 60time_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 statusminer_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 · Пример версии и имени архива