Files
SHiNE-server/docs/Blockchain/CODEX_APPLY_ANS104_TEST5590_PATCH.md
T

4.4 KiB
Raw Blame History

Инструкция Codex: применить ANS-104 test5590 patch

Цель

Перевести пользовательский blockchain SHiNE на Frame v1 внутри готовых ANS-104 DataItems и убрать старый SHINE-ARCHIVE/файловое хранение цепочек.

Жёсткое ограничение

Не изменять ничего в ESP32/. В этом patch нет ни одного файла ESP32/**.

Remote/homeserver signer, завязанный на устройство, намеренно не мигрирован. Не пытаться «заодно исправить» его в рамках этого patch.

Применение

  1. Распаковать patch поверх корня репозитория, сохраняя относительные пути.
  2. Удалить все пути из корневого DELETE_FILES.txt.
  3. Проверить, что git diff -- ESP32 пуст.
  4. Использовать чистую/dev test DB. migration_v24.sql намеренно откажется мигрировать непустую blockchain DB, потому что backward compatibility со старым block format не требуется.

Arweave config

Минимально для публикации:

arweave.blocks.publish.enabled=true
arweave.blocks.publish.intervalMinutes=15
arweave.blocks.publish.gateway=https://arweave.net
arweave.blocks.publish.walletJwkPath=/ABSOLUTE/SECRET/PATH/arweave-wallet.json

JWK не коммитить.

Для discovery/import:

arweave.blocks.sync.enabled=true
arweave.blocks.sync.intervalMinutes=15
arweave.blocks.sync.gateway=https://turbo-gateway.com
arweave.blocks.sync.startBlockHeight=0

На тестах желательно установить startBlockHeight на высоту начала test5590, чтобы не сканировать лишнюю историю.

Test namespace

Child DataItem:

App=test5590

Channel child:

App=test5590
c=<canonical_channel_slug>

Root bundle:

Bundle-Format=binary
Bundle-Version=2.0.0
App=test5590-batch

Перед production-start test namespace должен быть заменён отдельным осознанным изменением.

Проверки после применения

Из корня репозитория:

node --check shine-UI/js/services/ans104-data-item.js
node --check shine-UI/js/services/auth-service.js
node --check shine-UI/js/app.js
node --check shine-UI/js/pages/settings-view.js

Java/Gradle:

./gradlew testClasses
./gradlew test

Затем локальный smoke test по штатной инструкции проекта, например ./gradlew startLocal.

В среде, где готовился patch, Gradle wrapper не смог скачать Gradle 8.14 из-за отсутствия внешнего сетевого доступа к services.gradle.org. Поэтому полный Gradle compile/test обязательно прогнать после применения в обычной dev-среде.

Smoke scenario

  1. Создать/использовать тестового пользователя с локальным blockchain Ed25519 key.
  2. Добавить обычный block и убедиться, что blocks.block_bytes начинается с ANS-104 DataItem, а data_item_id заполнен.
  3. Создать channel и post; проверить c=<canonical slug>.
  4. Включить publisher, дождаться цикла или вызвать сервис тестом; проверить root Arweave tx.
  5. На второй чистой test DB включить importer и убедиться, что App=test5590 blocks восстанавливаются в правильном порядке.
  6. Убедиться, что imported blocks имеют arweave_publish_pending=false.
  7. Проверить, что повторный discovery не создаёт дублей.

Не делать в этом patch

  • не добавлять backward compatibility Frame v0;
  • не возвращать .bch storage;
  • не возвращать SHINE-ARCHIVE;
  • не менять ESP32;
  • не мигрировать remote/homeserver signing без отдельного решения пользователя;
  • не заменять prevHash на Arweave DataItem ID.