waves_logo Docs
  • Руководство владельца ноды
    Руководство владельца ноды
  • Установить ноду Waves
    • Развернуть ноду в Docker
      Развернуть ноду в Docker
    • Установить ноду на Ubuntu
      Установить ноду на Ubuntu
    • Установить ноду на macOS
      Установить ноду на macOS
    • Установить ноду на Windows
      Установить ноду на Windows
    • Установить из исходников (сборка SBT)
      Установить из исходников (сборка SBT)
    Установить ноду Waves
  • Синхронизировать блокчейн Waves
    • Импортировать и экспортировать блокчейн
      Импортировать и экспортировать блокчейн
    • Загрузить актуальный блокчейн
      Загрузить актуальный блокчейн
    • Откатить ноду
      Откатить ноду
    Синхронизировать блокчейн Waves
  • Генерировать блоки
    Генерировать блоки
  • Обновить ноду
    Обновить ноду
  • Конфигурация ноды
    Конфигурация ноды
  • Логирование
    Логирование
  • Кошелек ноды
    Кошелек ноды
  • Фичи
    • Протокол активации
      Протокол активации
    Фичи
  • Собственный блокчейн
    Собственный блокчейн
  • REST API ноды
    • API-ключ
      API-ключ
    • Работа с транзакциями
      Работа с транзакциями
    • Формат числовых полей
      Формат числовых полей
    • Постраничная выборка
      Постраничная выборка
    • CORS
      CORS
    • Ограничения пула публичных нод
      Ограничения пула публичных нод
    • Медленные запросы
      Медленные запросы
    • Коды ответов и ошибки
      Коды ответов и ошибки
    REST API ноды
  • Расширения
    • gRPC Server
      gRPC Server
    • Blockchain Updates
      Blockchain Updates
    Расширения
  • Устранение неполадок
    • Генерация блока FAQ
      Генерация блока FAQ
    Устранение неполадок
  • Нода на языке Go
    Нода на языке Go
      • English
      • Русский
      On this page
        • Развернуть ноду с собственным блокчейном в Docker
        • Установить Jar-ноду с собственным блокчейном
        • Добавление нод в свою сеть
        • Настройка дополнительных сервисов
      waves_logo Docs

          # Собственный (сustom) блокчейн

          В данной статье описан процесс установки собственного (custom) блокчейна Waves, который можно использовать для экспериментальной деятельности.

          Для большинства задач, таких как знакомство с блокчейном, отправка транзакций, разработка смарт-контрактов, достаточно развернуть одну ноду с собственным блокчейном в Docker.

          Для настройки собственной сети блокчейн с несколькими нодами выполните шаги, описанные в секции Установить Jar ноду с собственным блокчейном.

          # Развернуть ноду с собственным блокчейном в Docker

          Самый простой способ запустить собственную блокчейн сеть Waves с одной нодой — это установить Docker и развернуть Docker-контейнер ноды Waves с настройками для собственной сети .

          # Установить Jar-ноду с собственным блокчейном

          Вы можете запустить одну или несколько Jar-нод для создания собственного (частного) блокчейна. Для этого нужно создать блок генезиса и задать настройки блокчейна в файле конфигурации.

          # Шаг 1

          Установка ноды поддерживается в версиях OpenJDK 11 и 17.

          Если OpenJDK не установлен, установите OpenJDK 11:

          • На Ubuntu:

            sudo apt-get update
            sudo apt-get install openjdk-11-jre-headless
            
          • Ha macOS:

            brew install openjdk@11
            
          • На Windows: как описано в документации .

          # Шаг 2

          Загрузите последнюю версию Jar-ноды (файл waves-all-{version}.jar).

          # Шаг 3

          Создайте файл genesis.example.conf с параметрами блока генезиса в каталоге с JAR-файлом.

          Пример:

          genesis-generator
          {
            network-type: "L"  # байт сети (идентификатор) вашего блокчейна
            initial-balance: 10000000000000000  # первоначальный баланс в wavelets
            average-block-delay: 60s # среднее время выпуска блока
            # timestamp: 1500635421931 # по умолчанию текущее время
            # base-target: 999 # коэффициент, регулирующий среднее время выпуска блока; если не указан, вычисляется автоматически
          
            # сумма долей должна быть = initial-balance
            distributions = 
            [
              { 
                seed-text: "foo0"
                nonce: 0
                amount: 10000000000000000
              }
            ]
          
            # pre-activated-features = [1,2,15] # по умолчанию все фичи будут активированы с высоты 0
          }
          

          # Шаг 4

          Запустите команду генерации блока генезиса:

          java -cp waves-all-{version}.jar com.wavesplatform.GenesisBlockGenerator genesis.example.conf
          

          Результат будет записан в файл genesis.conf (можно использовать произвольное имя файла) и будет выглядеть следующим образом:

          Addresses:
          
           Seed text:           foo0
           Seed:                3csAfH
           Account seed:        58zgAnBg775J6NKd4qVtfeX3m5TBMeizHNY9STvm2N87
           Private account key: FYLXp1ecxQ6WCPD4axTotHU9RVfPCBLfSeKx1XSCyvdT
           Public account key:  GbGEY3XVc2ohdv6hQBukVKSTQyqP8rjQ8Kigkj6bL57S
           Account address:     3JfE6tjeT7PnpuDQKxiVNLn4TJUFhuMaaT5
           ===
          Settings:
          waves {
            blockchain.custom {
              address-scheme-character = L
              functionality {
                pre-activated-features = null # undefines all previously defined pre-activated features
                pre-activated-features = {1 = 0, 2 = 0, 3 = 0, 4 = 0, 5 = 0, 6 = 0, 7 = 0, 8 = 0, 9 = 0, 10 = 0, 11 = 0, 12 = 0, 13 = 0, 14 = 0, 15 = 0}
              }
              genesis {
                average-block-delay = 60s
                base-target = 122
                timestamp = 1612954141684 # 2021-02-10T10:49:01.684Z
                block-timestamp = 1612954141684 # 2021-02-10T10:49:01.684Z
                signature = "3k64TQfLUkLWjCWkajPHfLovWoKpYgH6sTJrymog5nA3PZfqo9Qa1dKtRsDmvavULgEkMGACsxH2eCsnrua4JX9F"
                initial-balance = 10000000000000000
                transactions = [
                  {recipient = "3JfE6tjeT7PnpuDQKxiVNLn4TJUFhuMaaT5", amount = 10000000000000000}
                ]
              }
            }
          
          #  wallet {
          #    seed = 3csAfH
          #    password =
          #  }
          }
          

          Секция Addresses содержит список аккаунтов, на которые распределены средства в блоке генезиса, секция waves понадобится далее в шаге 5.

          # Шаг 5

          В каталоге с JAR-файлом создайте файл *.conf с произвольным именем (например, waves-custom-network.conf) и откройте его текстовым редактором. Используйте пример файла конфигурации в качестве образца.

          Больше информации про файл конфигурации см. в статье Конфигурация ноды.

          Если основной каталог приложения (параметр directory) не задана, то она будет создана по адресу:

          *nix macOS Windows
          $XDG_DATA_HOME/waves-custom-<character>* or $HOME/.local/share/waves-custom-<character>* $HOME/Library/Application Support/waves-custom-<character>* %LOCALAPPDATA%/waves-custom-<character>*

          Вставьте контент, сгенерированный в шаге 4, в файл конфигурации. Вместо этого можно написать include "genesis.conf", где genesis.conf — это имя файла из шага 4.

          Задайте параметры waves.wallet. Используйте значение Seed (Seed text в base58), сгенерированный в шаге 4, в качестве значения параметра waves.wallet.seed.

          В секции waves.network задайте значения параметров port, known-peers (список нод вашего блокчейна), node-name и declared-address.

          Чтобы использовать REST API вашей ноды, задайте параметры enable, port и api-key-hash (см. раздел API-ключ) в секции waves.rest-api.

          Секция waves.blockchain.custom.functionality позволяет настроить функциональность блокчейна, в том числе:

          • Включить/выключить фичи ноды с помощью параметра pre-activated-features. Поддерживаемые фичи описаны в статье Фичи.
          • Установить момент начала действия для функций (валидаций) блокчейна, активируемых не через механизм фич, а по временной метке или высоте.
          • Указать адреса, на которые будет зачисляться доля вознаграждения за блок, в параметрах dao-address и xtn-buyback-address (подробнее о распределении вознаграждения за блок — в разделе Монетарная политика, управляемая сообществом). Если адрес (или оба) не указан, соответствующую долю вознаграждения получает генератор блока.

          # Шаг 6

          Запустите вашу ноду на собственном блокчейне с помощью команды:

          java -jar waves-all-{version}.jar waves-custom-network.conf
          

          Примечание: Вы можете запустить существующую ноду (DEB или JAR) с измененным файлом конфигурации вручную.

          # Добавление нод в свою сеть

          Вы можете добавить несколько нод в свою сеть, используя параметр waves.network.known-peers, указав адрес и порт существующей ноды с такими же параметрами сети, например: 127.0.0.1:6860. Если у вас несколько локальных нод, то не забудьте изменить для новых нод сетевой порт waves.network.port, порт API waves.rest-api.port, основной каталог приложения waves.directory и секретную фразу кошелька waves.wallet.seed.

          # Настройка дополнительных сервисов

          Вы можете подключить к своему блокчейну дополнительные сервисы, такие как:

          • Cервис данных (Data Service), который позволит быстро и удобно получать данные из блокчейна через REST API, аналогично Mainnet и Testnet, как описано в статье Waves Data Service API. Подробнее по ссылке deploy examples .

          • dApps. Подробнее в статье How to Build, Deploy and Test a Waves RIDE dApp .

          • Waves Explorer, который позволит просматривать данные блокчейна в удобочитаемом формате.

            Чтобы развернуть Waves Explorer в Docker-контейнере на localhost, используйте следующую команду:

            docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
            
          • Матчер , который исполняет ордера (биржевые заявки) на покупку и продажу активов.

          Протокол активации
          REST API ноды
          Протокол активации
          REST API ноды