Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
6d02e30
fix(snapshot): detect and recover validator vote snapshot inconsisten…
On1x May 21, 2026
9cd2143
docs(build): remove all references to low-memory node build flag and …
On1x May 21, 2026
74ff904
chore(config): remove deprecated mongo config files
On1x May 21, 2026
fd8c678
fix(network): replace ilog with dlog for peer connection logging
On1x May 21, 2026
40cd17f
fix(webserver): add CORS headers and handle preflight OPTIONS requests
On1x May 21, 2026
5ec792a
fix(network): prevent log spamming during peer disconnect
On1x May 22, 2026
35aef46
fix(network): prevent deadlock by closing socket before cancelling re…
On1x May 22, 2026
4fc71ec
docs(introduction): add community symbol and display conventions
On1x May 22, 2026
3e34469
chain: clear currently_syncing after auto-recovery completes
On1x May 23, 2026
f5d0d46
fix(snapshot): defer wake-up until block strictly after validator slot
On1x May 23, 2026
f313266
fix: show correct next scheduled validator in missed block log
On1x May 25, 2026
bf42081
fix(auto-recovery): reset recovery_in_progress flag and prevent SYNC/…
On1x May 25, 2026
a5d8e61
Add diagnostic logs to database::open() startup path
On1x May 25, 2026
1a2d888
fix(memory-order): upgrade currently_syncing atomics to release/acquire
On1x May 25, 2026
6c6d7a4
Add crash detection for undo_all() using marker file
On1x May 25, 2026
3af3eba
docs: remove CORS from nginx examples
On1x May 25, 2026
f4ae63e
fix(chain): make shared memory auto-grow (inc-shared-file-size) safer
On1x May 27, 2026
be747e0
update chainbase
On1x May 27, 2026
602e3f3
add json api spec for plugins and json rpc methods
On1x May 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,353 changes: 1,353 additions & 0 deletions .qoder/docs/jsonrpc-api-spec.json

Large diffs are not rendered by default.

9 changes: 0 additions & 9 deletions @l10n/ru/docs/development/building.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@ chmod +x build-linux.sh

```bash
./build-linux.sh # Release-сборка (по умолчанию)
./build-linux.sh -l # LOW_MEMORY_NODE (узлы-валидаторы)
./build-linux.sh -n # Testnet-сборка
./build-linux.sh -t Debug -j4 # Debug-сборка с 4 параллельными задачами
./build-linux.sh --skip-deps # Пропустить установку зависимостей
./build-linux.sh --install # Установить в систему после сборки

# Пользовательские пути к зависимостям
Expand All @@ -54,7 +52,6 @@ chmod +x build-mac.sh
**Параметры:**

```bash
./build-mac.sh -l # Low-memory узел
./build-mac.sh -n # Testnet
./build-mac.sh --skip-deps # Пропустить установки Homebrew
./build-mac.sh --boost-root /opt/boost_1_74_0
Expand All @@ -77,7 +74,6 @@ build-mingw.bat
| Переменная | По умолчанию | Описание |
|-----------|-------------|---------|
| `VIZ_BUILD_TYPE` | Release | Release или Debug |
| `VIZ_LOW_MEMORY` | OFF | Включить low-memory узел |
| `VIZ_BUILD_TESTNET` | OFF | Testnet-сборка |
| `VIZ_FULL_STATIC` | OFF | Полностью статический бинарник |
| `VIZ_CMAKE_EXTRA` | — | Дополнительные флаги CMake |
Expand All @@ -100,7 +96,6 @@ build-msvc.bat
|-----------|-------------|---------|
| `VIZ_VS_VERSION` | "Visual Studio 17 2022" | Генератор Visual Studio |
| `VIZ_BUILD_TYPE` | Release | Тип сборки |
| `VIZ_LOW_MEMORY` | OFF | Low-memory узел |
| `VIZ_BUILD_TESTNET` | OFF | Testnet-сборка |

**Требования:** Visual Studio 2019+ с нагрузкой "Desktop development with C++", CMake 3.16+.
Expand All @@ -125,7 +120,6 @@ build-msvc.bat
| Параметр | По умолчанию | Описание |
|---------|-------------|---------|
| `BUILD_TESTNET` | OFF | Сборка для testnet |
| `LOW_MEMORY_NODE` | OFF | Исключить неконсенсусные данные (уменьшает RAM) |
| `CHAINBASE_CHECK_LOCKING` | OFF | Включить проверку блокировок (только для разработки) |
| `BUILD_SHARED_LIBRARIES` | OFF | Собирать разделяемые библиотеки |
| `USE_PCH` | OFF | Включить предкомпилированные заголовки (ускоряет пересборку) |
Expand All @@ -140,9 +134,6 @@ build-msvc.bat
# Release-сборка
python3 programs/build_helpers/configure_build.py --release --src ../..

