Files
SHiNE-server/tools/test-publisher/AGENTS.md
T

4.3 KiB

AGENTS.md — SHiNE test channels

Эта папка — тестовый генератор реальной пользовательской активности SHiNE. Это не часть консенсуса и не отдельный протокол.

Назначение

Один тестовый пользователь публикует заранее подготовленные POST-блоки сразу в несколько своих каналов. Все POST должны идти через обычный SHiNE AddBlock, поэтому сервер проверяет их как обычные пользовательские блоки и затем использует штатную Arweave-публикацию.

Почему publisher один

У всех каналов одного пользователя одна глобальная blockchain-цепочка (blockNumber + prevHash). Нельзя запускать независимый publisher на каждый канал: они могут одновременно построить следующий глобальный блок. publisher_multi.py сериализует публикации всех каналов, но хранит отдельные prevLineNumber/prevLineHash и позиции очередей.

Каналы в примере

  • jokes — короткие анекдоты; часть постов содержит 1–2 изображения.
  • mindfulness — короткие практики осознанности.
  • positive — позитивные и мотивирующие напоминания.
  • friends — советы об общении и дружбе, в духе классических принципов человеческого общения, без выдачи текста за дословные цитаты.
  • wisdom — короткие духовные/созерцательные мысли. Не придумывать цитаты и не приписывать человеку слова без источника.

Изображения

prepare/prepare_all_channels.py проходит все channels[].queue_file. Для каждого локального файла:

  1. вычисляет SHA-256;
  2. смотрит общий upload-state.json;
  3. если ID уже известен — проверяет https://gateway/<id>;
  4. если файл существует — повторно НЕ загружает;
  5. если отсутствует/ID неизвестен — загружает через Arweave JWK;
  6. пишет .prepared.json, добавляя постоянные Arweave URL в текст POST и сохраняя images[] как служебные метаданные.

JWK используется только подготовщиком. Не помещать приватный JWK или blockchain key в git/архив.

State

multi-state.json содержит один global head и отдельное состояние каждого канала. Pending DataItem записывается до AddBlock; при неопределённом состоянии глобальной цепочки publisher обязан остановиться, а не строить форк.

Не менять

  • SHiNE Frame v1 и его SHA-256.
  • prevHash глобальной цепочки.
  • prevLineNumber/prevLineHash канальной линии.
  • ANS-104 signing/deepHash без сверки с серверной реализацией.
  • App=test5590 и c=<canonical channel> без согласованного изменения импортера/Viewer.

Viewer

Viewer распознаёт Arweave URL в тексте POST и показывает изображения inline. Экран «Проверка данных» независимо считает SHA-256 Frame, проверяет доступные prevHash и prevLineHash, показывает отсутствие соседнего блока как «нет данных», а доказанное несовпадение — как ошибку. Подпись ANS-104 нельзя помечать локально проверенной, если gateway не предоставил сырую подпись DataItem.