• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

Что такое Dash Devnets?

alex-ru

Well-known member
Пояснение от разработчика Dash

Оригинал:
https://blog.dash.org/dash-devnets-bc27ecbf0085

Что такое Dash Devnets?

С выпуском кошелька Dash Core 12.3 команда Dash добавила поддержку новой отличной функции, называемой “devnets”. Devnets - это сети разработчиков, которые объединяют некоторые аспекты тестовой сети (глобальной и публичной сети тестирования) и некоторые аспекты режима regtest (режим исключительно локального регрессионного тестирования, который обеспечивает управляемую генерацию блоков). В отличие от testnet, можно создать несколько независимых devnets, которые смогут сосуществовать без вмешательства. Каждая из них идентифицируется именем, которое встраивается в блок “devnet genesis”, который автоматически позиционируется на height 1. Правила валидации обеспечивают принцип, согласно которому узел из devnet = test1 не может принимать блоки из devnet = test2. Это достигается путём проверки ожидаемого блока devnet genesis. Кроме того, имя devnet помещается в субверсию версии сообщения, поэтому нода, подключающаяся к неправильной сети, будет немедленно отключена.

В итоге будет существовать много публичных и/или частных devnets, которые будут различаться по размеру и функциям. Предоставление правильного имени devnet и узла сети с сидами - вот и всё, что требуется для соединения. Старый devnet можно легко удалить и запустить новый путём удаления всех нод и их возобновления с новым именем devnet.


Какая польза от devnets?

Из описания вы могли догадаться, что devnets в первую очередь полезны в качестве инструмента разработки. Они обеспечивают значительно большую гибкость, чем testnet, поскольку могут быть созданы для определённых целей и управляются с помощью контролируемых настроек. Ожидается, что devnets будут использоваться в ситуациях, требующих возможности делать такие вещи, как тестирование изменений в базовом коде/коде протокола, которые несовместимы с основной/тестовой сетью, полным управлением генерацией блоков в live-сети и ограничением доступа к сети определённых сторон.

Примерами этого являются:

  • Разработка - Разработка/тестирование новых функций в реальных сетях без влияния на существующую тестовую сеть

  • Исследования - Полный реалистичный анализ производительности блокчейна/сети в контролируемой среде

  • Обучение - Обеспечить практическое, с возможностью опробования обучение с минимальными накладными расходами

  • Интеграция - Разработка/тестирование в приватных сетях

Devnets уже использовались разработчиками Dash для тестирования возможных будущих улучшений в сетях devnet, содержащих более 3000 нод.


Как создать devnet?

К счастью, настраивать devnets легко. Ниже описаны шаги по настройке devnet. Имя devnet в инструкциях (“dashblog”) в настоящее время является активной devnet, которая будет оставаться доступной в течение следующих нескольких недель.


Запустите Dash Core с параметрами devnet

Конфигурирование новой devnet состоит из запуска клиента Dash Core с включёнными параметрами конфигурации (конфигурационный файл или командная строка). Основными параметрами являются:

  • devnet - Определяет имя сети

  • port - Порт для прослушивания P2P-соединений (по умолчанию: 19999)

  • rpcport - Порт для прослушивания RPC-соединений (по умолчанию: 19998)

Ниже приведён пример файла конфигурации клиента Dash Core для devnet с именем “dashblog” (в нём также определены пользователь RPC и пароль):

_____
devnet=dashblog

port=19999

rpcport=19998

rpcuser=myuser

rpcpassword=mypassword

sporkaddr=yXDzZ3eu3GCAHcTCZvgFVkL16qguZJmtww​

# FYI, this is not the correct spork key for the dashblog devnet, this just serves as an example

sporkkey=cTwYCkbKw4EneV6aNG4XAJ6qNGr7zrQEp1NRFSRKf8Ay5BhRBbSX​
_____

Чтобы запустить devnet, определённый в файле конфигурации, запустите команду dashd с параметром -conf с прописанным полным путём вашего файла конфигурации:


dashd -conf=/home/user/.dashcore/mydevnet.conf


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


Параметры sporkaddr и sporkkey определяют ключи, необходимые для инициализации “спорков” в devnet. Они представлены в том же виде, что и обычные адреса Dash и экспортированные закрытые ключи. Для генерации ключей в вашей собственной devnet просто используйте API-интерфейсы getnewaddress и dumpprivkey RPC с узлом devnet или regtest.


Установите начальное соединение

Devnet, состоящий из одной ноды, не очень интересен, поэтому для запуска нескольких нод используются те же параметры. Эти ндоды можно запускать в одной сети или распространить через Интернет.

После запуска нескольких нод с одинаковыми параметрами devnet необходимо запустить начальную команду addnode для установления соединения между нодами в первый раз. Это связано с тем, что механизм обнаружения сидов DNS, используемый для основной/тестовой сети, не относится к специальному характеру devnets.

Команда для подключения к другой равноправной ноде devnet:

dash-cli -conf=/home/user/.dashcore/mydevnet.conf addnode “devnet.thephez.com:19999” “add”


В качестве альтернативы известный пир может быть определён в конфигурационном файле Dash Core, как показано ниже:

# Also include the general devnet options from above here
...
# Hard-coded first node

addnode=devnet.thephez.com:19999​


После того, как первое подключение пира успешно завершено, все его будущие подключения будут осуществляться автоматически. По мере того, как дополнительные ноды будут добавляться в devnet, P2P сообщения getaddr / addr позволят узлам обнаруживать других пиров в сети так же, как это происходило в основной и тестовой сетях.


Использование devnet

После того, как devnet успешно загрузится и несколько нод начнут связываться друг с другом - сеть готова к использованию. Блоки генерируются с использованием параметра generate RPC (тот же способ управления, что и в сети regtest). Это достигается путём ручного вызова RPC или автоматическим способом (например, с помощью утилиты cron и т. п.) в зависимости от требований среды разработки.


В этом примере cron будет создавать 1 новый блок каждые 5 минут:


*/5 * * * * dash-cli -conf=/home/user/.dashcore/mydevnet.conf generate 1​


Либо то же самое может выполнить запуск команды generate вручную:


dash-cli -conf=/home/user/.dashcore/mydevnet.conf generate 1​


На данном этапе всё готово для того, чтобы начать использовать devnet в своих целях. Вы можете отправлять транзакции, настраивать Мастерноды, перемешивать PrivateSend и т. д. Использование функций, зависящих от Мастернод, таких как InstantSend и PrivateSend, потребует настройки Мастернод в вашей devnet. Этот процесс идентичен настройке Мастернод в основной/тестовой сети; однако, чтобы получить обеспечение Мастерноды, вам нужно будет генерировать монеты с помощью команды generate RPC (как описано выше). Размер сети ограничивается только имеющимися у вас ресурсами. Если вы столкнулись с неожиданными проблемами, то можете сбросить devnet, отключив все ноды, удалив их каталоги данных (~/.dashcore/devnet- <devnetname> до состояния по умолчанию) и перезапустив их.


Теперь немного отдохните, а затем сообщите нам, какие интересные варианты использования вы придумали!


Ссылки по теме

Репозиторий, содержащий несколько базовых сценариев оболочки Linux для настройки devnet, можно найти здесь: https://github.com/thephez/dash-devnet-setup. В репозитории также содержится пример файла конфигурации, который можно использовать для подключения к devnet-модулю “dashblog”, используемому в качестве примера.
 
Back
Top