# Debug с low-memory
python3 programs/build_helpers/configure_build.py --debug --low-memory

# Кросс-компиляция для Windows с MinGW
python3 programs/build_helpers/configure_build.py --win --release

Expand Down
9 changes: 0 additions & 9 deletions @l10n/ru/docs/node/building.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,6 @@ chmod +x build-linux.sh
### Основные флаги сборки

```bash
# Низкопамятный узел (для валидаторов/сид-узлов — без плагинов индексирования истории)
./build-linux.sh -l

# Сборка для тестнета
./build-linux.sh -n

Expand All @@ -58,9 +55,6 @@ chmod +x build-linux.sh
# Параллельные задания
./build-linux.sh -j 8

# Пропустить установку зависимостей (уже установлены)
./build-linux.sh --skip-deps

# Пользовательские пути к Boost / OpenSSL
./build-linux.sh --boost-root /opt/boost_1_74_0 --openssl-root /opt/openssl
```
Expand Down Expand Up @@ -99,7 +93,6 @@ build-mingw.bat
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `VIZ_BUILD_TYPE` | `Release` | `Release` или `Debug` |
| `VIZ_LOW_MEMORY` | `OFF` | `ON` для низкопамятного узла |
| `VIZ_BUILD_TESTNET` | `OFF` | `ON` для сборки тестнета |
| `VIZ_FULL_STATIC` | `OFF` | `ON` для полностью статического бинарного файла |

Expand All @@ -124,7 +117,6 @@ build-msvc.bat
| Опция | По умолчанию | Описание |
|-------|--------------|----------|
| `BUILD_TESTNET` | `OFF` | Включить код для тестнета |
| `LOW_MEMORY_NODE` | `OFF` | Исключить плагины истории/индексирования |
| `CHAINBASE_CHECK_LOCKING` | `OFF` | Включить проверки блокировок (debug) |
| `BUILD_SHARED_LIBRARIES` | `OFF` | Собрать разделяемые библиотеки |
| `USE_PCH` | `OFF` | Включить предкомпилированные заголовки (ускоряет пересборку) |
Expand All @@ -134,7 +126,6 @@ build-msvc.bat
```bash
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DLOW_MEMORY_NODE=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local \
..
make -j$(nproc)
Expand Down
8 changes: 4 additions & 4 deletions @l10n/ru/docs/node/docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,10 @@ docker build \

### CMake-флаги для каждого образа

| Образ | `LOW_MEMORY_NODE` | `BUILD_TESTNET` |
|-------|:-----------------:|:---------------:|
| production | OFF | OFF |
| testnet | OFF | ON |
| Образ | `BUILD_TESTNET` |
|-------|:---------------:|
| production | OFF |
| testnet | ON |

---

Expand Down
3 changes: 1 addition & 2 deletions @l10n/ru/docs/node/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ shared-file-size = 4G

# Плагины (полный узел)
plugin = chain p2p webserver json_rpc database_api network_broadcast_api
plugin = social_network tags follow account_history
plugin = account_history
```

Для узла-валидатора см. [Узел-валидатор](./validator-node.md).
Expand Down Expand Up @@ -172,7 +172,6 @@ curl -s -X POST http://localhost:8090 \
| Полный узел | `config.ini` | Все плагины, публичные RPC-эндпоинты |
| Валидатор | `config_witness.ini` | Производство блоков, RPC только на localhost |
| Тестовая сеть | `config_testnet.ini` | Разработка и тестирование |
| Малая память | `config.ini` + флаг сборки `LOW_MEMORY_NODE` | Только консенсус, без индексов истории |

---

Expand Down
16 changes: 0 additions & 16 deletions @l10n/ru/docs/plugins/webserver.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,22 +137,6 @@ server {
}

location / {
# CORS — разрешить любой источник (публичный API)
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;

if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization' always;
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}

proxy_pass http://127.0.0.1:8090;
proxy_http_version 1.1;

Expand Down
34 changes: 24 additions & 10 deletions @l10n/ru/docs/storage/shared-memory.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,21 @@ skip-virtual-ops = true

База данных автоматически увеличивается, когда свободное место падает ниже `min-free-shared-file-size`. При каждом изменении размера:

1. Приостанавливаются все операции (включая производство блоков и API-запросы).
2. Уничтожается текущее отображение памяти.
3. Файл увеличивается на `inc-shared-file-size`.
4. Файл заново отображается, пересчитываются все указатели индексов.
1. Записывается маркер сбоя `resize_in_progress`.
2. Все грязные страницы сбрасываются на диск (`flush()`).
3. Приостанавливаются все операции (включая производство блоков и API-запросы).
4. Уничтожается текущее отображение памяти.
5. Файл увеличивается на `inc-shared-file-size`.
6. Файл заново отображается, пересчитываются все указатели индексов.
7. Проверяется, что ключевые объекты (например, `dynamic_global_property_object`) пережили перераспределение.
8. Маркер сбоя удаляется.

