How to Wiki Database (change log) http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
7.6 KiB

======SYG-CPP - Майнер адресов на C++======
^ :!: Внимание! ^
| С выходом Yggdrasil v. 0.4 изменился способ генерирования IPv6-адресов Yggdrasil. Раньше использовались хеши ключей curve25519, в версии 0.4.x используются ключи ed25519. Данная статья писалась еще во времена версий 0.3.x.\\ \\ Источник: https://yggdrasil-network.github.io/2021/06/19/preparing-for-v0-4.html|
SYG-CPP - это майнер адресов Yggdrasil, написанный на языке C++. По своей сути является логическим продолжением майнера [[yggdrasil:address_miners:simpleygggen|SYG, выполненного на bash]]. Разработка ведется пользователем [[user:acetone|acetone]], однако сделать свой вклад в развитие может каждый желающий, предложив свои изменения в [[https://notabug.org/acetone/SimpleYggGen-CPP|репозитории проекта]] (GitHub не используется принципиально). Майнер поддерживает три основных режима работы: майнинг по паттерну, т.е. явному вхождению символов в конечном адресе (например, двойное двоеточие или ''cafe:babe'' и т.п.), режим майнинга высоких адресов (для понимания зачем нужны высокие адреса, читайте [[yggdrasil:spoofing_theory|эту]] статью) и поиск по регулярному выражению, а также гибридный режим: одновременный поиск по имени и высоте. В версии ''3.3 "worldwide"'' была добавлена возможность работы с meshname-доменами: их отображение в общем выводе с IPv6 адресом и ключами, а также майнинг данных доменов по паттерну и регулярному выражению. В версии ''3.4 "subnetlover"'' появился ряд дополнительных функций: конвертация IP в meshname-домен и обратная конвертация meshname-домена в IPv6.
Первый релиз ''v1.0-hothead'' датируется 11 августа 2020 года. Сравнительный тест с [[yggdrasil:address_miners:simpleygggen_go|майнером на Golang]] в режиме майнинга по имени показал стабильное преимущество SYG-CPP примерно на 15% (бенчмарк первых версий, 11.08.2020). Версия syg-cpp 3.0 "Vort" имеет преимущество в ~100 раз. По некоторым данным, разработка майнеров на Golang полностью остановлена, т.к. их максимальная оптимизация дает около 25% от производительности аналогичного продукта на C++. На момент версии SYG-CPP 3.X перспективу разработки имеет только майнер на видеокартах (CUDA, OpenCL), т.к. дальнейшая оптимизация майнинга на процессоре не даст значительного прироста. Один такой майнер анонсирован пользователем под ником frodo_buggins: [[https://notabug.org/frodo_buggins/ygg-brute|ссылка]] на git-репозиторий.
**Скачать** майнер можно на [[https://notabug.org/acetone/SimpleYggGen-CPP/releases|странице релизов]] в интернете, либо с [[http://[324:9de3:fea4:f6ac::ace]/files/software/yggdrasil_address_miners/sygcpp/|внутрисетевого репозитория]].
======Механика процесса======
Эта глава объясняет базовую механику работы майнера SYG-CPP. Также она призвана пояснить доступным языком (насколько это возможно) алгоритм образования IPv6 адресов Yggdrasil, т.к. читать оригинальный код на Golang с англоязычными комментариями может оказаться затруднительно.
Узлы сети сообщаются друг с другом путем обмена открытыми ключами шифрования. Из открытого ключа каждый узел по определенному алгоритму самостоятельно выводит IPv6 адрес абонента на другом конце. Передача информации на каждый отдельный адрес шифруется соответствующим публичным ключом. Благодаря этому Yggdrasil считается защищенной меш-сетью со сквозным шифрованием.
{{yggdrasil:yggdrasil-address-algorithm.png?600 }}
Необходимые алгоритмы для создания адреса: **x25519** (ассиметричное шифрование на эллиптической кривой Curve25519), **SHA512** (хеш-сумма), и функция преобразования битовой информации в IPv6. В SYG-CPP для получения пары ключей и выведения хеша от открытого ключа используется библиотека libsodium (до версии 2.0 использовалась библиотека OpenSSL. От нее отказались, т.к. libsodium показывает результат почти что в два раза лучше, т.е. быстрее). С версии 3.0 используются переписанные библиотечные функции.\\ Иллюстрация наглядно отображает процесс формирования адреса из ключа. Учитывая, что в режиме майнинга адресов высокого порядка функция преобразования битовой информации в завершенный IPv6 адрес происходит только при нахождении наибольшего количества лидирующих единиц в хешэ, т.е. фактически при майнинге работает только урезанная функция, считающая лидирующие единицы, майнинг адресов высокого порядка в происходит быстрее.
На выходе майнер выдает связку ключей и IPv6 адрес с инструкцией по его применению: для этого требуется изменить ''EncryptionPublicKey'' и ''EncryptionPrivateKey'' в файле конфигурации Yggdrasil (C:\ProgramData\Yggdrasil\yggdrasil.conf или /etc/yggdrasil.conf).
=====Скриншоты=====
{{syg:sygcpp-4.0-mesh.png}}
{{syg:sygcpp-4.0-help.png}}
=====Ссылки=====
[[https://notabug.org/acetone/SimpleYggGen-CPP|Git]]\\
[[https://simpleygggen.sourceforge.io/|Sourceforge]]
//Пользователи, сделавшие вклад в развитие SimpleYggGen-CPP: orignal, lialh4, R4SAS, Vort, filarius//