Alfis
Alfis copied to clipboard
[feachure req] Mining speed stats
Статистика скорости майнинга на базе CPU-speed.
Понимаю, что скорость операции майнинг рандомна и собирать её безтолку, но вот скорость перебора хешей - вполне стабильная величина и прямо-пропорциональна производительности CPU.
Каждая запись лога может быть:
- сообщение о скорости майнинга;
- сообщение о способе контакта с другим участником блокчейна с целью получения его дампа записей о скорости майнинга.
Каждое сообщение о скорости майнинга содержит:
- datetime - время генерации статистики по UTC;
- app string - имя программы и номер версии;
- CPU string - имя производителя CPU и модель CPU;
- threads count - количество потоков, задействованных в операции майнинга;
- difficulty - уровень сложности;
- operation - тип операции майнинга: ключ, домен или зона;
- mining time - время, затраченное на операцию майнинга;
- average speed - средняя скорость хеширования в H/s (общее количество хешей, обработанных за сессию майнинга, разделить на веремя майнинга);
- node public key - публичный ключ ноды, сгенерировавшей запись;
- sign - подпись данной строки приватным ключём ноды;
- ttl (time to live) - количество нод, пройдя через которые сообщение будет отброшено (как мера от безконечного флуда).
Каждое сообщение о способе контакта содержит:
- datetime - время сохранения записи в локальном лог-файле статистики;
- contact-info - информация о способе получения дампа лога статистики;
- node public key - публичный ключ ноды, которая сохраняет статистику;
- sign - подпись данной строки приватным ключём ноды.
Опции конфигурации:
- stats-send [bool] - отправлять ли статистику желающим её получить;
- stats-receive [bool] - принимать ли логи статистики от соседей;
- stats-save [bool] - сохранять ли логи полученной статистики в файл;
- stats-file [string] - путь к фалу базы в формате Sqlite для добавления записей. По умолчанию - "mining-stats.db". Каждая новая строка - отдельная запись.
- stats-contact [string] - текстовая строка с информации о способе получения дампа лога с данной ноды.
Если stats-send = yes
, то нода отправляет логи статистики всем соседям, у которых стоит stats-receive = yes
.
Если stats-receive = yes
, то нода извещает соседей о том, что она желает принимать статистику и принимает эту статистику.
Если stats-save = yes
, то нода сохраняет сообщения статистики в файл, указанный в stats-file
.
Если stats-send = yes
и stats-receive = yes
, но stats-save = no
- то нода только учавствует в распространении сообщений о скорости майнинга, но не хранит такие сообщения локально.
Каждая нода, которая отправляет логи, после сообщения типа "скорость майнинга", отправляет также сообщение "способ контакта" (если оно не пустое) 1 раз за сеанс связи с соседом. Каждое сообщение типа "способ контакта" проверяется на наличие в базе по ключу "public-key". Если информация о способе контакта с владельцем ноды уже присутствует в базе, то такое сообщение только обновляет существующую запись, но не добавляет новую запись.
А зачем это нужно, @Bogdan107?
- Оценка производительности CPU в конкретной версии алгоритма.
- Оценка влияния настроек своей системы на производительность CPU.
- Косвенная оценка ресурсов, затраченных на поддержку блокчейна (косвенная, потому что не все ноды отправят логи).
Логи производительности пригодятся разработчику при планировании сложности майнинга (и сквоттерам тоже, но у них и так топовое оборудование). Максимальная производительность разработчику известна в отношении только тех нескольких CPU, к которым имеет доступ разработчик. Логи же позволят определить как минимальную производительность (по самому слабому CPU), так и среднюю арифметическую, размах ряда (минимальная и максимальная производительности) и моду ряда показаний (какие CPU самые популярные). Также с логами можно определить на сколько производительность CPU в BogoMIPS коррелирует с производительностью алгоритма майнинга. И много как ещё можно придумать как обрабатывать статистику.
Имея среднее арифметическое значение производительности своего CPU из статистики и сравнив со значениями на своём CPU, существенная разница в отрицательную сторону будет указывать на неоптимальные настройки своей системы. Однажды я тестировал другой майнер и на моей конфигурации настроек системы, производительность майнинга оказалась в 3 раза ниже, чем производительность из статистических данных для моего CPU. Т.е. такая статистика может помочь кому-то понять, что ему надо менять не CPU, а всего-то лишь настройки системы.
Если иметь логи производительности для каждого блока в блокчейне и для всех предыдущих версий блоков, то можно оценить размер ресурсов, затраченных на майнинг всего блокчейна (можно будет делать громкие заявления). В целом - ничего не значащее число, однако позволит сравнить затраты на поддержание Identity System, отличных от ALFIS, с затратами на поддержвание системы ALFIS.
В общем, прогнозирую положительный эффект от такой системы логирования только в будущем, когда сама система будет внедрена, отлажена и давно забыта как не требующая внимания, а база с логами будет накоплена.
I too would love to know the stats of mining credentials and domains. Sadly I don't know Russian and don't trust Google translate to get it right, so I'm leaving this comment in both Russian and English.
Я тоже хотел бы узнать статистику учетных данных и доменов для майнинга. К сожалению, я не знаю русского и не верю, что Google translate все сделает правильно, поэтому я оставляю этот комментарий как на русском, так и на английском языках.