### Механизмы безопасности

- **Сброс перед изменением размера:** Грязные страницы записываются на диск до уничтожения отображения, что гарантирует согласованность файла на диске в случае сбоя во время увеличения.
- **Маркер сбоя:** Файл `resize_in_progress` записывается перед деструктивным перераспределением и удаляется после успешного завершения. Если процесс аварийно завершается во время изменения размера, маркер сохраняется и запускает автоматическое восстановление при следующем запуске.
- **Проверка после изменения размера:** После перераспределения узел проверяет, что `max_memory()` соответствует ожидаемому размеру и что критические объекты (например, `dynamic_global_property_object`) не повреждены. Повреждение обнаруживается рано, а не приводит к запутанным сбоям позже.
- **Безопасность при bad_alloc:** Если разделяемая память исчерпана во время применения блока, сессия отмены безопасно отбрасывается (вместо попытки обречённой отмены, которая привела бы к краху процесса через `std::terminate`). Отложенное изменение размера планируется на следующий блок.

Выделяйте `shared-file-size` с запасом, чтобы минимизировать частоту изменений размера. Каждое изменение вызывает скачок задержки.

Expand All @@ -121,22 +132,25 @@ skip-virtual-ops = true
```
1. Открыть shared_memory.bin (увеличить, если shared-file-size больше)
2. Захватить эксклюзивную блокировку файла
3. Инициализировать индексы
4. Если отсутствует genesis → init_genesis()
5. Открыть block_log или dlt_block_log
6. undo_all() → откатиться к последнему необратимому блоку
7. Проверить совпадение head блока с block log
3. Проверить маркер сбоя resize_in_progress → запустить восстановление при обнаружении
4. Инициализировать индексы
5. Если отсутствует genesis → init_genesis()
6. Открыть block_log или dlt_block_log
7. undo_all() → откатиться к последнему необратимому блоку
8. Проверить совпадение head блока с block log
```

---

## Восстановление

| Симптом | Действие |
|---------|---------|
|---------|--------|
| `CRITICAL: validator X account object MISSING` | Повреждение — использовать `--replay-from-snapshot --snapshot-auto-latest` |
| `Could not modify object, uniqueness constraint violated` | Повреждение — использовать `--replay-from-snapshot --snapshot-auto-latest` |
| `Unable to acquire READ lock` | Конкуренция за блокировку — увеличить `read-wait-micro` / включить `single-write-thread` |
| `Shared memory corrupted: previous resize() crashed` | Прерванное изменение размера — использовать `--replay-from-snapshot --snapshot-auto-latest` |
| `dynamic_global_property_object missing after resize` | Повреждение после изменения размера — использовать `--replay-from-snapshot --snapshot-auto-latest` |
| Узел зацикливается при запуске | Повреждённый файл — `--replay-from-snapshot --snapshot-auto-latest` |

Варианты восстановления:
Expand Down
9 changes: 0 additions & 9 deletions @l10n/zh-CN/docs/development/building.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@ chmod +x build-linux.sh

```bash
./build-linux.sh # Release 构建(默认)
./build-linux.sh -l # LOW_MEMORY_NODE(验证者节点)
./build-linux.sh -n # Testnet 构建
./build-linux.sh -t Debug -j4 # Debug 构建,4 个并行任务
./build-linux.sh --skip-deps # 跳过依赖安装
./build-linux.sh --install # 构建后安装到系统

# 自定义依赖路径
Expand All @@ -54,7 +52,6 @@ chmod +x build-mac.sh
**选项:**

```bash
./build-mac.sh -l # 低内存节点
./build-mac.sh -n # Testnet
./build-mac.sh --skip-deps # 跳过 Homebrew 安装
./build-mac.sh --boost-root /opt/boost_1_74_0
Expand All @@ -77,7 +74,6 @@ build-mingw.bat
| 变量 | 默认值 | 描述 |
|------|--------|------|
| `VIZ_BUILD_TYPE` | Release | Release 或 Debug |
| `VIZ_LOW_MEMORY` | OFF | 启用低内存节点 |
| `VIZ_BUILD_TESTNET` | OFF | Testnet 构建 |
| `VIZ_FULL_STATIC` | OFF | 完全静态二进制文件 |
| `VIZ_CMAKE_EXTRA` | — | 附加 CMake 标志 |
Expand All @@ -100,7 +96,6 @@ build-msvc.bat
|------|--------|------|
| `VIZ_VS_VERSION` | "Visual Studio 17 2022" | Visual Studio 生成器 |
| `VIZ_BUILD_TYPE` | Release | 构建类型 |
| `VIZ_LOW_MEMORY` | OFF | 低内存节点 |
| `VIZ_BUILD_TESTNET` | OFF | Testnet 构建 |

