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

4.0 KiB
Raw Blame History

Применение patch: Turbo + direct Arweave для App=test5590

Что меняется

  • arweave.blocks.publish.mode=turbo|arweave|none вместо boolean publisher switch.
  • turbo: каждый готовый user-signed ANS-104 DataItem отправляется в Turbo отдельно.
  • arweave: сохранён прямой L1 fallback — несколько user DataItems собираются в standard ANS-104 bundle.
  • none: наружу ничего не публикуется.
  • Importer всегда ищет только individual App=test5590 DataItems.
  • App=test5590-batch больше не используется.
  • Channel tag: c_test5590=<canonical_channel_slug> вместо c=....
  • Удалены blocks.arweave_root_tx_id и arweave_block_import_queue.root_tx_id.
  • Схема PostgreSQL: v25.

Минимальная настройка Turbo

arweave.blocks.publish.mode=turbo
arweave.blocks.publish.turbo.uploadUrl=https://turbo.ardrive.io/tx

Для действующего free tier маленьких DataItem этого может быть достаточно.

Если upload платный и расходы должны идти с server Turbo Credits:

arweave.blocks.publish.turbo.walletJwkPath=/home/player/SHiNE/secrets/turbo-wallet.json
# либо вместо JWK сразу публичный адрес:
# arweave.blocks.publish.turbo.paidByAddress=<server payer address>

JWK не отправляется Turbo: из него вычисляется публичный address для x-paid-by. Для чужого signed DataItem платные Turbo Credits требуют действующего Credit Share Approval от server payer к signer-адресу DataItem. Если его нет, Turbo вернёт HTTP 402, а блок останется pending для повторной попытки.

Direct Arweave fallback

arweave.blocks.publish.mode=arweave
arweave.blocks.publish.walletJwkPath=/home/player/SHiNE/secrets/arweave-wallet.json
arweave.blocks.publish.gateway=https://arweave.net

Root bundle больше не получает App=test5590-batch; child DataItems уже содержат App=test5590 и именно их индексирует importer.

Отключение публикации

arweave.blocks.publish.mode=none

Это не отключает arweave.blocks.sync.enabled: read/import и publish независимы.

Importer

arweave.blocks.sync.enabled=true
arweave.blocks.sync.gateway=https://turbo-gateway.com
arweave.blocks.sync.maxDataItemBytes=8388608

Importer:

  1. GraphQL App=test5590;
  2. /ar-io/offsets/<dataItemId>;
  3. range GET /raw/<rootTxId>;
  4. проверка exact signed DataItem ID + signature;
  5. обычный AddBlock import.

Миграция БД

При старте schema v24 автоматически применит migration_v25.sql, которая удаляет два root-tx поля и ставит version 25.

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

  1. Создать новый channel/post и проверить signed tag c_test5590=<canonical slug>.
  2. В mode=turbo убедиться, что blocks.data_item_id совпадает с Turbo response id и pending становится false.
  3. На втором сервере включить sync и убедиться, что DataItem находится GraphQL-запросом App=test5590 и импортируется без прямой server-to-server связи.
  4. Переключить первый сервер в mode=arweave, создать ещё несколько блоков и убедиться, что тот же importer второго сервера видит child DataItems без знания root bundle ID.
  5. Проверить mode=none: новые локальные блоки остаются pending, наружу ничего не отправляется.