back32hash 5591: готово к тестам

Вроде как всё готово к тестам.
This commit is contained in:
AidarKC
2026-10-02 01:32:37 +03:00
parent e101e5c5f4
commit de8700f8e0
51 changed files with 337 additions and 18091 deletions
@@ -1,5 +1,7 @@
# ANS-104 / Arweave transport для пользовательских блоков SHiNE
> **Текущий transport namespace:** `test5591`. Он намеренно хранится отдельно в трёх рабочих местах: сервер (`ShineProtocolTags.java`), UI (`js/services/protocol-tags.js`) и актуальный Viewer (`static-sites/arweave-viewer/index.html`). При смене тестовой эпохи эти три значения меняются синхронно. Имя канального индексного тега постоянно и не зависит от namespace: `c`.
## Цель
Каждый пользовательский блок SHiNE уже на клиенте является самостоятельным подписанным ANS-104 DataItem. Сервер проверяет и хранит **точно эти signed bytes** и может публиковать их одним из двух транспортов: через Turbo по одному DataItem либо через прямую Arweave L1-транзакцию в составе стандартного большого ANS-104 bundle.
@@ -11,7 +13,7 @@
Для тестового контура обязательно:
```text
App=test5590
App=test5591
```
Для фиксированных потоков:
@@ -25,10 +27,10 @@ t=prof # USER_PROFILE
Для блоков конкретного канала дополнительно:
```text
c_test5590=<canonical_channel_slug>
c=<canonical_channel_slug>
```
`TECH_CREATE_CHANNEL` несёт оба индекса: `t=tech` и `c_test5590=<slug>`. `STATUS_ACTION` не получает `t`-тег.
`TECH_CREATE_CHANNEL` несёт оба индекса: `t=tech` и `c=<slug>`. `STATUS_ACTION` не получает `t`-тег.
Теги входят в ANS-104 подпись пользователя. Сервер проверяет соответствие `t` фактическому `msg_type` и отклоняет лишний/неверный `t`. Старый тестовый тег `c` новым кодом не создаётся и не принимается как channel tag.
@@ -92,7 +94,7 @@ Bundle-Version=2.0.0
Content-Type=application/octet-stream
```
Специальный `App=test5590-batch` больше не используется. Важны вложенные user DataItems, у которых уже есть `App=test5590`.
Специальный `App=test5591-batch` больше не используется. Важны вложенные user DataItems, у которых уже есть `App=test5591`.
### `none`
@@ -112,7 +114,7 @@ Content-Type=application/octet-stream
Importer всегда выполняет один discovery-запрос:
```text
App=test5590
App=test5591
```
Он **не ищет root bundles** и не зависит от `publish.mode`.
@@ -130,7 +132,7 @@ App=test5590
Поэтому importer:
1. получает `data_item_id` через GraphQL `App=test5590`;
1. получает `data_item_id` через GraphQL `App=test5591`;
2. запрашивает `GET /ar-io/offsets/{data_item_id}`;
3. получает `rootTxId`, `rootOffset`, `size`;
4. делает range-read `GET /raw/{rootTxId}` ровно по этому диапазону;