Files
SHiNE-server/docs/API/04_Add_Block_to_Blockchain_API.md
T

2.1 KiB

AddBlock API

Назначение

Добавляет один готовый подписанный пользовательский SHiNE Frame v1 / ANS-104 DataItem в blockchain.

Request

{
  "op": "AddBlock",
  "requestId": "...",
  "payload": {
    "blockchainName": "alice-...",
    "blockNumber": 42,
    "prevBlockHash": "64 hex chars",
    "blockBytesB64": "..."
  }
}
  • blockchainName — целевая пользовательская chain;
  • blockNumber — должен совпадать с номером внутри Frame v1 и быть serverLast + 1;
  • prevBlockHash — 32-byte SHiNE hash предыдущего Frame в hex; должен совпадать с prevHash32 внутри Frame и серверной вершиной;
  • blockBytesB64полный serialized ANS-104 DataItem в Base64.

Старый формат preimage + sigMarker + signature не поддерживается.

Требования к DataItem

  • generic Ed25519 signature type 2;
  • Ed25519 signature 64 bytes;
  • owner 32 bytes и равен текущему blockchain public key;
  • обязательный тестовый tag App=test5590;
  • для channel block — c=<canonical_channel_slug>;
  • data содержит SHiNE Frame v1 (frameCode=1).

Основные ошибки

  • bad_app_tag — отсутствует/неверен App=test5590;
  • bad_channel_tagc отсутствует, лишний или не совпадает с canonical slug;
  • bad_signature / signature_verify_failed — DataItem не подписан текущим blockchain key;
  • bad_block_number — нарушена последовательность;
  • bad_prev_hash — нарушена SHiNE hash chain;
  • bad_block_bytes — DataItem/Frame не парсится.

Storage/publish

После успешного локального AddBlock полный DataItem хранится в PostgreSQL и ставится в Arweave publish queue. Импорт из Arweave использует ту же проверку, но не ставит блок на повторную публикацию.