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
        • Создание нового кошелька с нуля
        • Создание кошелька с использованием имеющейся секретной фразы
        • Использование имеющегося кошелька
        • Обновление настроек кошелька
        • Смена аккаунта у ноды
        • Получение seed ноды и приватных ключей
        • Генерация блоков несколькими аккаунтами
      waves_logo Docs

          # Работа с кошельком ноды

          Каждая нода имеет подключенный кошелек, обеспечивающий:

          • возможность генерировать блоки;
          • возможность подписывать транзакции.

          Нода может иметь только один кошелек с одним seed. Seed может представлять собой секретную фразу (случайный набор из 15 английских слов), преобразованную в байты, либо произвольный массив байтов, достаточно длинный, чтобы его вероятность его подобрать была нереально мала.

          Основной аккаунт ноды сгенерирован из seed, к которому добавлен 4-байтный префикс nonce, равный 0. Дополнительные аккаунты можно добавить с помощью метода POST /addresses REST API вашей ноды; для их генерации используется тот же seed и последовательно возрастающие значения nonce. Правила генерации подробно описаны в разделе Cryptographic practical details.

          В данной статье мы рассмотрим следующие сценарии работы с кошельком:

          • Создание нового кошелька с нуля
          • Создание кошелька с использованием имеющейся секретной фразы
          • Использование имеющегося кошелька
          • Обновление настроек кошелька
          • Смена аккаунта у ноды

          # Создание нового кошелька с нуля

          При запуске нода автоматически создаст кошелек в случае, если основной каталог приложения, указанный в секции wallet файла конфигурации, не содержит файл wallet.dat.

          В процессе создания кошелька нода:

          • сгенерирует seed;
          • выведет seed в кодировке base58 в STDOUT;
          • запросит новый пароль, при помощи которого seed будет зашифрован.

          Зашифрованный seed будет записан в wallet.dat. Чтобы не вводить пароль при каждом запуске ноды, рекомендуется указать его в секции wallet файла конфигурации.

          # Создание кошелька с использованием имеющейся секретной фразы

          Если у вас уже есть секретная фраза (seed в виде набора слов), укажите в секции wallet файла конфигурации:

          • seed в кодировке base58.
          • пароль.

          Длина seed в кодировке base58 не должна превышать 192 символа. Секретная фраза из 24 слов может не подойти в качестве seed.

          Для преобразования секретной фразы в кодировку base58 существует множество конвертеров. С точки зрения безопасности разумным представляется использовать Ride REPL в Waves IDE . Чтобы закодировать секретную фразу в base58, введите в консоль

          "your-seed-phrase".toBytes().toBase58String()
          

          При необходимости измените путь к каталогу, где будет размещен сгенерированный wallet.dat. Пример секции wallet с рассмотренными настройками:

          wallet {
              file = ${waves.directory}"/wallet/wallet.dat"
              password = "some-string-as-password"
              seed = "base58-encoded-seed"
          }
          

          В результате в указанном каталоге на основе заданной секретной фразы будет сгенерирован wallet.dat.

          Подробнее о файле конфигурации

          # Использование имеющегося кошелька

          Если у вас имеется созданный ранее файл wallet.dat, достаточно поместить его в каталог, указанный в секции wallet файла конфигурации, и указать пароль к нему в параметре password. Никаких дополнительных действий не требуется.

          # Обновление настроек кошелька

          Если вы хотите запустить ноду с другим кошельком, используйте один из следующих способов:

          • Замените wallet.dat на файл, содержащий seed другого кошелька.

          или

          • Удалите или переместите файл wallet.dat. Обновите seed в файле конфигурации ноды.

          Нода начнет работать с новым кошельком после перезапуска.

          # Смена аккаунта у ноды

          При необходимости поменять аккаунт у ноды, прежде всего потребуется удалить или переместить старый wallet.dat. После этого вы можете:

          • создать новый кошелек с нуля;
          • создать кошелек с использованием имеющейся секретной фразы;
          • использовать другой кошелек.

          Если seed в файле wallet.dat и в файле конфигурации не соответствуют друг другу, нода не запускается.

          # Получение seed ноды и приватных ключей

          Получить seed ноды в кодировке base58 можно с помощью метода REST API GET /wallet/seed. Метод требует авторизации с помощью API-ключа.

          Используя этот seed, вы можете импортировать основной аккаунт ноды в WX Network : Импортировать аккаунты → Секретная фраза или приватный ключ → Зашифр. фраза.

          Для других аккаунтов из кошелька ноды этот способ не подходит. Для них можно получить account seed (см. определение в разделе Cryptographic practical details) с помощью метода REST API GET /addresses/seed/{address}, а затем сгенерировать из account seed закрытый ключ аккаунта. Это можно сделать, выполнив на хосте, где работает нода, следующие команды (вставьте свой API-ключ и адрес аккаунта):

          curl -s -H "x-api-key: ${api_key}" http://localhost:6869/addresses/seed/${address} | \
          jq -c -r .seed | \
          tr -d '\n' | \
          waves util crypto create-keys -i - -o - | \
          jq -r .privateKey
          

          # Генерация блоков несколькими аккаунтами

          Несколько аккаунтов могут генерировать блоки, используя одну ноду. Для этого нужно указать закрытые ключи генерирующих аккаунтов в параметре waves.miner.private-keys файла конфигурации в кодировке base58.

          Пример (не используйте эти ключи на реальной ноде!):

          waves {
             ...
             miner {
                private-keys = [
                   "8V6ZDT59tAGV9Lwvv4bt7WSEwsBD3cPrTd65dxEJr1",
                   "FJgR2bv8fbJZanF6dRm7i8D1Y8rCtKyrsBbKs5UPRP"
                ]
             }
          }
          

          Если в параметре указан хотя бы один ключ, основной аккаунт из кошелька ноды не будет генерировать блоки (однако его можно продолжать использовать для подписания транзакций).

          Логирование
          Фичи
          Логирование
          Фичи