diff --git a/docs/.vuepress/configs/navbar/en.ts b/docs/.vuepress/configs/navbar/en.ts index dff258c..98ab8da 100644 --- a/docs/.vuepress/configs/navbar/en.ts +++ b/docs/.vuepress/configs/navbar/en.ts @@ -4,43 +4,35 @@ import { VERSION } from '../meta.js' export const navbarEn: NavbarOptions = [ { text: 'Guide', - children: [ - '/guide/introduction.md', - '/guide/getting-started.md', - '/guide/monetization/index.md', - '/guide/full-node/', - '/guide/easy-node/', - ], - }, - { - text: 'Development', children: [ '/dev/introduction.md', '/dev/get-started.md', '/dev/infrastructure.md', '/dev/contribution.md', - { - text: 'Proxy & API', - children: [ - '/dev/api/get-started.md', - ], - }, - { - text: 'Client Applications', - children: [ - '/dev/apps/get-started.md', - ], - }, - { - text: 'Blockchain Node', - children: [ - '/dev/node/get-started.md', - '/dev/node/requirements.md', - '/dev/node/environment.md', - '/dev/node/building.md', - '/dev/node/contribution.md', - ], - }, + ], + }, + { + text: 'Blockchain', + children: [ + '/dev/node/get-started.md', + '/dev/node/requirements.md', + '/dev/node/environment.md', + '/dev/node/building.md', + '/dev/node/contribution.md', + ], + }, + { + text: 'Proxy & API', + children: [ + '/dev/api/introduction.md', + '/dev/api/get-started.md', + ], + }, + { + text: 'Applications', + children: [ + '/dev/apps/introduction.md', + '/dev/apps/get-started.md', ], }, diff --git a/docs/.vuepress/configs/sidebar/en.ts b/docs/.vuepress/configs/sidebar/en.ts index 9efb4c1..5dd3129 100644 --- a/docs/.vuepress/configs/sidebar/en.ts +++ b/docs/.vuepress/configs/sidebar/en.ts @@ -1,21 +1,9 @@ import type { SidebarOptions } from '@vuepress/theme-default' export const sidebarEn: SidebarOptions = { - '/guide/': [ - { - text: 'Guide', - children: [ - '/guide/introduction.md', - '/guide/getting-started.md', - '/guide/monetization/', - '/guide/full-node/', - '/guide/easy-node/', - ], - }, - ], '/dev/': [ { - text: 'Development', + text: 'Guide', children: [ '/dev/introduction.md', '/dev/get-started.md', @@ -23,20 +11,10 @@ export const sidebarEn: SidebarOptions = { '/dev/contribution.md', ], }, + ], + '/dev/node': [ { - text: 'Proxy & API', - children: [ - '/dev/api/get-started.md', - ], - }, - { - text: 'Client Applications', - children: [ - '/dev/apps/get-started.md', - ], - }, - { - text: 'Blockchain Node', + text: 'Blockchain', children: [ '/dev/node/get-started.md', '/dev/node/requirements.md', @@ -46,26 +24,23 @@ export const sidebarEn: SidebarOptions = { ], }, ], - '/advanced/': [ + '/dev/api': [ { - text: 'Advanced', + text: 'Proxy & API', children: [ - '/advanced/architecture.md', - '/advanced/plugin.md', - '/advanced/theme.md', + '/dev/api/introduction.md', + '/dev/api/get-started.md', ], }, + ], + '/dev/apps': [ { - text: 'Cookbook', + text: 'Applications', children: [ - '/advanced/cookbook/README.md', - '/advanced/cookbook/usage-of-client-config.md', - '/advanced/cookbook/adding-extra-pages.md', - '/advanced/cookbook/making-a-theme-extendable.md', - '/advanced/cookbook/passing-data-to-client-code.md', - '/advanced/cookbook/markdown-and-vue-sfc.md', - '/advanced/cookbook/resolving-routes.md', + '/dev/apps/introduction.md', + '/dev/apps/get-started.md', ], }, ], + } diff --git a/docs/README.md b/docs/README.md index c1327c8..a1f654f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,12 +3,12 @@ home: true title: Home heroImage: /images/bastyon-logo-256x256.png actions: - - text: Monetize With Bastyon - link: /guide/monetization/ + - text: Get Started + link: /dev/get-started.md type: primary - - text: Development - link: /dev/introduction.md + - text: Public API + link: /dev/api/introduction.md type: secondary features: diff --git a/docs/dev/api/introduction.md b/docs/dev/api/introduction.md new file mode 100644 index 0000000..f6ecaa6 --- /dev/null +++ b/docs/dev/api/introduction.md @@ -0,0 +1 @@ +# Introduction \ No newline at end of file diff --git a/docs/dev/apps/introduction.md b/docs/dev/apps/introduction.md new file mode 100644 index 0000000..f6ecaa6 --- /dev/null +++ b/docs/dev/apps/introduction.md @@ -0,0 +1 @@ +# Introduction \ No newline at end of file diff --git a/docs/dev/node/building.md b/docs/dev/node/building.md index 2079bbb..94c760f 100644 --- a/docs/dev/node/building.md +++ b/docs/dev/node/building.md @@ -1,9 +1,130 @@ # Building -## Cmake +## Вступление -## Makefile +Блокчейн нода Бастион это форк Биткоин, поэтому большинство решений идентичны процессу +сборки Биткоин узла. Можно разделить данный пакет на ключевые исполняемые файлы: +- `pocketcoind`: демон узла, позволяющий запустить узел в терминале или docker-контейнере. Управление узлом в этом варианте реализуется через конфигурационный файл `pocketcoin.conf` или HTTP (далее RPC) интерфейс. +- `pocketcoin-qt`: графический вариант, включающий в себя весь функционал демона. Основа интерфейса составляет кошелек со всеми присущими ему функциями. Также интерфейс дополняют такие инструменты, как консоль RPC, панель управления пирами, настройки узла и т.д. +- `pocketcoin-cli`: консольная утилита для управления узлом через RPC интерфейс, позволяет взаимодействовать с кошельком, получать статистику или настраивать уровни и категории логирования. -## JetBrains CLion +Каждый из этих исполняемых файлов может быть собран как по отдельности, так и целиком, упакованные в установочный пакет (NSIS пакет Windows, DEB архив для Debian/Ubuntu, DMG for MacOS). Способ сборки зависит от личных предпочтений разработчика, в данном руководстве представлены два основных способа (для целей разработки и релизные версии). -## Visual Studio \ No newline at end of file +## Getting Started + +Для успешной сборки могут потребоваться права администратора вашей ОС для установки необходимого ПО. Также предполагается, что пользователь владеет навыками работы с терминалом (установка пакетов и редактирование файлов). Желательны минимальные знания о структуре и назначении файлов при сборке C++ проектов. Также для избегания конфликтов рекомендуется использовать Docker для сборки и запуска узла. + +## Общие требования + +- [git](https://git-scm.com/) +- [cmake](https://cmake.org/) v3.20+ + +## Сборка в Docker Контейнере + +Docker предоставляет широкие возможности выбора платформы для работы и изоляции от основной операционной системы. Использование docker контейнеров не обязательное условие, но позволяет избежать проблем с зависимостями в процессе работы. В данном руководстве для описания процесса используется образ `ubuntu:22.04`. + +## Загрузка репозитория + +Загрузите проект из официального репозитория (для этого потребуется установить git). Основная ветвь является допустимой для работы в Main сети, но может включать в себя коммиты, которые принадлежат к стадии BETA. Рекомендуется переключить репозиторий на последний тег. + +```bash +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 + +```bash +apt-get update && apt-get install git make automake cmake curl g++-multilib libtool binutils-gold bsdmainutils pkg-config python3 patch bison +``` + +#### Целевая ОС: Linux arm64 + +```bash + +``` + +#### Целевая ОС: Windows x64 + +```bash + +``` + +#### Целевая ОС: MacOS x64 (intel) + +```bash + +``` + +#### Целевая ОС: MacOS arm64 (mX) + +```bash + +``` + +Каталог `depends/` содержит все необходимые пакеты для сборки, которые позволяют скомпиллироть код для разных платформ. + +Чтобы выполнить сборку зависимостей необходимо передать компилятору `make` аргумент `HOST` с указанием целевой платформы. + +```bash +cd depends/ +make HOST=host-platform-triplet +cd .. +``` + +Common `host-platform-triplets` for cross compilation are: +- `x86_64-pc-linux-gnu` for Linux (64-bit) +- `x86_64-w64-mingw32` for Windows (64-bit) +- `x86_64-apple-darwin16` for macOS (64-bit) +- `arm64-apple-darwin` for ARM macOS (64-bit) + + +### Конфигурирование и компиляция + +#### `cmake` + +:::tip +Данный вид сборки находится в стадии тестирования и не предназначен для использования в продакшне. +::: + +```bash +mkdir build && cd build +cmake -DCMAKE_PREFIX_PATH=$PWD/../depends/host-platform-triplets .. +cmake --build . --config Debug -j 4 +``` + +В результате будут скомпилированы следующие файлы: +``` +└─ build/ + └─ src/ + └─ qt/ + │ └─ pocketcoin-qt + ├─ pocketcoind + ├─ pocketcoin-cli +``` + +#### `make` + +Основной способ сборки испоняемых файлов и установочных пакетов. + +```bash +./autogen.sh +./configure --prefix=$PWD/depends/host-platform-triplets +make +make deploy +``` + +В результате будут скомпилированы следующие файлы: +``` +└─ src + └─ qt/ + │ └─ pocketcoin-qt + ├─ pocketcoind + └─ pocketcoin-cli +``` \ No newline at end of file