4.0 KiB
Применение 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=test5590DataItems. 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:
- GraphQL
App=test5590; /ar-io/offsets/<dataItemId>;- range
GET /raw/<rootTxId>; - проверка exact signed DataItem ID + signature;
- обычный
AddBlockimport.
Миграция БД
При старте schema v24 автоматически применит migration_v25.sql, которая удаляет два root-tx поля и ставит version 25.
Проверка после применения
- Создать новый channel/post и проверить signed tag
c_test5590=<canonical slug>. - В
mode=turboубедиться, чтоblocks.data_item_idсовпадает с Turbo responseidи pending становится false. - На втором сервере включить sync и убедиться, что DataItem находится GraphQL-запросом
App=test5590и импортируется без прямой server-to-server связи. - Переключить первый сервер в
mode=arweave, создать ещё несколько блоков и убедиться, что тот же importer второго сервера видит child DataItems без знания root bundle ID. - Проверить
mode=none: новые локальные блоки остаются pending, наружу ничего не отправляется.