Welcome to the Dash Forum!

Please sign up to discuss the most innovative cryptocurrency!

Что такое Dash Devnets?

Discussion in 'Русский Russian' started by alex-ru, Jul 20, 2018.

  1. alex-ru

    alex-ru Grizzled Member
    Dash Support Group

    Joined:
    Jul 14, 2014
    Messages:
    2,365
    Likes Received:
    3,237
    Trophy Points:
    1,183
    Пояснение от разработчика 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”, используемому в качестве примера.
     

Share This Page