BastyonBastyon
  • Начало работы

    • Начало работы
    • Руководство по настройке Easy Node
    • Руководство по настройке Full Node
  • Монетизация

    • Руководство по монетизации Bastyon
  • Обзор платформы

    • Обзор платформы
    • Участие в разработке Bastyon
  • Блокчейн-узел

    • Начало работы
    • Исходный код
    • Сборка
    • Использование
    • RPC
  • API

    • Введение
    • Начало работы
    • RPC
    • Мини-приложения
  • Мини-приложения

    • Начало работы
    • Разрешения
    • SDK
  • Barteron

    • API Barteron
  • English
  • Русский
  • Начало работы

    • Начало работы
    • Руководство по настройке Easy Node
    • Руководство по настройке Full Node
  • Монетизация

    • Руководство по монетизации Bastyon
  • Обзор платформы

    • Обзор платформы
    • Участие в разработке Bastyon
  • Блокчейн-узел

    • Начало работы
    • Исходный код
    • Сборка
    • Использование
    • RPC
  • API

    • Введение
    • Начало работы
    • RPC
    • Мини-приложения
  • Мини-приложения

    • Начало работы
    • Разрешения
    • SDK
  • Barteron

    • API Barteron
  • English
  • Русский
  • Блокчейн-узел

    • Начало работы
    • /ru/dev/node/source_ru.html
    • Сборка
    • Использование
    • RPC

Сборка

Введение

Это руководство описывает различные способы компиляции узла PocketnetCore или его отдельных компонентов. Следуя инструкциям в этом документе, вы можете получить следующие бинарные файлы и установочные пакеты:

  • pocketcoind - демон узла, который:

    • Запускает узел в режиме без графического интерфейса
    • Управляется через конфигурационный файл pocketcoin.conf
    • Предоставляет RPC API для внешнего взаимодействия
  • pocketcoin-qt - GUI клиент, который:

    • Включает полную функциональность демона
    • Предоставляет интерфейс кошелька
    • Содержит инструменты разработчика (RPC консоль, управление пирами)
    • Позволяет настраивать параметры узла через графический интерфейс
  • pocketcoin-cli - консольная утилита для:

    • Взаимодействия с узлом через RPC
    • Управления кошельком
    • Получения статистики
    • Настройки логирования

Сборка может выполняться для отдельных компонентов или как полный пакет. Поддерживаются установочные пакеты:

  • NSIS для Windows
  • DEB для Debian/Ubuntu
  • DMG для macOS

Это руководство описывает два основных подхода к сборке:

  1. Для разработки (с использованием CMake)
  2. Для релизных версий (с использованием GNU Make)

Начало работы

Системные требования

  • Минимум 4 ГБ ОЗУ (рекомендуется 8 ГБ)
  • 50 ГБ свободного места на диске
  • Процессор с поддержкой 64-битных инструкций
  • Операционная система:
    • Linux (Ubuntu 22.04 или новее)
    • Windows 10/11
    • macOS 11 или новее

Предварительные требования

Перед началом сборки убедитесь, что у вас установлены:

  • Git
  • Компилятор C++ (GCC 9+ для Linux, MSVC для Windows, Clang для macOS)
  • CMake 3.20 или новее (для сборки с CMake)
  • Python 3.8 или новее
  • Права администратора в системе для установки зависимостей

Рекомендации по разработке

  • Рекомендуется использовать Docker для изоляции среды разработки
  • Используйте систему контроля версий (git) для отслеживания изменений
  • Для разработки предпочтительно использовать CMake и современные IDE (VSCode, CLion)
  • При возникновении проблем с зависимостями проверяйте версии библиотек в depends/

Важные замечания

  • Сборка может занять значительное время (30-60 минут в зависимости от системы)
  • При сборке для релиза используйте теги из основного репозитория
  • Для разработки рекомендуется начинать с отладочной сборки
  • Документируйте все изменения кода и обновляйте тесты при необходимости

Использование Docker контейнера

Docker предоставляет мощные инструменты для разработки и развертывания приложений, предлагая следующие преимущества:

  • Изоляция среды разработки от хостовой операционной системы
  • Гарантированная воспроизводимость среды на разных машинах
  • Простое управление зависимостями и конфигурацией
  • Быстрое переключение между разными версиями среды
  • Эффективность использования ресурсов по сравнению с виртуальными машинами
  • Удобное масштабирование и развертывание