**要求:** Visual Studio 2019+(带"Desktop development with C++"工作负载)、CMake 3.16+。
Expand All @@ -125,7 +120,6 @@ build-msvc.bat
| 选项 | 默认值 | 描述 |
|------|--------|------|
| `BUILD_TESTNET` | OFF | 为 testnet 构建 |
| `LOW_MEMORY_NODE` | OFF | 排除非共识数据(减少 RAM) |
| `CHAINBASE_CHECK_LOCKING` | OFF | 启用锁检查(仅用于开发) |
| `BUILD_SHARED_LIBRARIES` | OFF | 构建共享库 |
| `USE_PCH` | OFF | 启用预编译头文件(加速重新构建) |
Expand All @@ -140,9 +134,6 @@ build-msvc.bat
# Release 构建
python3 programs/build_helpers/configure_build.py --release --src ../..

# 带低内存的 Debug
python3 programs/build_helpers/configure_build.py --debug --low-memory

# 使用 MinGW 交叉编译 Windows 版本
python3 programs/build_helpers/configure_build.py --win --release

Expand Down
9 changes: 0 additions & 9 deletions @l10n/zh-CN/docs/node/building.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,6 @@ chmod +x build-linux.sh
### 常用构建标志

```bash
# 低内存节点(验证者/种子节点 — 排除历史索引)
./build-linux.sh -l

# 测试网构建
./build-linux.sh -n

Expand All @@ -58,9 +55,6 @@ chmod +x build-linux.sh
# 并行任务数
./build-linux.sh -j 8

# 跳过依赖安装(已安装)
./build-linux.sh --skip-deps

# 自定义 Boost / OpenSSL 路径
./build-linux.sh --boost-root /opt/boost_1_74_0 --openssl-root /opt/openssl
```
Expand Down Expand Up @@ -99,7 +93,6 @@ build-mingw.bat
| 变量 | 默认值 | 描述 |
|------|-------|------|
| `VIZ_BUILD_TYPE` | `Release` | `Release` 或 `Debug` |
| `VIZ_LOW_MEMORY` | `OFF` | `ON` 构建低内存节点 |
| `VIZ_BUILD_TESTNET` | `OFF` | `ON` 用于测试网构建 |
| `VIZ_FULL_STATIC` | `OFF` | `ON` 构建完全静态二进制文件 |

Expand All @@ -124,7 +117,6 @@ build-msvc.bat
| 选项 | 默认值 | 描述 |
|------|-------|------|
| `BUILD_TESTNET` | `OFF` | 启用测试网专用代码 |
| `LOW_MEMORY_NODE` | `OFF` | 排除历史/索引插件 |
| `CHAINBASE_CHECK_LOCKING` | `OFF` | 启用锁断言检查(debug) |
| `BUILD_SHARED_LIBRARIES` | `OFF` | 构建共享库 |
| `USE_PCH` | `OFF` | 启用预编译头文件(加快重新构建) |
Expand All @@ -134,7 +126,6 @@ build-msvc.bat
```bash
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DLOW_MEMORY_NODE=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local \
..
make -j$(nproc)
Expand Down
8 changes: 4 additions & 4 deletions @l10n/zh-CN/docs/node/docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,10 @@ docker build \

### 各镜像的 CMake 标志

| 镜像 | `LOW_MEMORY_NODE` | `BUILD_TESTNET` |
|------|:-----------------:|:---------------:|
| production | OFF | OFF |
| testnet | OFF | ON |
| 镜像 | `BUILD_TESTNET` |
|------|:---------------:|
| production | OFF |
| testnet | ON |

---

Expand Down
1 change: 0 additions & 1 deletion @l10n/zh-CN/docs/node/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,6 @@ curl -s -X POST http://localhost:8090 \
| 全节点 | `config.ini` | 所有插件,公共 RPC 端点 |
| 验证者 | `config_witness.ini` | 区块生产,RPC 仅限本地 |
| 测试网 | `config_testnet.ini` | 开发和测试 |
| 低内存 | `config.ini` + `LOW_MEMORY_NODE` 构建标志 | 仅共识,无历史索引 |

---

Expand Down
16 changes: 0 additions & 16 deletions @l10n/zh-CN/docs/plugins/webserver.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,22 +138,6 @@ server {
}

location / {
# CORS — 允许任意来源(公开 API)
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;

if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization' always;
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}

proxy_pass http://127.0.0.1:8090;
proxy_http_version 1.1;

Expand Down
Loading
Loading