Перейти к основному содержимому

Примеры KV FastData

Примеры

Все shell-примеры ниже работают на публичных KV FastData-хостах как есть. Если в shell задан FASTNEAR_API_KEY, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.

Проверить один точный ключ и сразу посмотреть его историю

Если контракт, predecessor_id и точный ключ уже известны, начинайте с узкого запроса. latest отвечает на вопрос о текущем состоянии, а history показывает, менялась ли именно эта строка со временем.

CURRENT_ACCOUNT_ID=social.near
PREDECESSOR_ID=james.near
KEY='graph/follow/sleet.near'
AUTH_HEADER=()
if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi

ENCODED_KEY="$(jq -rn --arg key "$KEY" '$key | @uri')"

LATEST="$(curl -s "https://kv.main.fastnear.com/v0/latest/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
  "${AUTH_HEADER[@]}")"

echo "$LATEST" | jq '{
  latest: (
    .entries[0]
    | {
        current_account_id,
        predecessor_id,
        block_height,
        key,
        value
      }
  )
}'

curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
  "${AUTH_HEADER[@]}" \
  | jq '{writes: [.entries[] | {block_height, value}]}'

Для точного ключа вроде этого follow-edge latest даёт текущее индексированное значение одной строкой, а history показывает, была ли запись однократной или переключалась со временем. Начинайте отсюда, когда путь в storage уже известен; расширяйтесь до выборок по predecessor_id только тогда, когда нужно не доказательство, а поиск.

Посмотреть индексированные записи одного predecessor_id и сузиться до изменившегося ключа

all-by-predecessor возвращает последние индексированные записи одного аккаунта по каждому контракту, которого он касался. Выберите интересный ключ и прогоните его через history, чтобы увидеть, как эта строка менялась со временем.

PREDECESSOR_ID=jemartel.near
AUTH_HEADER=()
if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi

FIRST="$(curl -s "https://kv.main.fastnear.com/v0/all/$PREDECESSOR_ID" \
  "${AUTH_HEADER[@]}" \
  -H 'content-type: application/json' \
  --data '{"include_metadata":true,"limit":10}')"

echo "$FIRST" | jq '{
  page_token,
  entries: [.entries[] | {current_account_id, predecessor_id, block_height, key, value, tx_hash}]
}'

Для jemartel.near в выдаче смешиваются подтверждение идентичности account_id на contextual.near и серия добавлений graph/follow/* в тот же контракт. tx_hash в каждой строке — это прямой переход в /tx/examples, если нужна полная история транзакции за любой записью.

Поднимите самую свежую строку и прогоните её через history:

PREDECESSOR_ID=jemartel.near
AUTH_HEADER=()
if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
FIRST="$(curl -s "https://kv.main.fastnear.com/v0/all/$PREDECESSOR_ID" \
  "${AUTH_HEADER[@]}" \
  -H 'content-type: application/json' \
  --data '{"include_metadata":true,"limit":10}')"

CURRENT_ACCOUNT_ID="$(echo "$FIRST" | jq -r '.entries[0].current_account_id')"
EXACT_KEY="$(echo "$FIRST" | jq -r '.entries[0].key')"
ENCODED_KEY="$(jq -rn --arg key "$EXACT_KEY" '$key | @uri')"

curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
  "${AUTH_HEADER[@]}" \
  | jq '{entries: [.entries[] | {block_height, value}]}'

Для строки account_id history возвращает одну запись на блоке 185965311 со значением "jemartel.near:mainnet" — подтверждение идентичности держится, стабильно с того блока. KV сохраняет каждую запись одинаково: у тихого ключа — одна строка, у активного — много, форма та же, без агрегации.

Частые ошибки

  • Начинать с широких выборок по аккаунту или предшественнику, когда точный ключ уже известен.
  • Использовать KV FastData, когда пользователю на самом деле нужны балансы или активы.
  • Путать индексированную историю с точным текущим состоянием в цепочке.
  • Переиспользовать токен пагинации или менять фильтры прямо во время просмотра.

Связанные страницы