Хотя использование Docker не является обязательным для сборки проекта, оно помогает избежать проблем с зависимостями во время работы. Из-за требования к минимальной версии cmake v3.20+, версия Linux в Docker контейнере должна быть не ниже ubuntu:22.04. Это ограничение не применяется при сборке с помощью make.

Клонирование репозитория

Загрузите проект из официального репозитория (требуется установка git). Главная ветка подходит для работы в Main сети, но может включать коммиты, относящиеся к стадии BETA. Рекомендуется переключить репозиторий на последний тег.

apt-get update
apt-get install git
git clone https://github.com/pocketnetteam/pocketnet.core
cd pocketnet.core/
# Переключиться на последний стабильный тег
git checkout $(git describe --tags "$(git rev-list --tags --max-count=1)")

Подготовка пакетов зависимостей

Следующий этап включает подготовку среды и установку минимального набора пакетов, необходимых для начала компиляции проекта. В зависимости от целевой ОС набор дополнительных пакетов и процесс немного различаются.

Установка системных требований

Linux x64

apt-get update
apt-get install make automake cmake curl bzip2 g++-multilib pkg-config \
   python3 bison

Linux arm64

# TODO : implement

Windows x64

# TODO : implement

MacOS x64 (intel)

# TODO : implement

MacOS arm64 (mX)

# TODO : implement

Сборка зависимостей

Директория depends/ содержит все необходимые пакеты для сборки, которые позволяют компилировать код для разных платформ.

cd depends/
make
cd ..

Для сборки зависимостей для другой платформы (кросс-компиляция) необходимо передать компилятору make аргумент HOST, указывающий целевую платформу.

host_platform="x86_64-pc-linux-gnu"
make HOST=$host_platform

Общие протестированные host_platform для кросс-компиляции:

  • x86_64-pc-linux-gnu для Linux (64-bit)
  • x86_64-w64-mingw32 для Windows (64-bit)
  • x86_64-apple-darwin16 для macOS (64-bit)
  • arm64-apple-darwin для ARM macOS (64-bit)

Конфигурация и компиляция

cmake

Совет

Этот тип сборки находится в стадии тестирования и не предназначен для использования в продакшене.

mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=$PWD/../depends/$host_platform ..
cmake --build . --config Debug -j 8

В результате будут скомпилированы следующие файлы:

└─ build/
   └─ src/
      └─ qt/
      │  └─ pocketcoin-qt
      ├─ pocketcoind
      ├─ pocketcoin-cli

make

Основной метод для сборки исполняемых файлов и установочных пакетов.

./autogen.sh
CONFIG_SITE=$PWD/depends/$host_platform/share/config.site ./configure --prefix=/usr/local
make

В результате будут скомпилированы следующие файлы:

└─ src/
   └─ qt/
   │  └─ pocketcoin-qt
   ├─ pocketcoind
   └─ pocketcoin-cli

make deploy

Финальные версии (Релизы) компилируются с помощью make, установочные пакеты собираются с помощью make deploy:

make deploy

В результате будут скомпилированы следующие файлы:

└─ src/
   ├─ pocketnetcore_X.Y.Z_linux_x64_setup.deb
   └─ pocketnetcore_X.Y.Z_linux_x64.tar.gz

Совет

Версия финальных файлов определяется скриптом ./share/version.sh и зависит от текущего GIT коммита. Для релизов используются теги в формате X.Y.Z.

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

При использовании расширения CMake вы можете управлять конфигурацией и компиляцией проекта с помощью инструментов VSCode. Для этого необходимо создать файл конфигурации .vscode/settings.json и указать полный путь к директории зависимостей:

mkdir .vscode
touch .vscode/settings.json

Параметры управления CMake в файле .vscode/settings.json:

{
   ...
    "cmake.configureArgs": [
        "-DCMAKE_PREFIX_PATH=/full/path/project/depends/host_platform"
    ],
    "cmake.parallelJobs": 8,
    ...
}

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

TODO : implement

Последнее обновление:
Участники: gked
Prev
/ru/dev/node/source_ru.html
Next
Использование