# Полный архив документации FastNear Builder Docs AI-читабельные Markdown-копии авторских гайдов и канонических маршрутов `/rpcs/**` и `/apis/**`. --- ## Справочник RPC / API - HTML-маршрут: https://docs.fastnear.com/ru - Markdown-маршрут: https://docs.fastnear.com/ru/index.md **Источник:** [https://docs.fastnear.com/ru](https://docs.fastnear.com/ru) Обзор документации FastNear Выберите API или справочник FastNear. Используйте RPC для канонических чтений состояния по JSON-RPC, вызовов контрактов и отправки транзакций. Используйте индексированные API для балансов, активов, истории активности и свежих данных семейства блоков. [Начать с FastNear API](https://docs.fastnear.com/ru/api) [Начать с RPC](https://docs.fastnear.com/ru/rpc) [Получить API-ключ](https://docs.fastnear.com/ru/auth) Аутентификация API-ключи FastNear работают и для RPC, и для API. Заголовок Authorization: Bearer ... URL-параметр ?apiKey=... Получите API-ключ на [dashboard.fastnear.com](https://dashboard.fastnear.com) и используйте его во всех запросах к FastNear из одного и того же рабочего окружения. Быстрая маршрутизация Большинство команд начинают здесь [FastNear API](https://docs.fastnear.com/ru/api) Индексированные эндпоинты для аккаунтов, активов, стейкинга и публичных ключей для чтения в прикладных сценариях вокруг аккаунта. На уровне протокола [Справочник RPC](https://docs.fastnear.com/ru/rpc) Канонические методы JSON-RPC для блоков, вызовов контрактов, валидаторов и отправки транзакций. История исполнения [Транзакции API](https://docs.fastnear.com/ru/tx) Активность аккаунта, квитанции, поиск транзакций и история по блокам из индексированных данных исполнения. Чтения с низкой задержкой [NEAR Data API](https://docs.fastnear.com/ru/neardata) Свежие оптимистичные и финализированные блоки, заголовки и вспомогательные перенаправления для опроса и лёгкого мониторинга. Основные API и справочники Это основные точки входа FastNear. Начните с API или раздела справочника, подходящего под нужные данные, затем переходите к подробному справочнику по конкретному эндпоинту. Индексированные представления аккаунта [FastNear API](https://docs.fastnear.com/ru/api) Используйте индексированные REST-эндпоинты для балансов, NFT, позиций стейкинга и поиска по публичному ключу без сырых обёрток запросов и ответов JSON-RPC. Полезные ссылки [Полное состояние аккаунта](https://docs.fastnear.com/ru/api/v1/account-full) [Балансы FT-токенов](https://docs.fastnear.com/ru/api/v1/account-ft) [Активы NFT](https://docs.fastnear.com/ru/api/v1/account-nft) [Поиск по публичному ключу](https://docs.fastnear.com/ru/api/v1/public-key) Канонический JSON-RPC [Справочник RPC](https://docs.fastnear.com/ru/rpc) Используйте методы на уровне протокола для прямых чтений состояния, отправки транзакций, вызовов контрактов и инспекции цепочки. Полезные ссылки [Состояние аккаунта](https://docs.fastnear.com/ru/rpc/account/view-account) [Поиск блоков](https://docs.fastnear.com/ru/rpc/block/block-by-id) [view-вызовы контрактов](https://docs.fastnear.com/ru/rpc/contract/call-function) [Данные валидаторов](https://docs.fastnear.com/ru/rpc/validators/validators-current) История исполнения [Транзакции API](https://docs.fastnear.com/ru/tx) Используйте индексированные эндпоинты для активности аккаунта, квитанций, поиска транзакций и истории исполнения по блокам. Полезные ссылки [Активность аккаунта](https://docs.fastnear.com/ru/tx/account) [Поиск транзакций](https://docs.fastnear.com/ru/tx/transactions) [Трассировка квитанций](https://docs.fastnear.com/ru/tx/receipt) [История транзакций по блоку](https://docs.fastnear.com/ru/tx/blocks) Свежие чтения семейства блоков [NEAR Data API](https://docs.fastnear.com/ru/neardata) Используйте NEAR Data для свежих оптимистичных и финализированных блоков, заголовков блоков и маршрутов-помощников по последнему блоку, когда нужны чтения почти в реальном времени или лёгкий мониторинг. Полезные ссылки [Оптимистичные чтения блоков](https://docs.fastnear.com/ru/neardata/block-optimistic) [Последний финализированный блок](https://docs.fastnear.com/ru/neardata/last-block-final) [Опрос заголовков блоков](https://docs.fastnear.com/ru/neardata/block-headers) Операции и доступ Всё, о чём команды обычно спрашивают перед переходом на продовые лимиты. Держите под рукой на переходе от исследования к продовым нагрузкам. Повышенные лимиты [Аутентификация и доступ](https://docs.fastnear.com/ru/auth) Один API-ключ FastNear работает и для RPC, и для REST API. Ключи и оплата [FastNear Dashboard](https://dashboard.fastnear.com) Войдите, создайте ключи и переходите на сценарии с более высокими лимитами, когда понадобится. Живые операции [Status](https://status.fastnear.com) Проверяйте инциденты и деградацию сервиса до отладки поведения приложения. Подъём инфраструктуры [Снапшоты](https://docs.fastnear.com/ru/snapshots) Поднимайте инфраструктуру RPC или архива быстрее, без повторного воспроизведения цепочки с нуля. Агенты и автоматизация Строите с ИИ-агентами или фоновыми воркерами? Используйте документацию для агентов, чтобы настроить режим работы с учётными данными, логику маршрутизации и Markdown-экспорты, пригодные для промптов. [Открыть хаб агентов](https://docs.fastnear.com/ru/agents) [Как выбрать поверхность](https://docs.fastnear.com/ru/agents/choosing-surfaces) --- ## Агенты на FastNear - HTML-маршрут: https://docs.fastnear.com/ru/agents - Markdown-маршрут: https://docs.fastnear.com/ru/agents.md **Источник:** [https://docs.fastnear.com/ru/agents](https://docs.fastnear.com/ru/agents) # Агенты на FastNear {/* FASTNEAR_AI_DISCOVERY: Это операционная точка входа для ИИ-агентов, краулеров и сред автоматизации. Страница объясняет, какую информацию собрать до первого запроса, с какого API FastNear начинать, как устроена аутентификация между API и что должен содержать полезный ответ агента. */} Эта страница — операционная точка входа для ИИ-агентов, краулеров и сред автоматизации, использующих FastNear. Цель простая: распознать реальную задачу пользователя, выбрать один API FastNear, получить минимальный полезный результат и расширяться на другой API только тогда, когда явно не хватает части ответа. ## Если нужен только следующий шаг - Нужно выбрать, с какого API FastNear начать? Используйте [Как выбрать подходящую поверхность](https://docs.fastnear.com/ru/agents/choosing-surfaces). - Нужны правила работы с учётными данными? Используйте [Аутентификацию для агентов](https://docs.fastnear.com/ru/agents/auth). - Нужны примеры многошаговых сценариев? Используйте [Плейбуки для агентов](https://docs.fastnear.com/ru/agents/playbooks). - Нужна точная документация по эндпоинту сейчас? Сразу откройте [Справочник RPC](https://docs.fastnear.com/ru/rpc), [FastNear API](https://docs.fastnear.com/ru/api), [Транзакции API](https://docs.fastnear.com/ru/tx), [API переводов](https://docs.fastnear.com/ru/transfers), [NEAR Data API](https://docs.fastnear.com/ru/neardata) или [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv). ## FastNear для агентов за минуту - Используйте индексированные API, когда пользователю нужен ответ в продуктовой форме — балансы, активы, история аккаунта или история переводов. - Используйте [Справочник RPC](https://docs.fastnear.com/ru/rpc), когда пользователю нужны канонические поля на уровне протокола, вызовы контрактов или отправка транзакций. - Если вы используете размещённый JS-рантайм на [js.fastnear.com](https://js.fastnear.com), начинайте с низкоуровневых методов вроде `near.view`, `near.queryAccount` и `near.tx.*`, а к `near.recipes.*` обращайтесь только тогда, когда task helper действительно является самым коротким путём к ответу. - Используйте [NEAR Data API](https://docs.fastnear.com/ru/neardata), когда вопрос касается свежих оптимистичных или финализированных блоков и явного опроса. - Используйте [Снапшоты](https://docs.fastnear.com/ru/snapshots) для операторских сценариев, а не для чтения прикладных данных. - Один API-ключ FastNear работает и для RPC, и для API-эндпоинтов. - Останавливайтесь после первого достаточного ответа. Не собирайте данные из нескольких API, если текущего результата достаточно. ## Что определить до первого запроса Попробуйте выявить эти входные данные до вызова: - **Сеть**: mainnet или testnet. - **Первичный идентификатор**: идентификатор аккаунта, публичный ключ, хеш транзакции, ID квитанции, высота / хеш блока, идентификатор контракта плюс ключ хранилища или задача по подъёму узла. - **Форма ответа**: сводка, история, канонический вывод протокола или инструкции оператора. - **Требование к свежести**: историческая, текущая, оптимистичная / последняя или финализированная / последняя. - **Требование к точности**: достаточно индексированной сводки или нужна точная каноническая семантика узла. Если чего-то не хватает — делайте небольшое предположение, когда вероятный стартовый API от этого не меняется. Задавайте уточняющий вопрос только тогда, когда неверный выбор API существенно изменит результат. ## API FastNear с одного взгляда | API | Начните здесь, когда... | Типичные входы | Расширяйтесь, только если... | | --- | --- | --- | --- | | [FastNear API](https://docs.fastnear.com/ru/api) | Пользователю нужны балансы, NFT, стейкинг, разрешение публичного ключа или сводка по аккаунту | `account_id`, публичный ключ | Нужны точные канонические поля узла | | [Справочник RPC](https://docs.fastnear.com/ru/rpc) | Пользователю нужен канонический вывод протокола, вызовы контрактов, данные валидаторов или отправка транзакций | `account_id`, высота / хеш блока, параметры конкретного метода | Также нужна сводка более высокого уровня или индексированная история | | [Транзакции API](https://docs.fastnear.com/ru/tx) | Пользователю нужна история транзакций, квитанций, аккаунта или исполнения по блокам | хеш транзакции, ID квитанции, `account_id`, идентификаторы блока | Нужна точная семантика продолжения или финальности на уровне RPC | | [API переводов](https://docs.fastnear.com/ru/transfers) | Пользователю нужна история только переводов | `account_id`, фильтры переводов | Вопрос расширяется до общего контекста исполнения | | [NEAR Data API](https://docs.fastnear.com/ru/neardata) | Пользователю нужны свежие оптимистичные или финализированные блоки, заголовки или помощники по последнему блоку | высота / хеш блока, требование к свежести | Нужно точное каноническое продолжение по блоку или состоянию | | [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv) | Пользователю нужна индексированная история ключа контракта или последнее индексированное состояние «ключ–значение» | идентификатор контракта, ключ хранилища | Нужно точное текущее состояние в цепочке | | [Снапшоты](https://docs.fastnear.com/ru/snapshots) | Пользователь поднимает инфраструктуру | сеть, тип узла, цель оператора | Пользователь переключается на прикладные вопросы о цепочке | ## Рабочий цикл по умолчанию Используйте этот цикл, если задача явно не требует чего-то более специального: 1. Переформулируйте слова пользователя в реальную задачу. Примеры: сводка по аккаунту, инспекция канонического состояния, расследование транзакции, история только переводов, мониторинг свежих блоков или подъём узла. 2. Выберите один API FastNear. Не собирайте данные из нескольких API, пока первый результат не окажется недостаточным. 3. Подтяните минимальный релевантный контекст документации. Используйте страницу-индекс API, страницу эндпоинта или Markdown-зеркало вместо широкого неочевидного набора документов. 4. Сделайте первый запрос, соответствующий идентификатору пользователя и ожидаемой форме ответа. 5. Остановитесь, если результата уже достаточно для ответа пользователю. 6. Расширяйтесь, только когда можете точно назвать недостающую часть. Примеры: каноническое подтверждение, более широкая история исполнения, более свежие данные семейства блоков или точные поля протокола. ## Хорошие значения по умолчанию Когда формулировка пользователя коротка, но намерение типично, такие значения по умолчанию обычно корректны: - «Проверь этот аккаунт» обычно стартует с [FastNear API](https://docs.fastnear.com/ru/api). - «Проверь этот публичный ключ» обычно стартует с [FastNear API](https://docs.fastnear.com/ru/api) для разрешения ключа в аккаунт. - «Проверь эту транзакцию» обычно стартует с [Транзакции API](https://docs.fastnear.com/ru/tx). - «Проверь эту квитанцию» обычно стартует с [Транзакции API](https://docs.fastnear.com/ru/tx). - «Проверь этот блок» обычно стартует с [NEAR Data API](https://docs.fastnear.com/ru/neardata) для мониторинга свежих блоков или со [Справочника RPC](https://docs.fastnear.com/ru/rpc) для точных канонических данных блока. - «Проверь этот ключ / историю контракта» обычно стартует с [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv). - «Помоги поднять узел» стартует со [Снапшотов](https://docs.fastnear.com/ru/snapshots). Полные правила маршрутизации и компромиссы — в [Как выбрать подходящую поверхность](https://docs.fastnear.com/ru/agents/choosing-surfaces). ## Расширяйтесь осторожно Хорошие шаблоны эскалации: - Начните с [FastNear API](https://docs.fastnear.com/ru/api), затем переходите в [Справочник RPC](https://docs.fastnear.com/ru/rpc), если пользователь просит каноническое подтверждение. - Начните с [Транзакции API](https://docs.fastnear.com/ru/tx), затем переходите в [Справочник RPC](https://docs.fastnear.com/ru/rpc), если пользователю нужно протокольное продолжение по транзакции или квитанции. - Начните с [API переводов](https://docs.fastnear.com/ru/transfers), затем расширяйтесь в [Транзакции API](https://docs.fastnear.com/ru/tx), если вопрос выходит за рамки событий переводов. - Начните с [NEAR Data API](https://docs.fastnear.com/ru/neardata), затем переходите в [Справочник RPC](https://docs.fastnear.com/ru/rpc), если нужна точная каноническая инспекция блока или состояния. Плохой шаблон: - Тянуть данные из нескольких API FastNear до того, как понятно, что именно нужно пользователю. Обычно это даёт более шумный ответ, а не более полезный. ## Аутентифицируйтесь один раз, используйте везде Начните с API-ключа FastNear и используйте его во всех API FastNear выше, включая обычные и архивные RPC-хосты. Передавайте его либо в HTTP-заголовке, либо в URL-параметре: ```bash title="Заголовок Authorization" : "${FASTNEAR_API_KEY:?Задайте FASTNEAR_API_KEY в окружении перед запуском примера.}" curl "https://rpc.mainnet.fastnear.com" \ -H "Authorization: Bearer $FASTNEAR_API_KEY" \ -H "Content-Type: application/json" \ --data '{"method":"block","params":{"finality":"final"},"id":1,"jsonrpc":"2.0"}' ``` ```bash title="URL-параметр" : "${FASTNEAR_API_KEY:?Задайте FASTNEAR_API_KEY в окружении перед запуском примера.}" curl "https://rpc.mainnet.fastnear.com?apiKey=$FASTNEAR_API_KEY" ``` Получите API-ключ в [FastNear Dashboard](https://dashboard.fastnear.com). Операционный режим для неинтерактивных сред: [Аутентификация для агентов](https://docs.fastnear.com/ru/agents/auth) — ключи должны жить в переменных окружения или менеджере секретов, а не в браузерном хранилище, логах чатов или промптах. Полный сценарий и детали заголовков: [Аутентификация и доступ](https://docs.fastnear.com/ru/auth). ## Как вынимать чистую документацию в промпт - На каждой странице в правом верхнем углу есть кнопка **Копировать Markdown**. Она отдаёт Markdown-версию страницы без навигации, готовую к вставке в промпт или RAG-хранилище. - Соглашение `llms.txt` поддерживается: - [`/llms.txt`](https://docs.fastnear.com/ru/llms.txt) — индекс страниц и краткие описания. - [`/llms-full.txt`](https://docs.fastnear.com/ru/llms-full.txt) — полный корпус документации в одном файле. - Русскоязычные аналоги: [`/ru/llms.txt`](https://docs.fastnear.com/ru/llms.txt) и [`/ru/llms-full.txt`](https://docs.fastnear.com/ru/llms-full.txt). - Машиночитаемая структура сайта для поглощения с учётом графа: [`/structured-data/site-graph.json`](https://docs.fastnear.com/ru/structured-data/site-graph.json) (зеркало в `/ru/`). - Под тем же slug с суффиксом `.md` лежит Markdown-зеркало каждой страницы, если прямой запрос удобнее кнопки «Копировать Markdown». ## Подсказки на каждый вызов - Имена параметров, поля ответа и примеры пэйлоадов отрисовываются на каждой странице эндпоинта в реальном времени. Первоисточник — реестр `src/data/generatedFastnearPageModels.json`, используйте его, если зеркалите схему в другой системе. - `?network=testnet` поддерживается только на конкретных страницах. Каждая страница отмечает поддержку сетей в разделе **Аутентификация и доступность**; не считайте, что переключение работает везде. - Токены пагинации (`resume_token`, `page_token`) непрозрачны. Используйте их ровно в том виде, в котором они пришли, и только с тем же эндпоинтом и фильтрами, что их вернули. - В каждом REST-семействе есть маршруты `/status` и `/health` для проверки живости и задержки синхронизации. ## Что должен содержать полезный ответ агента - Краткое указание на то, какой API FastNear был использован и почему, особенно если выбор был выводом. - Ответ в форме, которая, скорее всего, понадобится пользователю следующей: сначала сводка для людей; точные поля или подсказки по следующему вызову для технического потребителя. - Любое важное предостережение о свежести, каноничности, пагинации или выборе сети. - Путь продолжения — только когда это реально помогает. Примеры: «используйте RPC для канонического подтверждения» или «используйте Транзакции API, если нужен более широкий контекст исполнения». Избегайте сбрасывать сырые пэйлоады, когда пользователь на самом деле спрашивает об интерпретации. ## Следующие документы по потребности - Нужна глубина маршрутизации и компромиссы? [Как выбрать подходящую поверхность](https://docs.fastnear.com/ru/agents/choosing-surfaces) - Нужен режим работы с учётными данными и обращение с секретами? [Аутентификация для агентов](https://docs.fastnear.com/ru/agents/auth) - Нужны примеры сценариев? [Плейбуки для агентов](https://docs.fastnear.com/ru/agents/playbooks) --- ## Аутентификация для агентов - HTML-маршрут: https://docs.fastnear.com/ru/agents/auth - Markdown-маршрут: https://docs.fastnear.com/ru/agents/auth.md **Источник:** [https://docs.fastnear.com/ru/agents/auth](https://docs.fastnear.com/ru/agents/auth) # Аутентификация для агентов Агенты должны аутентифицироваться в FastNear так же, как это делают продовые бэкенды. Не переносите браузерно-демонстрационный режим из UI документации в агента, воркера или среду автоматизации. Один API-ключ FastNear работает во всех RPC и API-эндпоинтах. Для агента важнее не само наличие аутентификации, а где живёт учётная запись, как она прикрепляется к запросам и как не допустить её утечки в промпты, логи или состояние браузера. ## Если нужно только правило - Храните ключ в переменной окружения или менеджере секретов. - Внедряйте его со стороны сервера или из среды выполнения воркера. - Предпочитайте заголовок `Authorization: Bearer ...`. - Одинаковые правила ключа и способа передачи действуют и для обычных, и для архивных RPC-хостов. - Никогда не просите пользователя вставлять ключ FastNear в чат, промпт или агента, работающего только в браузере. ## Рекомендуемые шаблоны среды выполнения Используйте один из этих шаблонов: - **Серверный воркер или автоматизация**: загружайте ключ из переменных окружения или менеджера секретов и прикрепляйте его к исходящим запросам к FastNear напрямую. - **Тонкий бэкенд-прокси**: если пользовательское приложение работает в браузере, сначала отправляйте запрос на свой бэкенд, и пусть бэкенд подставляет учётные данные FastNear. - **Мульти-тенантный сервис**: храните ключи по тенантам в полноценном хранилище секретов и заставьте агента выбирать правильный ключ по контексту тенанта или проекта. Избегайте архитектур «агент только в браузере», где ключ FastNear приходится держать в клиентском хранилище. ## Выбор способа передачи учётных данных | Способ | Используйте, когда... | Заметки | | --- | --- | --- | | `Authorization: Bearer ${FASTNEAR_API_KEY}` | HTTP-клиентом или бэкендом управляете вы | Лучшее значение по умолчанию для агентов. Меньше шансов утечь в логи URL, аналитику или скопированные ссылки. | | `?apiKey=${FASTNEAR_API_KEY}` | используется простой curl или система, которой сложно выставлять заголовки | Тоже допустимо, но URL обычно дальше путешествуют через логи и инструменты. Применяйте осознанно. | Если есть выбор — используйте заголовочную форму. ## Минимальный безопасный поток 1. Читайте ключ из переменной окружения или менеджера секретов во время выполнения. 2. Прикрепляйте его к запросу как заголовок или URL-параметр. 3. Чистите промпты, трассировки и логи, чтобы сырой ключ не попадал в транскрипты. 4. Ротируйте ключ, если он появился в промпте, отладочной трассировке, браузерном хранилище или скопированном URL. Пример: ```js const apiKey = process.env.FASTNEAR_API_KEY; const response = await fetch('https://rpc.mainnet.fastnear.com', { method: 'POST', headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'block', params: {finality: 'final'}, }), }); ``` ## Если в среде выполнения нет ключа Агенту по умолчанию стоит стартовать с настроенным API-ключом FastNear. Некоторые публичные чтения могут сработать и без него, но это не должно быть базовой рабочей моделью. Если в настроенной среде ключа пока нет: - подскажите пользователю создать или забрать ключ в [FastNear Dashboard](https://dashboard.fastnear.com) - попросите настроить его в переменной окружения, менеджере секретов или конфигурации бэкенда - не просите вставлять сырой ключ в чат, чтобы агент «носил» его с собой Если агент не может получить настроенный секрет — пусть честно скажет это и остановится, а не импровизирует небезопасное хранение. ## Так делать не надо - Не вынимайте ключ из браузерного `localStorage` и не считайте его учётной записью агента. - Не зашивайте ключи в агент-приложения, доставляемые в браузер. - Не храните ключи в промптах, ячейках ноутбуков или в виде открытого текста в конфигах, закоммиченных в систему контроля версий. - Не предпочитайте `?apiKey=` только за краткость, если инфраструктура агрессивно логирует полные URL. ## Что агенту стоит сказать пользователю Когда аутентификация уместна, полезный ответ агента обычно содержит: - можно ли выполнить текущий запрос без аутентификации - нужно ли пользователю далее настроить API-ключ FastNear - где этому ключу жить — обычно в переменной окружения, менеджере секретов или бэкенд-прокси - какой способ передачи использует агент — обычно `Authorization: Bearer ...` ## Связанные руководства - [Аутентификация и доступ](https://docs.fastnear.com/ru/auth) - [Агенты на FastNear](https://docs.fastnear.com/ru/agents) - [Как выбрать подходящую поверхность](https://docs.fastnear.com/ru/agents/choosing-surfaces) --- ## Как выбрать подходящую поверхность - HTML-маршрут: https://docs.fastnear.com/ru/agents/choosing-surfaces - Markdown-маршрут: https://docs.fastnear.com/ru/agents/choosing-surfaces.md **Источник:** [https://docs.fastnear.com/ru/agents/choosing-surfaces](https://docs.fastnear.com/ru/agents/choosing-surfaces) # Как выбрать подходящую поверхность {/* FASTNEAR_AI_DISCOVERY: Эта страница — для ИИ-агентов, которые выбирают поверхность FastNear по намерению пользователя. Она объясняет, как перейти от цели пользователя к лучшей первой поверхности, когда комбинировать поверхности и каких типичных ошибок избегать. */} Не начинайте с того, чтобы отдавать агенту каждый эндпоинт FastNear. Сначала сформулируйте, какую задачу на самом деле хочет решить пользователь, а затем выберите один API или раздел справочника FastNear, который наиболее прямо отвечает на эту задачу. Для агента важнее не вопрос «какой эндпоинт существует?», а вопрос «какой ответ поможет пользователю сделать следующий шаг?». ## Что определяет маршрут Прежде чем выбрать API, определите четыре вещи: - **Объект**: аккаунт, публичный ключ, хеш транзакции, квитанция, блок, хранилище контракта или задача по настройке инфраструктуры. - **Форма ответа**: сводка в продуктовой форме, история исполнения, канонический вывод протокола или инструкции для оператора. - **Свежесть**: историческая, текущая или последняя / почти в реальном времени. - **Точность**: достаточно индексированной сводки или требуется каноническая корректность в форме узла. На практике: - аккаунт плюс сводка обычно означают [FastNear API](https://docs.fastnear.com/ru/api) - аккаунт плюс точное каноническое состояние обычно означают [Справочник RPC](https://docs.fastnear.com/ru/rpc) - транзакция или квитанция обычно означают [Транзакции API](https://docs.fastnear.com/ru/tx) - история только переводов обычно означает [API переводов](https://docs.fastnear.com/ru/transfers) - самые свежие блоки обычно означают [NEAR Data API](https://docs.fastnear.com/ru/neardata) - история ключей контракта обычно означает [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv) - подъём узла обычно означает [Снапшоты](https://docs.fastnear.com/ru/snapshots) ## Начните с намерения пользователя - Если пользователю нужен ответ в стиле кошелька или обозревателя, предпочитайте индексированные API. - Если пользователю нужно каноническое поведение протокола или точное состояние в форме узла, используйте сырой [Справочник RPC](https://docs.fastnear.com/ru/rpc). - Если пользователю нужна история, квитанции или последовательности событий, используйте API, ориентированные на историю, прежде чем возвращаться к RPC. - Если пользователю нужны самые свежие данные семейства блоков, используйте [NEAR Data API](https://docs.fastnear.com/ru/neardata) для свежести, ориентированной на опрос. - Если пользователю нужны инструкции по подъёму инфраструктуры, направляйте его к [Снапшотам](https://docs.fastnear.com/ru/snapshots), а не к прикладным поверхностям запросов. ## Порядок принятия решений Используйте этот порядок перед выбором поверхности: 1. Пользователь пытается поднять инфраструктуру, а не запрашивать данные цепочки? Если да — используйте [Снапшоты](https://docs.fastnear.com/ru/snapshots). 2. Пользователь просит сводку в продуктовой форме: балансы, NFT, стейкинг или активы аккаунта? Если да — начните с [FastNear API](https://docs.fastnear.com/ru/api). 3. Пользователь спрашивает, что происходило со временем: транзакции, квитанции, переводы или история активности? Если да — начните с [Транзакции API](https://docs.fastnear.com/ru/tx) или с [API переводов](https://docs.fastnear.com/ru/transfers) для вопросов только о переводах. 4. Пользователю нужны самые свежие блоки или чтения семейства блоков с низкой задержкой? Если да — используйте [NEAR Data API](https://docs.fastnear.com/ru/neardata). 5. Корректность зависит от канонического поведения узла, полей протокола или точного состояния в цепочке? Если да — используйте [Справочник RPC](https://docs.fastnear.com/ru/rpc). 6. Пользователь спрашивает об истории индексированного хранилища «ключ–значение» или о последнем индексированном состоянии контракта? Если да — используйте [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv). Если подходит несколько поверхностей, выбирайте ту, которая даёт наиболее прямой полезный ответ с минимумом реконструкции со стороны агента. ## Перед первым вызовом Попробуйте определить эти входные данные до отправки запроса: - сеть: mainnet или testnet - первичный идентификатор: идентификатор аккаунта, публичный ключ, хеш транзакции, ID квитанции, высота / хеш блока, идентификатор контракта плюс ключ хранилища - ожидаемый вывод: сводка, история, канонические поля или шаги оператора - требование к свежести: последнее, финализированное, историческое или «что актуально сейчас» Если чего-то не хватает: - делайте небольшое предположение, когда вероятный стартовый API от этого не меняется - задавайте уточняющий вопрос только тогда, когда неверный выбор существенно изменит результат ## Направление типовых запросов пользователя | Если пользователь говорит... | Вероятно, ему нужно... | Начните с | Переключайтесь, только если... | | --- | --- | --- | --- | | «Каково точное состояние аккаунта в цепочке?» | Каноническое состояние на уровне протокола | [Справочник RPC](https://docs.fastnear.com/ru/rpc) | Также нужна сводка более высокого уровня для людей. | | «Что принадлежит этому аккаунту?» | Балансы, NFT, стейкинг и активы в продуктовой форме | [FastNear API](https://docs.fastnear.com/ru/api) | Нужны точные поля узла, которых нет в индексированном представлении. | | «Какая активность затронула этот аккаунт?» | Индексированная история транзакций и квитанций | [Транзакции API](https://docs.fastnear.com/ru/tx) | Пользователю нужны только события переводов или требуется канонический протокольный уровень детализации. | | «Покажи только переводы.» | История переводов по аккаунту | [API переводов](https://docs.fastnear.com/ru/transfers) | Пользователю на самом деле нужен более широкий контекст исполнения транзакции. | | «Что изменилось в последних блоках?» | Свежие оптимистичные или финализированные чтения семейства блоков | [NEAR Data API](https://docs.fastnear.com/ru/neardata) | Нужны канонические детали RPC по конкретному блоку или чтению состояния. | | «Какая история хранилища у этого контракта?» | Индексированная история состояния «ключ–значение» | [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv) | Нужно текущее каноническое состояние в цепочке, а не индексированная история. | | «Почему эта транзакция упала?» | Сначала хронология исполнения, затем канонические детали | [Транзакции API](https://docs.fastnear.com/ru/tx) | Нужно подтверждение финального статуса протокола на уровне RPC или поведение при отправке транзакции. | | «Как мне отправить транзакцию или посмотреть поле протокола?» | Каноническое поведение узла | [Справочник RPC](https://docs.fastnear.com/ru/rpc) | Позже понадобится сводка по итоговому состоянию аккаунта или активности для человека. | | «Как поднять узел или архивную установку?» | Инфраструктурный сценарий, а не данные приложения | [Снапшоты](https://docs.fastnear.com/ru/snapshots) | Пользователь затем начинает задавать прикладные вопросы о цепочке. | ## Когда подсказкой служит идентификатор Если формулировка пользователя размытая, но идентификатор ясен — пусть идентификатор задаст первый шаг: | Если есть... | Первый шаг по умолчанию | Почему | | --- | --- | --- | | `account_id` | Начните с [FastNear API](https://docs.fastnear.com/ru/api) для сводок или со [Справочника RPC](https://docs.fastnear.com/ru/rpc), если пользователь явно просит точное состояние | Вопросы по аккаунту обычно означают сначала балансы и активы, если пользователь не попросил канонический уровень. | | публичный ключ | Начните с [FastNear API](https://docs.fastnear.com/ru/api) для разрешения ключа в аккаунт | Обычно это задача обнаружения аккаунта, а не первой задачи на уровне RPC. | | хеш транзакции | Начните с [Транзакции API](https://docs.fastnear.com/ru/tx) | Большинству пользователей нужен контекст исполнения и читаемая история, а не сырые поля протокола. | | ID квитанции | Начните с [Транзакции API](https://docs.fastnear.com/ru/tx) | Трассировка квитанций уже индексирована там. | | высота или хеш блока | Начните с [NEAR Data API](https://docs.fastnear.com/ru/neardata) для мониторинга, ориентированного на свежесть, либо со [Справочника RPC](https://docs.fastnear.com/ru/rpc) для точных канонических данных блока | Нужна либо свежесть, либо каноничность. | | идентификатор контракта плюс ключ хранилища | Начните с [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv) для индексированной истории ключа или со [Справочника RPC](https://docs.fastnear.com/ru/rpc) для точного текущего состояния в цепочке | Вопрос о хранилище обычно определяет, что важнее: индексированная история или каноническое состояние. | | задача по подъёму узла или архива | Начните со [Снапшотов](https://docs.fastnear.com/ru/snapshots) | Это операторский сценарий, а не доступ к данным приложения. | ## Для чего лучше всего подходит каждая поверхность ### Справочник RPC Используйте [Справочник RPC](https://docs.fastnear.com/ru/rpc), когда пользователю нужны точные данные или поведение на уровне протокола: - точное состояние аккаунта, ключи доступа, валидаторы, чанки, блоки, метаданные протокола - view-вызовы контрактов и отправка транзакций - ответы, где имена и семантика полей должны быть максимально близки к узлам NEAR Не стартуйте с RPC, когда пользователю на самом деле нужна аккуратная сводка по активам или истории. Это заставит агента пересобирать продуктовый ответ из данных более низкого уровня. ### FastNear API Используйте [FastNear API](https://docs.fastnear.com/ru/api), когда пользователю нужен ответ, уже похожий на данные приложения: - балансы - NFT - позиции стейкинга - поиск по публичному ключу - объединённые снимки аккаунта Обычно это первый шаг для запросов кошелька, портфеля, обозревателя и обзора аккаунта. ### Транзакции API Используйте [Транзакции API](https://docs.fastnear.com/ru/tx), когда пользователю нужна история исполнения: - активность аккаунта - поиск транзакции - трассировка квитанций - история транзакций по блокам Это поверхность истории по умолчанию, когда пользователь спрашивает «что произошло?», а не «что есть прямо сейчас?». ### API переводов Используйте [API переводов](https://docs.fastnear.com/ru/transfers), когда вопрос пользователя именно о событиях переводов, а не о полном контексте исполнения: - входящие и исходящие переводы - пагинация, ориентированная на переводы - представления активности аккаунта только по переводам Если пользователь начинает спрашивать про квитанции, действия кроме переводов или полное поведение транзакций — переходите в [Транзакции API](https://docs.fastnear.com/ru/tx). ### NEAR Data API Используйте [NEAR Data API](https://docs.fastnear.com/ru/neardata), когда свежесть важнее сводки в продуктовой форме: - оптимистичные или недавно финализированные блоки - чтения последних блоков семейства - явные сценарии с опросом Не представляйте это как сервис на основе WebSocket или webhook. Это поверхность чтения, ориентированная на опрос. ### KV FastData API Используйте [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv), когда вопрос об истории индексированного хранилища контракта или о последнем индексированном состоянии «ключ–значение»: - анализ хранилища - история ключей - поиск состояния контракта, где уместна индексированная абстракция «ключ–значение» ### Снапшоты Используйте [Снапшоты](https://docs.fastnear.com/ru/snapshots), когда сценарий связан с подъёмом инфраструктуры оператором: - подъём mainnet или testnet - инициализация RPC- или архивного узла - операторские руководства Это не путь прикладных запросов. ## Ближайшие шаги после выбора Как только выбрана стартовая поверхность, следующий шаг тоже должен быть предсказуемым: | Выбранный API | Первое, что нужно сделать | Как выглядит успех | Расширяйтесь только если... | | --- | --- | --- | --- | | [FastNear API](https://docs.fastnear.com/ru/api) | Выберите эндпоинт, соответствующий идентификатору или запросу на сводку | Можно сразу ответить на вопросы по балансам, активам, стейкингу или сводке аккаунта | Нужны точные канонические поля узла или подтверждение на уровне протокола | | [Справочник RPC](https://docs.fastnear.com/ru/rpc) | Выберите конкретный RPC-метод, соответствующий объекту и требуемому набору канонических полей | Можно вернуть поля на уровне протокола или выполнить точное действие по состоянию / отправке | Также нужна сводка более высокого уровня или индексированная история | | [Транзакции API](https://docs.fastnear.com/ru/tx) | Начните с эндпоинта по хешу транзакции, квитанции, истории аккаунта или истории блока, подходящего под вопрос | Можно объяснить, что произошло и в каком порядке | Нужна точная семантика финальности или отправки на уровне RPC | | [API переводов](https://docs.fastnear.com/ru/transfers) | Запросите историю переводов для аккаунта или в нужном объёме актива | Можно отвечать на вопросы только о переводах без лишних деталей исполнения | Вопрос расширяется до квитанций, действий или полного контекста транзакции | | [NEAR Data API](https://docs.fastnear.com/ru/neardata) | Запросите последние оптимистичные или финализированные данные семейства блоков по требованию к свежести | Можно отвечать «что изменилось недавно?» или «каково последнее состояние семейства блоков?» | Нужно точное каноническое продолжение по блоку или состоянию | | [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv) | Запросите последнее индексированное состояние «ключ–значение» или историю ключа | Можно отвечать на вопросы инспекции хранилища контракта в индексированном виде | Нужно точное текущее состояние в цепочке, а не индексированные представления хранилища | | [Снапшоты](https://docs.fastnear.com/ru/snapshots) | Выберите нужную сеть и тип узла, затем следуйте руководству по подъёму | Можно дать операторские шаги, предусловия и ориентиры для подъёма | Пользователь переключается с настройки инфраструктуры на прикладные вопросы о цепочке | ## Условия остановки перед расширением Не расширяйтесь на второй API только потому, что он существует. Оставайтесь на первом API, когда: - ответ уже соответствует ожидаемой пользователем форме - текущий API уже отдаёт поля, которые просил пользователь - пользователь просил историю и индексированная история уже получена - пользователь просил сводку и сводка уже получена Расширяйтесь, когда: - пользователь явно просит каноническое подтверждение - текущему API не хватает поля, свежести или детализации исполнения - вопрос расширился с истории только переводов до общего поведения транзакций - вопрос расширился со сводки до инспекции на уровне протокола ## Комбинируйте поверхности, только когда это помогает пользователю Хорошие шаблоны с несколькими поверхностями: - Начните с [FastNear API](https://docs.fastnear.com/ru/api), затем опуститесь в [Справочник RPC](https://docs.fastnear.com/ru/rpc), если пользователь просит каноническое подтверждение. - Начните с [Транзакции API](https://docs.fastnear.com/ru/tx), затем используйте [Справочник RPC](https://docs.fastnear.com/ru/rpc), когда нужны финальные детали протокола по конкретной транзакции или квитанции. - Начните с [NEAR Data API](https://docs.fastnear.com/ru/neardata) для самых свежих блоков, затем используйте [Справочник RPC](https://docs.fastnear.com/ru/rpc) для точной инспекции конкретного блока или запроса состояния. - Начните с [API переводов](https://docs.fastnear.com/ru/transfers) для вопросов только о переводах, затем расширяйтесь в [Транзакции API](https://docs.fastnear.com/ru/tx), если пользователь просит больше контекста исполнения. Плохой шаблон с несколькими поверхностями: - Тянуть данные из нескольких поверхностей до того, как понятно, что именно нужно пользователю. Обычно это даёт более шумный ответ, а не более полезный. ## Что агенту стоит вывести из типовых формулировок - «Что есть у этого кошелька?» обычно означает балансы, NFT, стейкинг и, возможно, разрешение по публичному ключу. Начните с [FastNear API](https://docs.fastnear.com/ru/api). - «Почему эта транзакция упала?» обычно означает, что пользователю сначала нужна читаемая история исполнения, а не сырой вывод протокола. Начните с [Транзакции API](https://docs.fastnear.com/ru/tx). - «Это точное состояние цепочки?» обычно означает, что каноническая корректность важнее удобства. Начните со [Справочника RPC](https://docs.fastnear.com/ru/rpc). - «Что только что произошло в последнем блоке?» обычно означает, что главное требование — свежесть. Начните с [NEAR Data API](https://docs.fastnear.com/ru/neardata). - «Как быстро поднять узел?» — это операторский сценарий. Начните со [Снапшотов](https://docs.fastnear.com/ru/snapshots). ## Частые ошибки маршрутизации - Не начинайте с RPC только потому, что он канонический. Каноничность не равна полезности для каждой задачи пользователя. - Не используйте снапшоты для прикладных чтений. - Не описывайте [NEAR Data API](https://docs.fastnear.com/ru/neardata) как поверхность потоковой передачи. - Не расширяйтесь с истории переводов до полной истории транзакций, если вопрос пользователя сам не стал шире. - Не уходите с индексированного API только потому, что существует сырой RPC. Переходите, только когда индексированного ответа недостаточно. ## Если намерение пользователя неоднозначно Когда пользователь формулирует размыто, делайте наименьшее полезное предположение о маршруте: - «Проверь этот аккаунт» обычно стоит начинать с [FastNear API](https://docs.fastnear.com/ru/api) — большинству пользователей нужна читаемая сводка по аккаунту. - «Проверь эту транзакцию» обычно стоит начинать с [Транзакции API](https://docs.fastnear.com/ru/tx) — большинству пользователей нужен контекст исполнения, а не только поля протокола. - «Проверь этот блок» можно начинать с [NEAR Data API](https://docs.fastnear.com/ru/neardata) для мониторинга, ориентированного на свежесть, либо со [Справочника RPC](https://docs.fastnear.com/ru/rpc), когда пользователя явно интересует канонический вывод узла. Если делаете предположение — кратко укажите его в ответе и идите дальше. Просите уточнения только тогда, когда выбор неверной поверхности существенно изменит результат. ## Что агенту делать после первого результата После возврата первого ответа: 1. Проверьте, можно ли теперь ответить на вопрос пользователя напрямую. 2. Если да — отвечайте в ожидаемой пользователем форме, а не собирайте дополнительные данные. 3. Если нет — точно назовите недостающую часть. Примеры: каноническое подтверждение, более широкая история, более свежие данные семейства блоков, точное поле протокола или специфический контекст инфраструктуры. 4. Только тогда переключайте API. Цель — не доказать, что существует несколько API FastNear. Цель — ответить на следующий реальный вопрос пользователя за минимальное число необходимых шагов. ## Связанные руководства - [Агенты на FastNear](https://docs.fastnear.com/ru/agents) — полная карта поверхностей, базовые URL и подсказки по поглощению промптов. - [Аутентификация для агентов](https://docs.fastnear.com/ru/agents/auth) — работа с учётными данными и операционный режим. - [Плейбуки для агентов](https://docs.fastnear.com/ru/agents/playbooks) — примеры многошаговых сценариев. --- ## Плейбуки для агентов - HTML-маршрут: https://docs.fastnear.com/ru/agents/playbooks - Markdown-маршрут: https://docs.fastnear.com/ru/agents/playbooks.md **Источник:** [https://docs.fastnear.com/ru/agents/playbooks](https://docs.fastnear.com/ru/agents/playbooks) # Плейбуки для агентов {/* FASTNEAR_AI_DISCOVERY: Эта страница даёт ИИ-агентам конкретные многошаговые сценарии для типовых задач FastNear. Каждый плейбук называет минимальные входы, первый API, с которого начать, момент для расширения на другой API и то, что должен содержать полезный ответ. */} Используйте эту страницу, когда агент уже знает, какой тип задачи он обрабатывает, и ему нужны ближайшие шаги по умолчанию. Каждый плейбук начинается с одного API FastNear, называет минимально полезные входы и подсказывает, когда остановиться, а когда расширяться. Базовое правило остаётся одним для всех плейбуков: начните с одного API, получите минимальный полезный результат и расширяйтесь, только когда можете точно назвать недостающую часть. ## Как использовать эти плейбуки 1. Сопоставьте запрос пользователя с ближайшим плейбуком ниже. 2. Соберите минимальные входы. 3. Сделайте первый запрос к рекомендуемому стартовому API. 4. Остановитесь, как только можете ответить в форме, которая реально нужна пользователю. 5. Расширяйтесь только под конкретное недостающее поле, требование к свежести или к каноничности. ## Быстрая карта | Если пользователю нужно... | Начните с... | Расширяйтесь, только если... | | --- | --- | --- | | балансы, активы, стейкинг или сводка аккаунта в стиле кошелька | [FastNear API](https://docs.fastnear.com/ru/api) | требуются точные канонические поля узла | | история транзакций, квитанций или исполнения по аккаунту | [Транзакции API](https://docs.fastnear.com/ru/tx) | требуется точный статус или семантика отправки на уровне RPC | | история только переводов | [API переводов](https://docs.fastnear.com/ru/transfers) | вопрос выходит за рамки переводов | | последние оптимистичные или финализированные блоки | [NEAR Data API](https://docs.fastnear.com/ru/neardata) | требуется точное каноническое продолжение по блоку или состоянию | | индексированное состояние ключей контракта или история ключей | [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv) | требуется точное текущее состояние в цепочке | | подъём узла или настройка оператором | [Снапшоты](https://docs.fastnear.com/ru/snapshots) | задача уходит обратно к прикладным данным цепочки | Если до сих пор непонятно, какой плейбук подходит — сначала используйте [Как выбрать подходящую поверхность](https://docs.fastnear.com/ru/agents/choosing-surfaces). ## Сводка и активы аккаунта Используйте, когда пользователь говорит «проверь этот аккаунт», «что хранит этот кошелёк», «какие NFT у этого аккаунта» или «какому аккаунту принадлежит этот ключ?». **Минимальные входы** - сеть - `account_id` или публичный ключ - хочет пользователь широкую сводку или один конкретный класс активов **Начните здесь** - [Полный снимок аккаунта V1](https://docs.fastnear.com/ru/api/v1/account-full) для широкой сводки аккаунта - [Поиск по публичному ключу V1](https://docs.fastnear.com/ru/api/v1/public-key), если стартовый идентификатор — публичный ключ - [Индекс FastNear API](https://docs.fastnear.com/ru/api), когда сначала нужно выбрать более узкий эндпоинт **Последовательность по умолчанию** 1. Если стартовый идентификатор — публичный ключ, разрешите его в один или несколько `account_id` через [Поиск по публичному ключу V1](https://docs.fastnear.com/ru/api/v1/public-key). 2. Возьмите самое широкое полезное представление аккаунта через [Полный снимок аккаунта V1](https://docs.fastnear.com/ru/api/v1/account-full). 3. Если пользователь просит только одно семейство активов или нужна более узкая детализация — переходите к целевым эндпоинтам: [балансы FT-токенов](https://docs.fastnear.com/ru/api/v1/account-ft), [активы NFT](https://docs.fastnear.com/ru/api/v1/account-nft) или [позиции стейкинга](https://docs.fastnear.com/ru/api/v1/account-staking). 4. Остановитесь, как только можете напрямую ответить на вопрос об активах. **Расширяйтесь, только если** - пользователь просит точные канонические поля состояния, а не индексированные сводки - пользователю нужна протокольная семантика аккаунта или ключей доступа Тогда расширяйтесь на [Состояние аккаунта](https://docs.fastnear.com/ru/rpc/account/view-account) или другие страницы [Справочника RPC](https://docs.fastnear.com/ru/rpc). **Полезный ответ должен содержать** - определённую идентичность аккаунта - балансы или активы, о которых спросил пользователь - короткую пометку, что это индексированные сводные данные, а не сырое состояние RPC ## Расследование транзакции или квитанции Используйте, когда пользователь говорит «прошла ли эта транзакция», «почему она упала», «что случилось с этой квитанцией» или «покажи недавнюю активность аккаунта». **Минимальные входы** - сеть - хеш транзакции, ID квитанции или `account_id` - нужна инспекция одного элемента или диапазон истории **Начните здесь** - [Поиск транзакций](https://docs.fastnear.com/ru/tx/transactions) для хеша транзакции - [Поиск квитанций](https://docs.fastnear.com/ru/tx/receipt) для ID квитанции - [История аккаунта](https://docs.fastnear.com/ru/tx/account) для активности по аккаунту **Последовательность по умолчанию** 1. Выберите стартовый эндпоинт по уже известному идентификатору. 2. Запросите индексированную запись исполнения и восстановите историю в читаемом порядке. 3. Выделите статус, затронутые аккаунты, ключевые квитанции и контекст блока, если он существенен. 4. Остановитесь, если можете объяснить, что произошло, без канонического подтверждения через RPC. **Расширяйтесь, только если** - пользователь явно просит точную семантику статуса RPC - индексированной записи недостаточно, чтобы ответить на вопрос уровня протокола - вопрос сместился к поведению при отправке транзакции Тогда расширяйтесь на [Статус транзакции](https://docs.fastnear.com/ru/rpc/transaction/tx-status) или другой подходящий метод [Справочника RPC](https://docs.fastnear.com/ru/rpc). **Полезный ответ должен содержать** - успех, неудачу или ожидание транзакции или квитанции - сначала главный вывод исполнения, потом сырые поля - путь продолжения — только если он добавляет ценность, например «используйте RPC для канонического подтверждения» ## История только переводов Используйте, когда пользователя интересует движение активов и не нужен более широкий контекст квитанций или действий. **Минимальные входы** - сеть - `account_id` - опциональные фильтры: токен, направление или временной интервал **Начните здесь** - [Запрос переводов](https://docs.fastnear.com/ru/transfers/query) - [Индекс API переводов](https://docs.fastnear.com/ru/transfers) **Последовательность по умолчанию** 1. Запросите историю переводов для нужного аккаунта и фильтров. 2. Используйте пагинацию только до такой глубины, которая реально нужна для ответа. 3. Сосредоточьте ответ на переводах и не пересобирайте полную историю транзакции. 4. Остановитесь, если пользователь спросил только кто, когда и какой актив отправил. **Расширяйтесь, только если** - пользователь начинает спрашивать про действия, не связанные с переводами - пользователю нужны трассировки квитанций или более широкий контекст исполнения - пользователь хочет понять, почему действие произошло, а не просто что был перевод Тогда расширяйтесь на [Историю аккаунта](https://docs.fastnear.com/ru/tx/account) или другую страницу [Транзакций API](https://docs.fastnear.com/ru/tx). **Полезный ответ должен содержать** - значимые входящие или исходящие события переводов - предположения о фильтрах, которые были сделаны - пометку, что это история переводов, а не полная история исполнения ## Мониторинг свежих блоков Используйте, когда пользователю нужны самые свежие данные оптимистичных или финализированных блоков или он спрашивает «что изменилось недавно?». **Минимальные входы** - сеть - требование к свежести: оптимистичная или финализированная - опционально — высота или хеш блока, если пользователь привязывается к конкретному блоку **Начните здесь** - [Редирект на последний финализированный блок](https://docs.fastnear.com/ru/neardata/last-block-final) для последнего финализированного блока - [Оптимистичный блок по высоте](https://docs.fastnear.com/ru/neardata/block-optimistic), когда сценарий явно оптимистичный - [Заголовки блоков](https://docs.fastnear.com/ru/neardata/block-headers), когда достаточно опроса на уровне заголовков - [Индекс NEAR Data API](https://docs.fastnear.com/ru/neardata), когда нужно выбрать между ними **Последовательность по умолчанию** 1. Определите, нужна ли пользователю оптимистичная свежесть или финализированная стабильность. 2. Используйте помощника по последнему блоку или маршрут семейства блоков, соответствующий требованию к свежести. 3. Опрашивайте явно и в ответе чётко указывайте, какой режим свежести использован. 4. Остановитесь, если пользователю достаточно свежих данных семейства блоков и каноническое продолжение через RPC не требуется. **Расширяйтесь, только если** - пользователь просит точный канонический вывод блока - пользователь хочет проверить состояние или поля протокола за пределами данных семейства блоков - пользователю нужна точная семантика RPC для конкретного продолжения по блоку Тогда расширяйтесь на [Справочник RPC](https://docs.fastnear.com/ru/rpc), обычно начиная с [Блока по высоте](https://docs.fastnear.com/ru/rpc/block/block-by-height) или [Блока по ID](https://docs.fastnear.com/ru/rpc/block/block-by-id). **Полезный ответ должен содержать** - пометку, что данные получены из оптимистичных или финализированных чтений - детали последнего блока или заголовка, которые реально отвечают на вопрос пользователя - пометку, если более глубокое каноническое продолжение существенно изменит интерпретацию ## Инспекция хранилища контракта Используйте, когда пользователю нужна индексированная история ключей контракта, последнее индексированное состояние ключей или анализ хранилища контракта по ключу. **Минимальные входы** - сеть - идентификатор контракта - точный ключ, префикс ключа или область аккаунта / `predecessor_id` - хочет пользователь последнее индексированное состояние или исторические изменения ключа **Начните здесь** - [Последнее по точному ключу](https://docs.fastnear.com/ru/fastdata/kv/get-latest-key) для одного точного ключа - [Индекс KV FastData API](https://docs.fastnear.com/ru/fastdata/kv), когда вопрос шире одного ключа **Последовательность по умолчанию** 1. Определите, хочет пользователь один ключ, семейство ключей или историю хранилища в разрезе аккаунта. 2. Запросите минимальное индексированное представление «ключ–значение», соответствующее этой области. 3. Если нужна история, а не последнее значение — оставайтесь внутри [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv) и переключайтесь на подходящий исторический эндпоинт. 4. Остановитесь, если индексированные данные «ключ–значение» уже отвечают на вопрос. **Расширяйтесь, только если** - пользователю нужно точное текущее состояние в цепочке, а не индексированное состояние хранилища - пользователю нужна протокольная семантика состояния контракта - индексированного представления хранилища недостаточно для запрошенного точного ключа или префикса Тогда расширяйтесь на [Просмотр состояния контракта](https://docs.fastnear.com/ru/rpc/contract/view-state) в [Справочнике RPC](https://docs.fastnear.com/ru/rpc). **Полезный ответ должен содержать** - контракт и область ключа, которая была проинспектирована - пометку, это последнее индексированное состояние или история ключа - пометку, если каноническое состояние RPC отличается по свежести или семантике ## Подъём узла и настройка оператором Используйте, когда пользователь пытается поднять инфраструктуру, а не запросить данные цепочки. **Минимальные входы** - сеть - тип узла, например RPC или архивный - цель: скорость подъёма, восстановление синхронизации или операционный сценарий **Начните здесь** - [Снапшоты](https://docs.fastnear.com/ru/snapshots) **Последовательность по умолчанию** 1. Сразу направляйте к подходящему снапшоту или операторскому руководству. 2. Сосредоточьте ответ на предусловиях, пути подъёма и следующих операционных шагах. 3. Не подтягивайте прикладные API, пока пользователь сам не сменит задачу. **Расширяйтесь, только если** - пользователь перестаёт спрашивать про инфраструктуру и начинает спрашивать про сами данные цепочки Тогда возвращайтесь к [Как выбрать подходящую поверхность](https://docs.fastnear.com/ru/agents/choosing-surfaces) и выбирайте нужный API данных. **Полезный ответ должен содержать** - сеть и тип узла, которые вы предполагаете - операторские шаги, которые нужно сделать дальше - любое чёткое предусловие или оговорку, меняющую путь подъёма ## Общие правила для всех плейбуков - Называйте сеть, если её пришлось вывести по контексту. - Называйте выбранный API, если выбор был выводом. - Предпочитайте один достаточный ответ исчерпывающему ответу по нескольким API. - Считайте токены пагинации непрозрачными и переиспользуйте их только с тем же эндпоинтом и набором фильтров, которые их создали. - Не расширяйтесь только потому, что существует более канонический API. ## Если ни один плейбук не подходит чисто Если запрос по-прежнему неоднозначен после этой страницы: - используйте [Как выбрать подходящую поверхность](https://docs.fastnear.com/ru/agents/choosing-surfaces), чтобы выбрать первый API - используйте [Аутентификацию для агентов](https://docs.fastnear.com/ru/agents/auth), если блокер — работа с учётными данными - возвращайтесь к [Агентам на FastNear](https://docs.fastnear.com/ru/agents) за правилами рабочего цикла по умолчанию и формы ответа --- ## FastNear API - HTML-маршрут: https://docs.fastnear.com/ru/api - Markdown-маршрут: https://docs.fastnear.com/ru/api.md **Источник:** [https://docs.fastnear.com/ru/api](https://docs.fastnear.com/ru/api) # FastNear API FastNear API — это индексированное REST-семейство для продуктовых представлений аккаунтов. Это самый быстрый способ ответить на вопросы вроде «чем владеет этот аккаунт?» или «какие аккаунты соответствуют этому публичному ключу?» без сборки результата из сырых RPC-вызовов. ## Базовые URL ```bash title="FastNear API Mainnet" https://api.fastnear.com ``` ```bash title="FastNear API Testnet" https://test.api.fastnear.com ``` ## Лучше всего подходит для - балансов кошельков и обзоров активов; - представлений аккаунта по NFT и FT-токенам; - поиска аккаунтов по публичному ключу; - объединённых снимков аккаунта для дашбордов, обозревателей и агентов. ## Когда его не стоит использовать - Используйте [Справочник RPC](https://docs.fastnear.com/ru/rpc), когда нужны канонические методы JSON-RPC из протокола. - Используйте [Транзакции API](https://docs.fastnear.com/ru/tx), когда основная задача — история транзакций или квитанций. - Используйте [NEAR Data API](https://docs.fastnear.com/ru/neardata), когда нужен опрос данных по блокам и проверка свежести. ## Аутентификация и доступность по сетям - Публичные REST-эндпоинты FastNear часто работают без API-ключа. - Тот же формат ключа FastNear работает и на API-эндпоинтах, когда нужна единая аутентифицированная модель или повышенные лимиты, а интерфейс документации может передать ключ в интерактивные примеры. - Добавьте `?network=testnet`, чтобы переключить совместимые страницы на testnet-бэкенд и подготовленные значения по умолчанию для testnet. ## Общие интерактивные примеры - Используйте `Copy example URL` на любой интерактивной API-странице, чтобы поделиться выбранной сетью и заполненным состоянием запроса. - Общие URL примеров выполняются автоматически при загрузке, когда в них есть состояние операции. - Сохранённые API-ключи и токены никогда не включаются в такие общедоступные URL документации. ## С чего обычно начинают - [V1 полный снимок аккаунта](https://docs.fastnear.com/ru/api/v1/account-full) — для объединённого снимка аккаунта. - [V1 FT-токены аккаунта](https://docs.fastnear.com/ru/api/v1/account-ft) и [V1 NFT аккаунта](https://docs.fastnear.com/ru/api/v1/account-nft) — для продуктовых представлений активов. - [V1 поиск по публичному ключу](https://docs.fastnear.com/ru/api/v1/public-key) — когда нужно определить аккаунт по ключу. - [V1 топ держателей FT](https://docs.fastnear.com/ru/api/v1/ft-top) — для представлений распределения токенов. ## Нужен сценарий? Используйте [примеры FastNear API](https://docs.fastnear.com/ru/api/examples) для практических примеров: сводки по аккаунтам, определения аккаунта по ключу и перехода к узким представлениям активов. ## Устранение неполадок ### Мне нужно только одно низкоуровневое значение из состояния цепочки Используйте сырой RPC. Эта индексированная поверхность оптимизирована для продуктовых представлений, а не для дублирования каждого RPC-метода. ### Страница всё ещё показывает данные mainnet Проверьте, поддерживает ли страница `?network=testnet`. Некоторые сценарии работают только с mainnet, и документация явно отмечает такие случаи. ### Мне нужны транзакции, а не балансы Переходите в [Транзакции API](https://docs.fastnear.com/ru/tx), чтобы не перегружать поверхность представления аккаунта запросами по истории. --- ## Примеры API - HTML-маршрут: https://docs.fastnear.com/ru/api/examples - Markdown-маршрут: https://docs.fastnear.com/ru/api/examples.md **Источник:** [https://docs.fastnear.com/ru/api/examples](https://docs.fastnear.com/ru/api/examples) ## Примеры Все shell-примеры ниже работают на публичных FastNear API-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке. ### Свести один аккаунт за один вызов `/v1/account/{id}/full` — это агрегатор аккаунтов в FastNear API: один вызов собирает NEAR-состояние аккаунта, каждый FT-контракт, которого он касался, каждую NFT-коллекцию, которую он получил, и каждый валидаторский пул, в который делегировал. Если у вас уже есть `account_id`, это самый быстрый ответ на вопрос «что это за аккаунт?». ```bash ACCOUNT_ID=root.near curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full?apiKey=${FASTNEAR_API_KEY:-}" \ | jq '{ account_id, near_balance_yocto: .state.balance, ft_contracts: (.tokens | length), nft_contracts: (.nfts | length), staking_pool_contracts: (.pools | length) }' ``` Для `root.near`: 150 FT-контрактов в списке, 102 NFT-коллекции, 2 валидаторских пула. Одни только счётчики контрактов говорят, что это оживлённый mainnet-аккаунт. Все примеры ниже погружаются в какую-то одну из этих поверхностей — начинайте отсюда, когда на руках только ID аккаунта. ### Определить аккаунт по публичному ключу и сразу получить сводку Найдите, какому аккаунту принадлежит ключ, и прочитайте его активы за один следующий запрос. ```bash PUBLIC_KEY='ed25519:CCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT' LOOKUP="$(curl -s "https://api.fastnear.com/v1/public_key/$(jq -rn --arg k "$PUBLIC_KEY" '$k | @uri')?apiKey=${FASTNEAR_API_KEY:-}")" echo "$LOOKUP" | jq '{matched: (.account_ids | length), account_ids}' ACCOUNT_ID="$(echo "$LOOKUP" | jq -r '.account_ids[0]')" curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full?apiKey=${FASTNEAR_API_KEY:-}" \ | jq '{account_id, state, tokens: (.tokens|length), nfts: (.nfts|length), pools: (.pools|length)}' ``` Если `matched` больше 1, переключайтесь на [V1 Public Key Lookup All](https://docs.fastnear.com/ru/api/v1/public-key-all) и пройдитесь по каждому найденному аккаунту. ### Сколько NEAR на этом аккаунте реально доступно к переводу? Состояние аккаунта NEAR делится на три ведра, которые UI кошельков обычно сливает в одно: `balance` — это свободная часть (не в стейкинге), `locked` — NEAR, привязанный к валидаторскому стейку или lockup-контракту, а `storage_bytes` подразумевает ещё отдельную долю, пришпиленную к trie по текущей ставке 10^19 yoctoNEAR за байт. Один pipeline над `/full` разводит их по полкам. ```bash ACCOUNT_ID=root.near curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full?apiKey=${FASTNEAR_API_KEY:-}" \ | jq ' (.state.balance | tonumber) as $amount | (.state.locked | tonumber) as $locked | (.state.storage_bytes * 10000000000000000000) as $pinned | 1e24 as $ynear | { account_id, near: { total_owned: (($amount + $locked) / $ynear), unstaked: ($amount / $ynear), stake_or_lockup: ($locked / $ynear), pinned_to_storage: ($pinned / $ynear), spendable: (($amount - $pinned) / $ynear) } }' ``` Для `root.near`: ~3914.67 NEAR всего, всё в свободной части, ~0.28677 NEAR закреплено за 28,677 байтами on-chain-состояния, ~3914.38 NEAR доступно к переводу. Новым аккаунтам это особенно заметно — свежесозданный именованный аккаунт ~182 байта «съедает» ~0.00182 NEAR под storage, и именно поэтому CLI-утилиты не дают отправить полный баланс. Наведите тот же pipeline на валидаторский пул вроде `astro-stakers.poolv1.near`, и пропорции перевернутся: ~730 тыс. свободных, ~27.68 млн в `locked`. Этот `locked` — собственный протокольный валидаторский стейк пула, а не средства делегатов (те учитываются внутри состояния контракта пула). Одно и то же поле означает разное на разных типах аккаунтов. jq считает в IEEE-754 double, поэтому NEAR-значения выше — только для отображения; для точной бухгалтерии сохраняйте сами yocto-строки. ### Когда в этом аккаунте что-либо последний раз менялось? У каждой записи в массивах `tokens`, `nfts` и `pools` внутри `/full` есть собственное `last_update_block_height` — блок, в котором индексер последний раз видел изменение этой строки для этого аккаунта. Максимум по всем трём массивам даёт дешёвый сигнал «последняя активность» без похода в Transactions API. ```bash ACCOUNT_ID=root.near curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full?apiKey=${FASTNEAR_API_KEY:-}" \ | jq ' [ (.tokens // [])[].last_update_block_height, (.nfts // [])[].last_update_block_height, (.pools // [])[].last_update_block_height ] as $heights | ($heights | map(select(. != null))) as $tracked | { account_id, total_entries: ($heights | length), tracked_entries: ($tracked | length), most_recent_block: ($tracked | max), oldest_tracked_block: ($tracked | min) }' ``` Для `root.near` это возвращает 254 записи по FT-, NFT- и pool-контрактам, 158 с отслеживаемым блоком и самый свежий блок `194301659`. Этого уже достаточно, чтобы понять, что кошелёк живой, не заходя в историю транзакций. Это правильный вопрос для «был ли этот кошелёк недавно активен?» или «двигалось ли что-то после блока X?» — дёшево, один запрос, без истории транзакций. Чтобы достать саму транзакцию, вызвавшую последнее изменение, расширяйте поверхность до [Transactions API](https://docs.fastnear.com/ru/tx). Записи с `last_update_block_height: null` относятся ко времени до per-row-отслеживания индексером (обычно старые airdrops) и здесь игнорируются, а не считаются свежими. ### Показать NFT-коллекции этого кошелька от конкретного издателя Имена аккаунтов на NEAR кодируют иерархию: `mint.sharddog.near` — это подаккаунт `sharddog.near`, который, в свою очередь, — подаккаунт `near`. Издатели, выпускающие несколько NFT-коллекций, обычно разворачивают каждую как отдельный подаккаунт, поэтому один фильтр по суффиксу над NFT-списком аккаунта вытаскивает всё опубликованное под одним деревом — без внешнего реестра коллекций. ```bash ACCOUNT_ID=root.near PUBLISHER=sharddog.near curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/nft?apiKey=${FASTNEAR_API_KEY:-}" \ | jq --arg publisher "$PUBLISHER" ' ("." + $publisher) as $suffix | { account_id: .account_id, publisher: $publisher, collections: [ .tokens[] | select(.contract_id | endswith($suffix)) | { contract_id, last_update_block_height, status: (if .last_update_block_height == null then "dormant" else "active" end) } ] | sort_by(.last_update_block_height // 0) }' ``` Для `root.near` и `sharddog.near` это возвращает четыре контракта-подаккаунта: `ndcconstellationnft`, `mint`, `harvestmoon` и `claim`. Только у `claim` есть ненулевой `last_update_block_height` (`131402024`), так что именно этот контракт явно менял позицию кошелька. Остальные — спящие, что типично для одноразовых drop-контрактов, в которые аккаунт что-то получил и больше не возвращался. Поменяйте `PUBLISHER` на любой аккаунт, чтобы сфокусировать фильтр на другом дереве издателя. ### Показывает ли кошелёк прямой стейкинг, liquid staking-токены или оба варианта? Прямые позиции в пулах лежат на `/staking`; liquid staking-токены (stNEAR, LiNEAR и т. п.) лежат на `/ft` как обычные FT. Прочитайте оба эндпоинта и классифицируйте кошелёк — `root.near` оказывается `mixed`. ```bash ACCOUNT_ID=root.near LIQUID_PROVIDERS_JSON='["meta-pool.near","lst.rhealab.near","linear-protocol.near"]' STAKING="$(curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/staking?apiKey=${FASTNEAR_API_KEY:-}")" FT="$(curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/ft?apiKey=${FASTNEAR_API_KEY:-}")" jq -n \ --argjson staking "$STAKING" \ --argjson ft "$FT" \ --argjson providers "$LIQUID_PROVIDERS_JSON" ' ($staking.pools // []) as $direct | (($ft.tokens // []) | map(select(.contract_id as $id | $providers | index($id)))) as $liquid | { classification: ( if ($direct|length)>0 and ($liquid|length)>0 then "mixed" elif ($direct|length)>0 then "direct_only" elif ($liquid|length)>0 then "liquid_only" else "no_visible_staking_position" end ), direct_pools: ($direct | map(.pool_id)), liquid_tokens: ($liquid | map({contract_id, balance})) }' ``` Классификатор знает только то, чему вы его научили — расширяйте `LIQUID_PROVIDERS_JSON` по мере появления новых liquid staking-продуктов и рассматривайте результат как наблюдательный, а не исчерпывающий. ## Частые ошибки - Сразу идти в широкий снимок аккаунта, когда пользователя интересует только одна категория активов. - Использовать FastNear API, хотя пользователю нужны точные поля RPC или права доступа. - Оставаться на страницах сводок по аккаунту, когда вопрос уже стал вопросом об истории транзакций. ## Связанные страницы - [FastNear API](https://docs.fastnear.com/ru/api) - [API Reference](https://docs.fastnear.com/ru/api/reference) - [RPC Reference](https://docs.fastnear.com/ru/rpc) - [Transactions API](https://docs.fastnear.com/ru/tx) - [Choosing the Right Surface](https://docs.fastnear.com/ru/agents/choosing-surfaces) - [Agent Playbooks](https://docs.fastnear.com/ru/agents/playbooks) --- ## Справочник API - HTML-маршрут: https://docs.fastnear.com/ru/api/reference - Markdown-маршрут: https://docs.fastnear.com/ru/api/reference.md **Источник:** [https://docs.fastnear.com/ru/api/reference](https://docs.fastnear.com/ru/api/reference) # Справочник API Этот раздел объясняет, что относится к REST-слою FastNear и как выбрать между REST-семействами до перехода к сырому JSON-RPC. Сайдбар `/api` намеренно посвящён именно **FastNear API**, а не универсальному REST-разделу. Другие REST-семейства — [Транзакции API](https://docs.fastnear.com/ru/tx), [API переводов](https://docs.fastnear.com/ru/transfers), [NEAR Data API](https://docs.fastnear.com/ru/neardata) и [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv) — живут в собственных верхнеуровневых разделах. ## REST-семейства с одного взгляда | Семейство | Начните здесь, когда... | Переключайтесь, когда... | | --- | --- | --- | | [FastNear API](https://docs.fastnear.com/ru/api) | нужны индексированные представления аккаунтов, токенов, NFT, стейкинга или публичных ключей | требуется каноническая семантика RPC на уровне протокола | | [Транзакции API](https://docs.fastnear.com/ru/tx) | нужна история транзакций, квитанций, аккаунта или блока | нужны только события переводов или точное поведение на уровне RPC | | [API переводов](https://docs.fastnear.com/ru/transfers) | вопрос именно о движении NEAR или FT-токенов | вопрос расширяется до общей истории исполнения | | [NEAR Data API](https://docs.fastnear.com/ru/neardata) | нужны свежие оптимистичные или финализированные чтения семейства блоков | нужно точное каноническое продолжение по блоку или состоянию | | [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv) | нужна индексированная история «ключ–значение» или последнее индексированное состояние ключа | нужно точное текущее состояние контракта в цепочке | ## Для чего нужен сам `/api` Используйте раздел [FastNear API](https://docs.fastnear.com/ru/api), когда пользователю нужен ответ в продуктовой форме без сшивания сырых ответов узла: - сводки по аккаунту - балансы FT-токенов - активы NFT - позиции стейкинга - разрешение публичного ключа в аккаунт Хорошие стартовые страницы в этом сайдбаре: - [V1 Full Account View](https://docs.fastnear.com/ru/api/v1/account-full) - [V1 Account FT](https://docs.fastnear.com/ru/api/v1/account-ft) - [V1 Account NFT](https://docs.fastnear.com/ru/api/v1/account-nft) - [V1 Account Staking](https://docs.fastnear.com/ru/api/v1/account-staking) - [V1 Public Key](https://docs.fastnear.com/ru/api/v1/public-key) ## Когда не стоит стартовать с `/api` Не начинайте с этого сайдбара, когда: - основная задача — история; используйте [Транзакции API](https://docs.fastnear.com/ru/tx) или [API переводов](https://docs.fastnear.com/ru/transfers) - основная задача — опрос свежих блоков; используйте [NEAR Data API](https://docs.fastnear.com/ru/neardata) - ответ должен оставаться близким к каноническим формам запроса и ответа узла; используйте [Справочник RPC](https://docs.fastnear.com/ru/rpc) ## Для агентов Если вызывающая сторона — ИИ-агент и выбор всё ещё не ясен: - [Агенты на FastNear](https://docs.fastnear.com/ru/agents) - [Как выбрать подходящую поверхность](https://docs.fastnear.com/ru/agents/choosing-surfaces) --- ## Аутентификация и доступ - HTML-маршрут: https://docs.fastnear.com/ru/auth - Markdown-маршрут: https://docs.fastnear.com/ru/auth.md **Источник:** [https://docs.fastnear.com/ru/auth](https://docs.fastnear.com/ru/auth) # Аутентификация и доступ Один API-ключ FastNear работает и для [RPC](https://docs.fastnear.com/ru/rpc), и для [API-эндпоинтов](https://docs.fastnear.com/ru/api). Держите модель аутентификации простой: используйте один и тот же ключ везде и передавайте его либо через заголовок `Authorization: Bearer`, либо как URL-параметр `?apiKey=`. Та же модель действует и на обычных, и на архивных RPC-хостах. Хранение ключа в браузере для UI документации — это удобство документации, а не продовый шаблон. Получите ключ в [FastNear Dashboard](https://dashboard.fastnear.com) и отправляйте его в каждом запросе одним из способов ниже. Страницы с интерактивными примерами также поддерживают `Copy example URL`, чтобы делиться уже заполненными запросами. Общие URL примеров выполняются автоматически при загрузке, когда в них есть состояние операции, а сохранённые API-ключи и токены никогда не включаются в такие общедоступные URL документации. ## Через заголовок Authorization ```bash : "${FASTNEAR_API_KEY:?Задайте FASTNEAR_API_KEY в окружении перед запуском примера.}" curl "https://rpc.mainnet.fastnear.com" \ -H "Authorization: Bearer $FASTNEAR_API_KEY" \ -H "Content-Type: application/json" \ --data '{"method":"block","params":{"finality":"final"},"id":1,"jsonrpc":"2.0"}' ``` ## Через URL-параметр `?apiKey=` ```bash : "${FASTNEAR_API_KEY:?Задайте FASTNEAR_API_KEY в окружении перед запуском примера.}" curl "https://rpc.mainnet.fastnear.com?apiKey=$FASTNEAR_API_KEY" \ -H "Content-Type: application/json" \ --data '{"method":"block","params":{"finality":"final"},"id":1,"jsonrpc":"2.0"}' ``` --- ## KV FastData API - HTML-маршрут: https://docs.fastnear.com/ru/fastdata/kv - Markdown-маршрут: https://docs.fastnear.com/ru/fastdata/kv.md **Источник:** [https://docs.fastnear.com/ru/fastdata/kv](https://docs.fastnear.com/ru/fastdata/kv) # KV FastData API KV FastData API — это индексированное семейство «ключ–значение». Используйте его, когда уже известен контракт, аккаунт, `predecessor_id` или область ключа, которую нужно проинспектировать, и нужны индексированные строки без построения собственного слоя индексации хранилища. ## Базовые URL ```bash title="KV FastData API Mainnet" https://kv.main.fastnear.com ``` ```bash title="KV FastData API Testnet" https://kv.test.fastnear.com ``` ## Быстрый старт Если вы уже знаете один точный ключ, начните с последней индексированной строки и остановитесь, как только она ответит на вопрос. ```bash 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')" curl -s "https://kv.main.fastnear.com/v0/latest/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \ "${AUTH_HEADER[@]}" \ | jq '{ latest: ( .entries[0] | { current_account_id, predecessor_id, block_height, key, value } ) }' ``` Это самый узкий полезный KV-запрос: один точный ключ и одна последняя индексированная строка. Если следующий вопрос уже звучит как «как этот ключ менялся со временем?», переходите к [истории по точному ключу](https://docs.fastnear.com/ru/fastdata/kv/get-history-key) или к более подробным [примерам KV FastData](https://docs.fastnear.com/ru/fastdata/kv/examples). ## Используйте этот API, когда - нужно последнее индексированное состояние по одному ключу или известному семейству ключей - нужна история изменений по аккаунту, ключу или `predecessor_id` - нужны пакетные поиски по уже известным точным ключам - идёт отладка хранилища контракта в индексированном виде ## Не стартуйте здесь, когда - нужны балансы, активы токенов, NFT или сводки аккаунта - нужны свежие данные семейства блоков - нужно точное текущее состояние в цепочке с канонической семантикой RPC Используйте [FastNear API](https://docs.fastnear.com/ru/api) для представлений аккаунта более высокого уровня, [NEAR Data API](https://docs.fastnear.com/ru/neardata) для чтений семейства блоков и [Справочник RPC](https://docs.fastnear.com/ru/rpc) для канонической инспекции состояния контракта. ## Минимально полезные входы - сеть - идентификатор контракта или другая точная область — аккаунт, `predecessor_id` или точный ключ - нужно пользователю последнее индексированное значение или история изменений ## Выберите форму запроса - [Последнее по точному ключу](https://docs.fastnear.com/ru/fastdata/kv/get-latest-key) — когда уже известен один точный ключ - [История по точному ключу](https://docs.fastnear.com/ru/fastdata/kv/get-history-key) — когда нужна история изменений одного точного ключа - [Последнее по аккаунту](https://docs.fastnear.com/ru/fastdata/kv/latest-by-account) или [История по аккаунту](https://docs.fastnear.com/ru/fastdata/kv/history-by-account) — когда область привязана к аккаунту - [Всё по `predecessor_id`](https://docs.fastnear.com/ru/fastdata/kv/all-by-predecessor) или [История по `predecessor_id`](https://docs.fastnear.com/ru/fastdata/kv/history-by-predecessor) — когда правильная область — `predecessor_id` - [Пакетный поиск по ключам](https://docs.fastnear.com/ru/fastdata/kv/multi) — когда уже известно несколько точных ключей ## Нужен сценарий? Используйте [примеры KV FastData](https://docs.fastnear.com/ru/fastdata/kv/examples) для практических примеров: поиска по точному ключу, истории ключей, анализа по `predecessor_id` и перехода к каноническому RPC. ## Рабочий цикл по умолчанию 1. Выберите самую узкую область, подходящую под вопрос пользователя. 2. Оставайтесь внутри KV FastData, пока вопрос остаётся про индексированные данные «ключ–значение». 3. Используйте эндпоинты «последнего значения» для текущих индексированных представлений, а исторические эндпоинты — только когда пользователю нужны ответы с изменением во времени. 4. Остановитесь, как только индексированных строк уже достаточно для ответа на вопрос о хранилище. ## Аутентификация и доступность - Публичные индексированные чтения хранилища часто работают и без ключа. - Если вы стандартизируете один FastNear API-ключ на всех поверхностях FastNear, используйте здесь тот же формат через заголовок или параметр запроса. - Добавьте `?network=testnet`, чтобы переключить страницу на testnet-бэкенд там, где это поддерживается. - В ответах со списками поле `page_token` отсутствует, когда новых результатов больше нет. ## Расширяйтесь, только если - пользователю нужно точное текущее состояние в цепочке, а не индексированные данные хранилища - пользователю нужна каноническая семантика состояния контракта - индексированное представление хранилища — неподходящая абстракция для вопроса Тогда расширяйтесь на [Просмотр состояния контракта](https://docs.fastnear.com/ru/rpc/contract/view-state) в [Справочнике RPC](https://docs.fastnear.com/ru/rpc). ## Устранение неполадок ### Токен пагинации перестал работать Считайте значения `page_token` непрозрачными и переиспользуйте их только с тем же эндпоинтом и фильтрами. ### Мне нужны продуктовые балансы аккаунта, а не сырые строки «ключ–значение» Переходите на [FastNear API](https://docs.fastnear.com/ru/api). --- ## Примеры KV FastData - HTML-маршрут: https://docs.fastnear.com/ru/fastdata/kv/examples - Markdown-маршрут: https://docs.fastnear.com/ru/fastdata/kv/examples.md **Источник:** [https://docs.fastnear.com/ru/fastdata/kv/examples](https://docs.fastnear.com/ru/fastdata/kv/examples) ## Примеры Все shell-примеры ниже работают на публичных KV FastData-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке. ### Проверить один точный ключ и сразу посмотреть его историю Если контракт, `predecessor_id` и точный ключ уже известны, начинайте с узкого запроса. `latest` отвечает на вопрос о текущем состоянии, а `history` показывает, менялась ли именно эта строка со временем. ```bash CURRENT_ACCOUNT_ID=social.near PREDECESSOR_ID=james.near KEY='graph/follow/sleet.near' 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?apiKey=${FASTNEAR_API_KEY:-}")" 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?apiKey=${FASTNEAR_API_KEY:-}" \ | jq '{writes: [.entries[] | {block_height, value}]}' ``` Для точного ключа вроде этого follow-edge `latest` даёт текущее индексированное значение одной строкой, а `history` показывает, была ли запись однократной или переключалась со временем. Начинайте отсюда, когда путь в storage уже известен; расширяйтесь до выборок по `predecessor_id` только тогда, когда нужно не доказательство, а поиск. ### Посмотреть индексированные записи одного `predecessor_id` и сузиться до изменившегося ключа `all-by-predecessor` возвращает последние индексированные записи одного аккаунта по каждому контракту, которого он касался. Выберите интересный ключ и прогоните его через `history`, чтобы увидеть, как эта строка менялась со временем. ```bash PREDECESSOR_ID=jemartel.near FIRST="$(curl -s "https://kv.main.fastnear.com/v0/all/$PREDECESSOR_ID?apiKey=${FASTNEAR_API_KEY:-}" \ -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](https://docs.fastnear.com/ru/tx/examples#%D1%83-%D0%BC%D0%B5%D0%BD%D1%8F-%D0%BE%D0%B4%D0%B8%D0%BD-%D1%85%D0%B5%D1%88-%D1%82%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D0%B8-%D1%87%D1%82%D0%BE-%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%BE%D1%88%D0%BB%D0%BE), если нужна полная история транзакции за любой записью. Поднимите самую свежую строку и прогоните её через `history`: ```bash PREDECESSOR_ID=jemartel.near FIRST="$(curl -s "https://kv.main.fastnear.com/v0/all/$PREDECESSOR_ID?apiKey=${FASTNEAR_API_KEY:-}" \ -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?apiKey=${FASTNEAR_API_KEY:-}" \ | jq '{entries: [.entries[] | {block_height, value}]}' ``` Для строки `account_id` `history` возвращает одну запись на блоке `185965311` со значением `"jemartel.near:mainnet"` — подтверждение идентичности держится, стабильно с того блока. KV сохраняет каждую запись одинаково: у тихого ключа — одна строка, у активного — много, форма та же, без агрегации. ## Частые ошибки - Начинать с широких выборок по аккаунту или предшественнику, когда точный ключ уже известен. - Использовать KV FastData, когда пользователю на самом деле нужны балансы или активы. - Путать индексированную историю с точным текущим состоянием в цепочке. - Переиспользовать токен пагинации или менять фильтры прямо во время просмотра. ## Связанные страницы - [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv) - [RPC Reference](https://docs.fastnear.com/ru/rpc) - [FastNear API](https://docs.fastnear.com/ru/api) - [Choosing the Right Surface](https://docs.fastnear.com/ru/agents/choosing-surfaces) - [Agent Playbooks](https://docs.fastnear.com/ru/agents/playbooks) --- ## Руководство по интернационализации - HTML-маршрут: https://docs.fastnear.com/ru/internationalization - Markdown-маршрут: https://docs.fastnear.com/ru/internationalization.md **Источник:** [https://docs.fastnear.com/ru/internationalization](https://docs.fastnear.com/ru/internationalization) Это руководство описывает локализационный фреймворк в `builder-docs`. Русская локаль была первой полной реализацией, но теперь это уже не отдельный разовый проект. Следующие локали должны использовать тот же каркас: - общий реестр локалей - собственные для локали файлы glossary и policy - безопасный bootstrap без перезаписи вычитанного контента - редакционный QA по волнам - маршрутизация, SEO и discovery-артефакты с учётом локали - локализованные FastNear-оверлеи без изменения сгенерированного английского источника ## Цели Этот фреймворк нужен, чтобы следующие локали были в основном задачей контента, а не инфраструктуры. Базовые правила такие: - английский остаётся локалью по умолчанию на `/` - локализованные docs публикуются по `//...` - канонические технические идентификаторы не переводятся - slug - пути эндпоинтов - ключи payload - имена свойств схем - operation ID - локализация сгенерированного контента остаётся оверлеем, а не правкой vendored-данных на месте ## Основные файлы ### Реестр локалей Поддерживаемые локали находятся в `src/data/localeRegistry.json`. Этот реестр является общим источником истины для: - конфигурации локалей Docusaurus - locale-aware route helpers - bootstrap и audit-скриптов - клиентских метаданных для скрытых разделов ### Глоссарий локали У каждой недефолтной локали есть `i18n//glossary.yml`. Глоссарий задаёт терминологический контракт и для людей, и для скриптов. Благодаря этому решения о переводе не расползаются по JS-массивам и prose-документам. Текущая схема: - `preserve` Термины, которые должны оставаться в канонической форме, например `RPC`, `API`, `JSON-RPC`, `GET`, `POST`, `FastNear`, `mainnet`. - `translate` Предпочтительные точные и словарные замены для повторяющихся UI- и docs-фраз. - `transliterate` Предпочтительные транслитерации для технического жаргона, если это лучше, чем оставлять латиницу. - `notes` Человеческие примечания с редакционным смыслом, которые не нужны скриптам напрямую. ### Policy-файл локали У каждой недефолтной локали есть и `i18n//translation-policy.yml`. Этот файл описывает редакционный объём и правила процесса: - `waves.wave1` Обязательные для ship docs и page model IDs. Это редакционная планка, которую проверяет CI. - `waves.wave2` Более широкий публичный охват для следующего прохода. - `hiddenSections` Префиксы маршрутов и путей docs, которые намеренно остаются вне редакционной планки, пока раздел не станет публичным. - `bootstrap` Локальные route labels и JSON overrides, которые использует scaffold-поток. Для русской локали первым таким скрытым разделом является `/transaction-flow`. ## Общие команды Теперь фреймворк использует generic-команды вместо русско-специфичных скриптов. ```bash yarn bootstrap:i18n --locale yarn bootstrap:i18n:reseed --locale yarn audit:i18n --locale --wave <1|2|all> yarn audit:i18n:all ``` Что они делают: - `bootstrap:i18n` Безопасно обновляет scaffold и добавляет отсутствующие файлы и ключи, не перезаписывая вычитанный контент. - `bootstrap:i18n:reseed` Явно разрушительный режим для случая, когда локаль нужно полностью пересоздать из bootstrap-эвристик. - `audit:i18n` Glossary-aware редакционный QA для одной локали и выбранной волны. - `audit:i18n:all` CI-ориентированная проверка `wave1` для всех недефолтных локалей. Русские совместимые алиасы всё ещё поддерживаются: ```bash yarn bootstrap:i18n:ru yarn bootstrap:i18n:ru:reseed yarn audit:i18n:ru ``` Но каноническим интерфейсом теперь считаются generic-команды. ## Как работает bootstrap `scripts/bootstrap-i18n.js` по умолчанию ведёт себя безопасно. Для локали вроде `ru` он: - запускает `write-translations --locale ru` - создаёт отсутствующие docs в `i18n/ru/docusaurus-plugin-content-docs/current` - сохраняет уже вычитанные локальные docs - добавляет отсутствующие ключи рантайма в locale JSON catalogs - обновляет `src/data/fastnearTranslations..json`, не выбрасывая уже вычитанные оверлеи - применяет локальные route labels и JSON overrides из `translation-policy.yml` То есть свежесть scaffold и ручная редактура больше не конфликтуют. ## Как работает audit `scripts/audit-i18n.js` — это лёгкий редакционный барьер качества. Он читает: - glossary локали для списка допустимых literal-терминов - translation policy для границ волн и исключений скрытых разделов - docs локали в `i18n//...` - каталоги переводов рантайма для локали - FastNear overlay catalog локали Проверка ищет подозрительные английские остатки, но уважает допустимые literal-термины: - названия протоколов - HTTP verbs - продуктовые имена - code identifiers - канонические фрагменты путей Это практический QA, а не попытка отполировать весь длинный хвост в первый же день. ## Политика волн Каждая локаль должна проходить через одну и ту же редакционную модель. ### Wave 1 Wave 1 — это shipping bar. Сюда входят: - главная страница и ключевые decision pages - основные входные точки для auth, API, RPC и transactions - самые заметные generated operation wrappers и overlay entries - живые строки интерфейса рантайма на этих страницах Только Wave 1 проверяется в CI. ### Wave 2 Wave 2 — это расширение публичной поверхности. Сюда входят: - дополнительные leaf docs - overview-страницы из длинного хвоста - дополнительные generated overlay entries - менее приоритетный, но всё ещё публичный текст рантайма Wave 2 важен, но специально остаётся неблокирующим. ### Long tail Long-tail работа — это дальнейшая полировка: - maintainer docs - редкие leaf pages - редко видимые theme strings - малопосещаемые generated pages Эта работа должна продолжаться, но не должна блокировать здоровый выпуск локали. ## Скрытые разделы Скрытые разделы должны быть явно помечены, чтобы широкое файловое покрытие не принимали за редакционную готовность. Источник истины — `translation-policy.yml.hiddenSections`. Эти префиксы влияют на две вещи: - исключаются из обязательной `wave1`-готовности - на страницах этих разделов показывается заметный баннер, который объясняет, что перевод и редакторская полировка намеренно отложены до публикации раздела Сейчас по этому правилу живёт `/transaction-flow`. ## Рантайм, маршрутизация и discovery Фреймворк покрывает не только prose, но и остальные поверхности, которые будущие локали должны наследовать автоматически. Важные файлы: - `docusaurus.config.js` - `src/utils/localizedRoutes.js` - `src/utils/fastnearLocalization.js` - `scripts/generate-ai-surfaces.js` - `plugins/finalizeLocalizedStaticAssets.cjs` Вместе они обеспечивают: - корректную работу locale dropdown и locale-aware routing - сохранение активной локали для внутренних ссылок - локализацию FastNear overlay без изменения source page models - выпуск локализованных Markdown mirrors, `llms.txt` и site graph из правильного корня локали - локализованные URL и `inLanguage` в structured data и SEO ## Лёгкий CI-барьер Locale-quality gate намеренно сделан небольшим. Обязательный workflow запускает: ```bash yarn audit:i18n:all yarn build node scripts/audit-indexing-surface.js ``` Этого достаточно, чтобы защитить: - качество `wave1` - корректность сборки - корректность discovery и indexing Playwright, relevance scoring и более тяжёлые редакционные проверки сюда специально не включены. ## Как добавить новую локаль Используйте такой чеклист: 1. Добавьте локаль в `src/data/localeRegistry.json`. 2. Создайте `i18n//glossary.yml`. 3. Создайте `i18n//translation-policy.yml`. 4. Запустите `yarn bootstrap:i18n --locale `. 5. Вычитайте `i18n//code.json` и дерево docs. 6. Добавьте `src/data/fastnearTranslations..json` для generated FastNear overlay. 7. Запустите `yarn audit:i18n --locale --wave 1`. 8. Запустите `yarn build` и `node scripts/audit-indexing-surface.js`. 9. Добавьте браузерные smoke-checks только там, где локаль вносит новое поведение рантайма. Если идти по этому списку, следующие локали будут в основном редакционной задачей поверх уже готового фреймворка. --- ## NEAR Data API - HTML-маршрут: https://docs.fastnear.com/ru/neardata - Markdown-маршрут: https://docs.fastnear.com/ru/neardata.md **Источник:** [https://docs.fastnear.com/ru/neardata](https://docs.fastnear.com/ru/neardata) # NEAR Data API NEAR Data API — это поверхность для недавних блоков и шардов. Используйте её, когда нужны свежие срезы блоков, мониторинг активности контракта, вспомогательные маршруты с перенаправлением или сравнение оптимистичных и финализированных чтений без превращения продукта в потоковый API. ## Базовые URL ```bash title="NEAR Data API Mainnet" https://mainnet.neardata.xyz ``` ```bash title="NEAR Data API Testnet" https://testnet.neardata.xyz ``` ## Лучше всего подходит для - опроса недавних финализированных и оптимистичных блоков; - обнаружения того, появился ли живой контракт в недавнем блоке и изменил ли он состояние; - сравнения оптимистичного сигнала с финализированным подтверждением; - проверки одного недавнего шарда, когда уже известно, какой блок важен. ## Когда его не стоит использовать - Используйте [Справочник RPC](https://docs.fastnear.com/ru/rpc) для канонических методов JSON-RPC и отправки транзакций. - Используйте [Снапшоты](https://docs.fastnear.com/ru/snapshots) для поднятия инфраструктуры, а не для чтения живых данных. ## Аутентификация и доступность - Тот же FastNear API-ключ работает и здесь; на публичном трафике на поддерживаемых маршрутах по-прежнему можно использовать необязательный параметр запроса `apiKey`. - Неверный API-ключ возвращает `401` ещё до того, как сработают вспомогательные перенаправления, поэтому при отладке с неверным ключом канонический URL не будет виден. - Добавьте `?network=testnet`, чтобы переключить совместимые страницы на значения по умолчанию для testnet. ## С чего обычно начинают - [Перенаправление на последний финализированный блок](https://docs.fastnear.com/ru/neardata/last-block-final) и [Перенаправление на последний оптимистичный блок](https://docs.fastnear.com/ru/neardata/last-block-optimistic) — когда нужно быстро узнать самый новый недавний блок. - [Финализированный блок по высоте](https://docs.fastnear.com/ru/neardata/block) — когда нужен один недавний гидратированный блок с уже приложенными данными по шардам. - [Шард блока](https://docs.fastnear.com/ru/neardata/block-shard) — когда недавний блок уже показал нужный шард и его надо разобрать глубже. - [Заголовки блока](https://docs.fastnear.com/ru/neardata/block-headers) — когда важнее движение головы цепочки и финальности, а не широкий блоковый документ. ## Нужен сценарий? Используйте [примеры NEAR Data API](https://docs.fastnear.com/ru/neardata/examples) для практических примеров: обнаружения активности контракта, сравнения оптимистичных и финализированных наблюдений, а также проверки изменений на уровне шарда. ## Устранение неполадок ### Некоторые эндпоинты перенаправляют на канонический URL вместо прямого возврата результата Это ожидаемое поведение для вспомогательных маршрутов с перенаправлением. Если клиенту нужен итоговый ресурс, переходите по канонической цели. ### Ответ по блоку равен `null` Обычно это означает, что запрошенной высоты нет в этой сети или запрос вышел за ожидаемый диапазон свежести либо архива. ### Нужна потоковая передача, а не опрос Эта поверхность предназначена для чтения через опрос почти в реальном времени. Не позиционируйте её как продукт на основе WebSocket или вебхуков. --- ## Примеры NEAR Data - HTML-маршрут: https://docs.fastnear.com/ru/neardata/examples - Markdown-маршрут: https://docs.fastnear.com/ru/neardata/examples.md **Источник:** [https://docs.fastnear.com/ru/neardata/examples](https://docs.fastnear.com/ru/neardata/examples) ## Примеры NEAR Data возвращает каждый блок полностью гидратированным одним JSON-документом — header плюс per-shard chunks, receipts, результаты исполнения и state changes, — так что один `curl` уже даёт всё необходимое, чтобы отфильтровать нужный контракт без второго запроса. Все shell-примеры ниже работают на публичных NEAR Data-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке. ### На каком блоке NEAR сейчас? `/v0/last_block/final` отдаёт 302-редирект на текущий финализированный блок. Прежде чем фильтровать по конкретному контракту, полезно увидеть, как выглядит один блок на уровне протокола: транзакции приходят с разбивкой по shard, поэтому общее число транзакций в блоке — это сумма по shards, а не одно поле верхнего уровня. ```bash curl -sL "https://mainnet.neardata.xyz/v0/last_block/final?apiKey=${FASTNEAR_API_KEY:-}" \ | jq '{ height: .block.header.height, timestamp_nanosec: .block.header.timestamp_nanosec, txs_per_shard: [.shards[] | {shard_id, tx_count: (.chunk.transactions | length)}], total_txs: ([.shards[].chunk.transactions[]?] | length) }' ``` Живой блок показывает 9 shards и горсть транзакций, распределённых по ним — большинство shards в любом блоке пустые, а активность концентрируется на тех shards, где живут загруженные контракты. `timestamp_nanosec` — это Unix-время в наносекундах (делите на 1e9, чтобы получить секунды). С этим одним вызовом у вас уже есть всё необходимое для дальнейшего копания — примеры фильтрации ниже просто применяют jq к тому же ответу. ### Был ли мой контракт затронут в последнем финализированном блоке? `/v0/last_block/final` отдаёт 302-редирект на текущий финализированный блок. Контракт может проявиться либо в `transactions` chunk (когда он `receiver_id`), либо в `receipts` (когда прилетает cross-shard-вызов), поэтому один проход jq по shards покрывает оба случая. ```bash TARGET_CONTRACT=intents.near curl -sL "https://mainnet.neardata.xyz/v0/last_block/final?apiKey=${FASTNEAR_API_KEY:-}" \ | jq --arg contract "$TARGET_CONTRACT" '{ height: .block.header.height, contract: $contract, touched_shards: [ .shards[] | { shard_id, txs: [.chunk.transactions[]? | select(.transaction.receiver_id == $contract) | .transaction.hash], receipts: [.chunk.receipts[]? | select(.receiver_id == $contract) | .receipt_id] } | select((.txs | length) + (.receipts | length) > 0) ] }' ``` `touched_shards: []` — полный ответ для тихого блока. Непустой список называет shards, где контракт появился, и отдаёт конкретные `tx`-хеши или `receipt_id` — передавайте хеш в [Transactions API](https://docs.fastnear.com/ru/tx), когда нужна человекочитаемая история. Receipts без парных `txs` — это нормально: cross-contract-вызов приходит как incoming receipt в этом блоке, даже если исходная транзакция была раньше. ### Увидел ли я активность в optimistic-режиме, и догнала ли её finality? Optimistic-блоки ходят по `/v0/block_opt/{height}` примерно на секунду впереди `/v0/block/{height}`. Цикл мониторинга может действовать по optimistic-сигналу и ожидать, что тот же ответ придёт на финализированный эндпоинт через один блок — если только стресс сети не расширит разрыв, и тогда финализированный fetch вернёт `null`, а вы подождёте. ```bash TARGET_CONTRACT=intents.near count_touches() { jq --arg contract "$1" ' [.shards[] | ([.chunk.transactions[]? | select(.transaction.receiver_id == $contract)] | length) + ([.chunk.receipts[]? | select(.receiver_id == $contract)] | length)] | add // 0' } OPT_LOCATION="$( curl -s -D - -o /dev/null "https://mainnet.neardata.xyz/v0/last_block/optimistic?apiKey=${FASTNEAR_API_KEY:-}" \ | awk 'tolower($1) == "location:" {print $2}' | tr -d '\r' )" OPT_PATH="${OPT_LOCATION%%\?*}" OPT_HEIGHT="${OPT_PATH##*/}" echo "optimistic @ $OPT_HEIGHT: $(curl -s "https://mainnet.neardata.xyz$OPT_PATH?apiKey=${FASTNEAR_API_KEY:-}" | count_touches "$TARGET_CONTRACT") touches" FINAL="$(curl -s "https://mainnet.neardata.xyz/v0/block/$OPT_HEIGHT?apiKey=${FASTNEAR_API_KEY:-}")" if [ "$(printf '%s' "$FINAL" | jq 'type')" = '"null"' ]; then echo "finalized @ $OPT_HEIGHT: not caught up yet" else echo "finalized @ $OPT_HEIGHT: $(printf '%s' "$FINAL" | count_touches "$TARGET_CONTRACT") touches" fi ``` На здоровом mainnet оба счётчика совпадают в пределах секунды. Ценность — в самом шаблоне: optimistic-поток даёт ответ, на который можно реагировать сразу, а финализированный приходит через блок как надёжное подтверждение. ### Какой shard действительно изменил состояние моего контракта? В большинстве финализированных блоков нет мутации состояния ни для одного конкретного контракта — активность разрежена и привязана к shard. Идите назад от финализированной головы, пока состояние контракта реально не изменится, и откройте этот shard для payload мутации. Вызов уровня блока говорит, *на каком* shard это случилось; вызов уровня shard — *как*. ```bash TARGET_CONTRACT=intents.near HEAD="$(curl -sL "https://mainnet.neardata.xyz/v0/last_block/final?apiKey=${FASTNEAR_API_KEY:-}" | jq '.block.header.height')" FOUND_HEIGHT="" FOUND_SHARD="" for OFFSET in $(seq 0 15); do H=$((HEAD - OFFSET)) SHARD="$(curl -s "https://mainnet.neardata.xyz/v0/block/$H?apiKey=${FASTNEAR_API_KEY:-}" \ | jq -r --arg contract "$TARGET_CONTRACT" ' .shards[] | select([.state_changes[]? | select(.change.account_id? == $contract)] | length > 0) | .shard_id ' | head -1)" if [ -n "$SHARD" ]; then FOUND_HEIGHT=$H; FOUND_SHARD=$SHARD break fi done if [ -z "$FOUND_HEIGHT" ]; then echo "no state mutation for $TARGET_CONTRACT in the last 16 finalized blocks" else curl -s "https://mainnet.neardata.xyz/v0/block/$FOUND_HEIGHT/shard/$FOUND_SHARD?apiKey=${FASTNEAR_API_KEY:-}" \ | jq --arg contract "$TARGET_CONTRACT" --argjson height "$FOUND_HEIGHT" --argjson shard_id "$FOUND_SHARD" '{ height: $height, shard_id: $shard_id, state_changes: [.state_changes[] | select(.change.account_id? == $contract) | {type, cause: (.cause | keys[0])}][0:3], execution_outcomes: [.receipt_execution_outcomes[] | select(.execution_outcome.outcome.executor_id == $contract) | {receipt_id: .execution_outcome.id, status: (.execution_outcome.outcome.status | keys[0])}][0:3] }' fi ``` На mainnet `intents.near` живёт на shard 7, поэтому обход назад обычно попадает в цель за несколько блоков. Payload shard называет конкретные типы state-change (`account_update`, `data_update` и т. п.) и результаты receipt, которые их породили, — shard-локальное доказательство без догадок. Для менее активных контрактов расширьте диапазон `OFFSET`. ## Когда расширить поверхность - Используйте [Transactions API](https://docs.fastnear.com/ru/tx), когда у вас уже есть `tx_hash` и нужна человекочитаемая история транзакции. - Используйте [RPC Reference](https://docs.fastnear.com/ru/rpc), когда следующий вопрос касается точной протокольной семантики receipt или блока. - Используйте [Block Headers](https://docs.fastnear.com/ru/neardata/block-headers), когда нужна только динамика head/finality, а не проверка contract-touch. --- ## redocly-config - HTML-маршрут: https://docs.fastnear.com/ru/redocly-config - Markdown-маршрут: https://docs.fastnear.com/ru/redocly-config.md **Источник:** [https://docs.fastnear.com/ru/redocly-config](https://docs.fastnear.com/ru/redocly-config) # Заметки о прежнем бэкенде Redocly Этот документ фиксирует текущую роль прежнего бэкенда Redocly в `mike-docs`. ## Текущее состояние Публичная документация больше не использует Redocly как основной рантайм. - Публичные страницы API и RPC рендерятся напрямую в `builder-docs`. - Канонические маршруты `/rpcs/...` и `/apis/...` хостятся в `builder-docs`. - `mike-docs` сохраняет Redocly только для проверок, сверки паритета и завершающей миграционной очистки. ## Где Redocly всё ещё нужен Используйте путь через Redocly только тогда, когда нужно проверить: - поведение `@theme/ext/configure.ts`; - параметры, влияющие на форму запроса, такие как `preset`, `body`, `path.*`, `query.*` и `header.*`; - локальный паритет между прямым рантаймом и прежним порталом. Локальные команды: ```bash cd /Users/mikepurvis/near/mike-docs npm run preview:headless npm run preview:portal ``` ## Текущая схема аутентификации Общий браузерный контракт аутентификации такой: 1. `?apiKey=` 2. `localStorage.fastnear:apiKey` 3. legacy `localStorage.fastnear_api_key` Bearer-токены по-прежнему используют: 1. `?token=` 2. `localStorage.fastnear:bearer` ## Текущие источники истины Для актуальных деталей реализации используйте: - `mike-docs/README.md` - `mike-docs/INTEGRATION_GUIDE.md` - `builder-docs/CLAUDE.md` --- ## Справочник RPC - HTML-маршрут: https://docs.fastnear.com/ru/rpc - Markdown-маршрут: https://docs.fastnear.com/ru/rpc.md **Источник:** [https://docs.fastnear.com/ru/rpc](https://docs.fastnear.com/ru/rpc) # Справочник RPC FastNear RPC даёт прямой доступ по JSON-RPC к узлам NEAR для запросов состояния, проверки блоков и чанков, отправки транзакций, чтения данных валидаторов и диагностики протокола. ## Базовые URL Обычные RPC хранят самые свежие эпохи состояния и подходят для большинства прикладных запросов по умолчанию: ```bash title="Обычный RPC mainnet" https://rpc.mainnet.fastnear.com ``` ```bash title="Обычный RPC testnet" https://rpc.testnet.fastnear.com ``` Архивные RPC открывают всю историю цепочки, когда нужны старые блоки, квитанции или историческое состояние контракта: ```bash title="Архивный RPC mainnet" https://archival-rpc.mainnet.fastnear.com ``` ```bash title="Архивный RPC testnet" https://archival-rpc.testnet.fastnear.com ``` ## С чего обычно начинают - [`view_account`](https://docs.fastnear.com/ru/rpc/account/view-account), [`view_access_key`](https://docs.fastnear.com/ru/rpc/account/view-access-key), [`view_access_key_list`](https://docs.fastnear.com/ru/rpc/account/view-access-key-list) — запросы по аккаунту и ключам доступа. - [`block`](https://docs.fastnear.com/ru/rpc/block/block-by-id) — поиск по высоте или хешу; [`block_effects`](https://docs.fastnear.com/ru/rpc/block/block-effects) — изменения внутри блока. - [`call_function`](https://docs.fastnear.com/ru/rpc/contract/call-function), [`view_code`](https://docs.fastnear.com/ru/rpc/contract/view-code), [`view_state`](https://docs.fastnear.com/ru/rpc/contract/view-state) — работа с контрактами. - [`status`](https://docs.fastnear.com/ru/rpc/protocol/status), [`health`](https://docs.fastnear.com/ru/rpc/protocol/health), [`gas_price`](https://docs.fastnear.com/ru/rpc/protocol/gas-price) — диагностика узла и протокола. - [`send_tx`](https://docs.fastnear.com/ru/rpc/transaction/send-tx) — отправка транзакций; [`tx`](https://docs.fastnear.com/ru/rpc/transaction/tx-status) — статус исполнения. - [`validators`](https://docs.fastnear.com/ru/rpc/validators/validators-current) — валидаторы текущей эпохи. ## Нужен сценарий? Используйте [примеры RPC](https://docs.fastnear.com/ru/rpc/examples) для практических примеров: точных проверок состояния, анализа блоков, view-вызовов контрактов и отправки транзакций с подтверждением. ## Используйте RPC, когда - нужны канонические формы запросов и ответов из протокола; - важно поведение настоящего узла для запросов состояния и поиска блоков; - требуется отправка транзакций или проверка результатов исполнения; - нужен самый низкоуровневый доступ до перехода к индексированным или продуктовым представлениям. ## Не используйте RPC, когда - нужен единый вызов для получения балансов, NFT, позиций стейкинга или поиска по публичному ключу; - нужна индексированная история транзакций по аккаунту вместо опроса узлов и сшивания ответов; - простота продуктового интерфейса важнее прямого контроля над протоколом. В этих случаях переходите к индексированным REST-семействам, например [FastNear API](https://docs.fastnear.com/ru/api), [Транзакции API](https://docs.fastnear.com/ru/tx) или [NEAR Data API](https://docs.fastnear.com/ru/neardata). ## Аутентификация и лимиты - API-ключи FastNear необязательны; публичные эндпоинты работают и без них. - Для повышенных лимитов или единой аутентифицированной модели используйте [Аутентификацию и доступ](https://docs.fastnear.com/ru/auth): один и тот же ключ работает и на обычных, и на архивных RPC-хостах и передаётся либо в заголовке `Authorization: Bearer`, либо в URL-параметре `?apiKey=`. ## Общие интерактивные примеры - Используйте `Copy example URL` на любой интерактивной RPC-странице, чтобы поделиться выбранной сетью, вкладкой примера, финальностью и заполненными входными данными. - Общие URL примеров выполняются автоматически при загрузке, когда в них есть состояние операции. - Сохранённые API-ключи и токены никогда не включаются в такие общедоступные URL документации. ## Устранение неполадок ### Запрос работает локально, но падает на продовом контуре Проверьте, не полагались ли вы на то, что интерфейс документации автоматически подставляет API-ключ. Продовые бэкенды должны передавать учётные данные явно и не зависеть от хранения в браузере. ### Мне нужно более старое состояние, чем возвращает обычный RPC Переключитесь с обычного RPC-эндпоинта на архивный RPC-эндпоинт. Один и тот же FastNear API-ключ и один и тот же способ передачи через заголовок или параметр запроса работают на обоих хостах. ### Мне нужен более простой ответ, чем даёт JSON-RPC Обычно это означает, что нужно индексированное REST-семейство, а не сырой RPC. Воспользуйтесь страницей выбора поверхности и подберите более высокий уровень абстракции. --- ## Примеры RPC - HTML-маршрут: https://docs.fastnear.com/ru/rpc/examples - Markdown-маршрут: https://docs.fastnear.com/ru/rpc/examples.md **Источник:** [https://docs.fastnear.com/ru/rpc/examples](https://docs.fastnear.com/ru/rpc/examples) # Примеры RPC Начинайте с RPC-метода, который отвечает на вопрос. Используйте `tx`, чтобы отследить включение и финальность по хешу транзакции, и расширяйте поверхность только когда нужны дерево receipts, сырой state или трассировка на уровне shard. Все shell-примеры ниже работают на публичных RPC-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке. ## Состояние аккаунта ### Показать баланс и storage аккаунта на finality `view_account` — канонический RPC-запрос для текущего состояния аккаунта. Один вызов возвращает свободный баланс, сумму, заблокированную в валидаторском стейке или lockup-контракте, использованное storage и блок, на котором было сделано чтение. `finality: "final"` гарантирует, что вы читаете стабильное состояние, а не optimistic-представление. ```bash ACCOUNT_ID=root.near curl -s "https://rpc.mainnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg account_id "$ACCOUNT_ID" '{ jsonrpc:"2.0",id:"fastnear",method:"query", params:{request_type:"view_account",account_id:$account_id,finality:"final"} }')" \ | jq '.result | {amount, locked, storage_usage, block_height, block_hash}' ``` Для `root.near` это возвращает `amount` (yoctoNEAR в свободной части), `locked: "0"` (ничего в валидаторском стейке или lockup-контракте) и `storage_usage: 28677` — примерно 28.7 КБ on-chain-состояния. Пара `block_height`/`block_hash` фиксирует точку чтения; чтобы прочитать несколько аккаунтов *на одном и том же* блоке, переиспользуйте возвращённый `block_hash` как `block_id` в последующих запросах. ## Включение транзакции и финальность ### Отследить транзакцию от хеша до финальности Есть tx hash? Опрашивайте `tx` с минимальным порогом `wait_until`, который отвечает на ваш вопрос. ```bash TX_HASH=CVyG2xLJ6fuKCtULAxMnWTh2GL5ey2UUiTcgYT3M6Pow SIGNER_ACCOUNT_ID=mike.testnet curl -s "https://archival-rpc.testnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg tx_hash "$TX_HASH" --arg signer_id "$SIGNER_ACCOUNT_ID" '{ jsonrpc: "2.0", id: "fastnear", method: "tx", params: {tx_hash: $tx_hash, sender_account_id: $signer_id, wait_until: "INCLUDED"} }')" \ | jq '{ asked: "INCLUDED", final_execution_status: .result.final_execution_status, status_class: (.result.status | keys[0]), receipts_outcome_count: (.result.receipts_outcome | length) }' ``` Для зафиксированной исторической транзакции (1-yocto self-transfer от `mike.testnet`) ответ возвращается как `FINAL`, хотя мы спрашивали `INCLUDED`. Правило такое: **`wait_until` — это минимальный порог, а не целевой**. Узел возвращает тот этап, которого транзакция действительно достигла: для исторической всегда `FINAL`; для полётной выбирайте `INCLUDED`, когда достаточно включения и нужен самый ранний возврат, или `FINAL`, когда реальный вопрос звучит «завершилась ли?». Два перехода отсюда: - **Отправляете в реальном времени?** [`broadcast_tx_async`](https://docs.fastnear.com/ru/rpc/transaction/broadcast-tx-async) возвращает хеш сразу после того, как узел принял payload — отслеживайте отдельно через `tx`. [`send_tx`](https://docs.fastnear.com/ru/rpc/transaction/send-tx) одновременно отправляет и блокируется на выбранном `wait_until` в одном запросе. - **Нужно дерево receipts, а не только outcome?** `tx` уже включает `receipts_outcome`; расширяйте поверхность до [`EXPERIMENTAL_tx_status`](https://docs.fastnear.com/ru/rpc/transaction/experimental-tx-status) только тогда, когда дополнительно нужны сырые записи receipts. ## Инспекция блока на tip ### Описать первый action первой транзакции на текущем tip Блок NEAR — это header поверх N shard chunks, а не плоский список транзакций. `block` возвращает headers chunks; сами транзакции лежат уровнем ниже, внутри `chunk`. Шортката `block → tx` нет — блок не несёт хешей транзакций, поэтому `tx` (которому нужен hash) в этой цепочке не участвует. Канонический проход — `status` → `block` → `chunk`, пропуская пустые chunks по дороге. Большинство chunks в tip-блоке пустые — их `tx_root` равен сентинелу `11111111111111111111111111111111`, поэтому селектору нужен фильтр. ```bash EMPTY_TX_ROOT=11111111111111111111111111111111 BLOCK_HASH="$(curl -s "https://rpc.mainnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" -H 'content-type: application/json' \ --data '{"jsonrpc":"2.0","id":"fastnear","method":"status","params":[]}' \ | jq -r '.result.sync_info.latest_block_hash')" CHUNK_HASH="$(curl -s "https://rpc.mainnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" -H 'content-type: application/json' \ --data "$(jq -nc --arg block_hash "$BLOCK_HASH" '{ jsonrpc:"2.0",id:"fastnear",method:"block",params:{block_id:$block_hash} }')" \ | jq -r --arg empty "$EMPTY_TX_ROOT" ' first(.result.chunks[] | select(.tx_root != $empty) | .chunk_hash) // empty')" if [ -z "$CHUNK_HASH" ]; then echo "tip block had no transactions in any chunk — rerun on the next head" else curl -s "https://rpc.mainnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" -H 'content-type: application/json' \ --data "$(jq -nc --arg chunk_hash "$CHUNK_HASH" '{ jsonrpc:"2.0",id:"fastnear",method:"chunk",params:{chunk_id:$chunk_hash} }')" \ | jq '{ chunk_shard: .result.header.shard_id, chunk_height: .result.header.height_included, first_tx: { hash: .result.transactions[0].hash, signer_id: .result.transactions[0].signer_id, receiver_id: .result.transactions[0].receiver_id }, first_action: ( .result.transactions[0].actions[0] as $a | if ($a | type) == "string" then {kind: $a} elif $a.FunctionCall then {kind: "FunctionCall", method_name: $a.FunctionCall.method_name} else {kind: ($a | keys[0])} end ) }' fi ``` Живой запуск возвращает первый chunk текущего tip, первую транзакцию и первый action — часто это `FunctionCall` на контракте моста или tg-бота (mainnet активен). Tip-блок может быть валидным и при этом не содержать транзакций ни в одном chunk — поэтому ветка с пустым результатом остаётся; это честный ответ для тихого момента сети. ## Механика аккаунтов и ключей ### Определить function-call-ключи, которые стоит удалить Каждый кошелёк, шлюз и dapp-сессия, в которую вы заходите, обычно оставляет за собой function-call-ключ. Большинством из них вы больше никогда не воспользуетесь. `view_access_key_list` возвращает все ключи аккаунта; структура nonce показывает, какие из них устарели. Новые ключи стартуют с `block_height * 10^6`, и значение инкрементируется на единицу за каждую транзакцию, которую ключ подписывает, поэтому: - `nonce / 10^6` → блок, в котором ключ был добавлен - `nonce % 10^6` → сколько раз ключ был использован Любой ключ с `tx_count: 0` был создан и ни разу не использовался — самый очевидный кандидат на очистку. Следующий по порядку — ключи, заскоупленные на контракт, с которым вы больше не работаете. Фильтр ниже сужает до `social.near`, но чтобы аудитировать другой контракт, меняется только строка `RECEIVER_ID`. ```bash ACCOUNT_ID=root.near RECEIVER_ID=social.near curl -s "https://rpc.mainnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg account_id "$ACCOUNT_ID" '{ jsonrpc:"2.0",id:"fastnear",method:"query", params:{request_type:"view_access_key_list",account_id:$account_id,finality:"final"} }')" \ | jq --arg receiver "$RECEIVER_ID" ' { total_keys: (.result.keys | length), fcks_for_receiver: [ .result.keys[] | select((.access_key.permission | type) == "object") | select(.access_key.permission.FunctionCall.receiver_id == $receiver) | { public_key, added_at_block: (.access_key.nonce / 1000000 | floor), tx_count: (.access_key.nonce % 1000000), method_names: (.access_key.permission.FunctionCall.method_names | if . == [] then "ANY" else . end), allowance: (.access_key.permission.FunctionCall.allowance // "unlimited") } ] | sort_by(.tx_count) }' ``` Для `root.near` это возвращает 235 ключей всего, включая 34 function-call-ключа на `social.near`; 21 из них были созданы и ни разу не использовались (`tx_count: 0`) и потому являются прямыми кандидатами на удаление. `method_names: "ANY"` означает, что ключ может вызвать любой метод на `social.near`; сужение до списка вида `["find_grants", "insert_grant", "delete_grant"]` означает, что ключ был заскоуплен на write-поверхность одного dapp. Чтобы удалить такой ключ, подпишите action `DeleteKey` **full-access**-ключом (function-call-ключ не может авторизовать `DeleteKey`) и отправьте через [`send_tx`](https://docs.fastnear.com/ru/rpc/transaction/send-tx). Повторный запуск того же запроса подтвердит, что ключа больше нет. ## Чтение контрактов и сырой state ### Прочитать storage контракта, не запуская его View-метод вроде `get_num` всё равно заставляет узел загрузить wasm-контракта и выполнить его. Если ключ storage уже известен, `view_state` возвращает сырые сериализованные байты напрямую — без исполнения и без зависимости от того, выставил ли контракт getter для этого поля вообще. Контракты на `near-sdk-rs` хранят верхнеуровневую `#[near_bindgen]`-структуру под ключом `STATE`. Передайте `STATE` как `prefix_base64` (`U1RBVEU=` — это base64 тех же четырёх ASCII-байт), и узел вернёт сериализованное значение. ```bash CONTRACT_ID=counter.near-examples.testnet RAW_B64="$(curl -s "https://rpc.testnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" -H 'content-type: application/json' \ --data "$(jq -nc --arg contract "$CONTRACT_ID" '{ jsonrpc:"2.0",id:"fastnear",method:"query", params:{request_type:"view_state",account_id:$contract,prefix_base64:"U1RBVEU=",finality:"final"} }')" \ | jq -r '.result.values[0].value')" DECODED_I8="$(python3 -c "import base64; print(int.from_bytes(base64.b64decode('$RAW_B64'),'little',signed=True))")" jq -n --arg raw "$RAW_B64" --argjson val "$DECODED_I8" '{raw_bytes_base64: $raw, decoded_i8: $val}' ``` Для живого counter это возвращает `"CQ=="` — один байт `0x09`, декодируется как signed i8 в `9`. Это то же число, которое вернул бы `get_num`, только прочитанное прямо из trie без запуска кода контракта. `signed=True` важен: отрицательный counter сериализовался бы как `"/w=="` (байт `0xff` → i8 `-1`, а не u8 `255`). Тянитесь к `view_state`, когда контракт не выставляет view-метод для нужных данных или когда нужна семья ключей, которую контракт не публикует. Для большинства чтений `call_function` всё равно требует меньше церемоний. Если вопрос становится историческим, а не текущим, расширяйте поверхность до [KV FastData API](https://docs.fastnear.com/ru/fastdata/kv). ## NEAR Social и точные чтения BOS Оставайтесь на точных чтениях SocialDB и on-chain-проверках готовности — пока вопрос не станет историческим. ### Может ли этот аккаунт прямо сейчас публиковать в NEAR Social? `social.near` знает две вещи, о которых UI кошелька может только догадываться: сколько storage осталось у каждого аккаунта и разрешена ли делегированному signer запись под этим аккаунтом. Два view-вызова сворачивают вопрос готовности к одному boolean. ```bash ACCOUNT_ID=root.near # account you're writing under SIGNER_ACCOUNT_ID=root.near # account signing the transaction STORAGE_ARGS_B64="$(jq -nc --arg account_id "$ACCOUNT_ID" '{account_id:$account_id}' | base64 | tr -d '\n')" STORAGE="$(curl -s "https://rpc.mainnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" -H 'content-type: application/json' \ --data "$(jq -nc --arg args "$STORAGE_ARGS_B64" '{ jsonrpc:"2.0",id:"fastnear",method:"query", params:{request_type:"call_function",account_id:"social.near",method_name:"get_account_storage",args_base64:$args,finality:"final"} }')" \ | jq '.result.result | implode | fromjson')" if [ "$SIGNER_ACCOUNT_ID" = "$ACCOUNT_ID" ]; then PERMISSION=true else PERM_ARGS_B64="$(jq -nc --arg pred "$SIGNER_ACCOUNT_ID" --arg key "$ACCOUNT_ID" '{predecessor_id:$pred,key:$key}' | base64 | tr -d '\n')" PERMISSION="$(curl -s "https://rpc.mainnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" -H 'content-type: application/json' \ --data "$(jq -nc --arg args "$PERM_ARGS_B64" '{ jsonrpc:"2.0",id:"fastnear",method:"query", params:{request_type:"call_function",account_id:"social.near",method_name:"is_write_permission_granted",args_base64:$args,finality:"final"} }')" \ | jq '.result.result | implode | fromjson')" fi jq -n --argjson storage "$STORAGE" --argjson permission "$PERMISSION" \ --arg account_id "$ACCOUNT_ID" --arg signer "$SIGNER_ACCOUNT_ID" '{ account_id: $account_id, signer_account_id: $signer, storage: $storage, permission_granted: $permission, ready_to_publish: (($storage.available_bytes // 0) > 0 and $permission) }' ``` Для `root.near`, подписывающего под собой, это возвращает `storage: {used_bytes: 136245, available_bytes: 42484}`, `permission_granted: true` (владельческая запись) и `ready_to_publish: true`. Если `storage` приходит как `null` или `available_bytes: 0`, аккаунту нужен `storage_deposit` на `social.near`, прежде чем новая запись сможет закрепиться. Если signer отличается от цели, ветка permission спрашивает `is_write_permission_granted({predecessor_id, key})` — тот же on-chain-ответ, который dapp видит, прежде чем писать от имени пользователя. Полную поверхность контракта см. в [SocialDB API](https://github.com/NearSocial/social-db#api). ### Что `mob.near/widget/Profile` содержит прямо сейчас? SocialDB хранит BOS-виджеты как ключи `/widget/` на `social.near`. Один `keys` с типом возврата `BlockHeight` возвращает каталог плюс якоря последней записи по каждому виджету; один `get` возвращает точный исходник. ```bash ACCOUNT_ID=mob.near WIDGET_NAME=Profile KEYS_ARGS="$(jq -nc --arg account_id "$ACCOUNT_ID" '{ keys: [($account_id + "/widget/*")], options: {return_type: "BlockHeight"} }' | base64 | tr -d '\n')" curl -s "https://rpc.mainnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" -H 'content-type: application/json' \ --data "$(jq -nc --arg args "$KEYS_ARGS" '{ jsonrpc:"2.0",id:"fastnear",method:"query", params:{request_type:"call_function",account_id:"social.near",method_name:"keys",args_base64:$args,finality:"final"} }')" \ | jq --arg account_id "$ACCOUNT_ID" --arg widget "$WIDGET_NAME" ' .result.result | implode | fromjson | .[$account_id].widget as $map | { total_widgets: ($map | length), most_recently_written: ($map | to_entries | sort_by(-.value) | .[0:5] | map({widget: .key, last_write_block: .value})), target_last_write_block: $map[$widget] }' GET_ARGS="$(jq -nc --arg account_id "$ACCOUNT_ID" --arg widget "$WIDGET_NAME" '{ keys: [($account_id + "/widget/" + $widget)] }' | base64 | tr -d '\n')" curl -s "https://rpc.mainnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" -H 'content-type: application/json' \ --data "$(jq -nc --arg args "$GET_ARGS" '{ jsonrpc:"2.0",id:"fastnear",method:"query", params:{request_type:"call_function",account_id:"social.near",method_name:"get",args_base64:$args,finality:"final"} }')" \ | jq -r --arg account_id "$ACCOUNT_ID" --arg widget "$WIDGET_NAME" ' .result.result | implode | fromjson | .[$account_id].widget[$widget] | split("\n")[0:20] | join("\n")' ``` Для `mob.near` каталог показывает 264 виджета; `Profile` последний раз записывался в блоке `86494825` — годами ранее, стабильно с тех пор — и исходник начинается с `const accountId = props.accountId ?? context.accountId;`. Тип возврата `BlockHeight` ничего не стоит дополнительно и превращает листинг ключей в дешёвую проверку актуальности. Сохраните блок последней записи, если позже захотите доказать, *какая транзакция* записала именно эту версию — передайте его в [Расширенный поиск записи SocialDB](https://docs.fastnear.com/ru/tx/socialdb-proofs). ## Частые ошибки - Начинать в RPC, когда пользователю нужна сводка по активам или индексированная история. - Забывать переключаться с обычного RPC на archival RPC для более старого state. - Считать browser auth в UI документации продовым backend-паттерном. - Оставаться в низкоуровневых вызовах статуса транзакции, когда вопрос уже стал forensic или историческим. ## Связанные страницы - [RPC Reference](https://docs.fastnear.com/ru/rpc) - [Auth & Access](https://docs.fastnear.com/ru/auth) - [FastNear API](https://docs.fastnear.com/ru/api) - [Transactions API](https://docs.fastnear.com/ru/tx) - [Choosing the Right Surface](https://docs.fastnear.com/ru/agents/choosing-surfaces) - [Agent Playbooks](https://docs.fastnear.com/ru/agents/playbooks) --- ## Снапшоты для валидаторов - HTML-маршрут: https://docs.fastnear.com/ru/snapshots - Markdown-маршрут: https://docs.fastnear.com/ru/snapshots.md **Источник:** [https://docs.fastnear.com/ru/snapshots](https://docs.fastnear.com/ru/snapshots) # Снапшоты блокчейна Этот раздел — для операторов узлов, которые поднимают или восстанавливают инфраструктуру NEAR. Это не поверхность для прикладных данных. Если задача — читать балансы, историю, блоки или состояние контракта, используйте документацию API и RPC, а не сценарии со снапшотами. :::warning[Бесплатные снапшоты устарели] Бесплатные снапшоты данных nearcore были прекращены 1 июня 2025 года. Infrastructure Committee и Near One рекомендуют Epoch Sync вместе с децентрализованной синхронизацией состояния. Актуальные рекомендации и режим подъёма смотрите на [NEAR Nodes](https://near-nodes.io). ::: ## Текущий статус - Сейчас FastNear не публикует через этот сайт рабочий публичный путь для самостоятельной загрузки снапшотов. - Для обычного запуска RPC-узлов и валидаторов используйте [NEAR Nodes](https://near-nodes.io) и актуальную схему Epoch Sync вместе с децентрализованной синхронизацией состояния. - Для доступа к архивным снапшотам переходите на [страницу FastNear о снапшотах](https://fastnear.com/snapshots) или пишите на [почту команды FastNear по снапшотам](mailto:snapshots@fastnear.com). - Исторические скрипты из [fastnear/static](https://github.com/fastnear/static) по-прежнему существуют, но прежний публичный поток с `latest.txt` больше не является поддерживаемым публичным сценарием. ## Полезные материалы для операторов - [NEAR Nodes: Epoch Sync](https://near-nodes.io/intro/node-epoch-sync) — актуальный шаг для обновления списка `boot_nodes` перед первым запуском. - [NEAR Nodes: синхронизация состояния](https://near-nodes.io/rpc/state-sync) — текущая рекомендуемая схема запуска без снапшота. - [NEAR Nodes: запуск архивного узла](https://near-nodes.io/archival/run-archival-node) — настройка архивного узла и ожидания по каталогу данных. - [NEAR Nodes: раздельное хранилище для архивных узлов](https://near-nodes.io/archival/split-storage-archival) — если вы планируете современную схему с раздельным горячим и холодным хранилищем. ## Что стоит подготовить до запроса архивного снапшота - сеть: `mainnet` или `testnet` - роль узла: валидатор, RPC-узел или архивный узел - ожидаете ли вы восстановление в единый каталог `~/.near/data` или в раздельную схему с горячим и холодным хранилищем - целевой путь `NEAR_HOME` и схему хранилища, которую вы собираетесь использовать - срочность, ограничения по пропускной способности или сроки восстановления, которые влияют на план передачи данных ## Используйте этот раздел, когда - нужно подтвердить текущую позицию FastNear по снапшотам для mainnet или testnet - нужен правильный путь запроса архивного снапшота - нужно понять, стоит ли использовать снапшоты или стандартный сценарий запуска узла NEAR ## Не используйте этот раздел, когда - идёт запрос данных цепочки для приложения - нужны свежие блоки, балансы, история или состояние контракта - нужны общие рекомендации по продуктовому API, а не настройка оператором В этих случаях используйте [Справочник RPC](https://docs.fastnear.com/ru/rpc), [FastNear API](https://docs.fastnear.com/ru/api), [Транзакции API](https://docs.fastnear.com/ru/tx) или [NEAR Data API](https://docs.fastnear.com/ru/neardata). ## Выберите сеть На страницах ниже собран текущий статус и путь эскалации по каждой сети. Они больше не предполагают наличие публичного URL для самостоятельной загрузки. - [Снапшоты mainnet](https://docs.fastnear.com/ru/snapshots/mainnet) - [Снапшоты testnet](https://docs.fastnear.com/ru/snapshots/testnet) --- ## Примеры snapshot - HTML-маршрут: https://docs.fastnear.com/ru/snapshots/examples - Markdown-маршрут: https://docs.fastnear.com/ru/snapshots/examples.md **Источник:** [https://docs.fastnear.com/ru/snapshots/examples](https://docs.fastnear.com/ru/snapshots/examples) ## Пути восстановления mainnet Выберите один класс — optimized `fast-rpc`, standard RPC или archival — и выполняйте только команды этого пути. Смешивание классов приводит к несогласованным данным узла. FastNear поддерживает эти скрипты ради скорости восстановления. Если в вашей среде требуется review изменений, скачайте скрипт и проверьте его перед запуском (вместо прямой передачи через pipe в `bash`). ### Optimized mainnet `fast-rpc` ```bash DATA_PATH=~/.near/data curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/fastnear/static/refs/heads/main/down_rclone.sh \ | DATA_PATH="$DATA_PATH" CHAIN_ID=mainnet RPC_TYPE=fast-rpc bash ``` ### Standard mainnet RPC ```bash DATA_PATH=~/.near/data curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/fastnear/static/refs/heads/main/down_rclone.sh \ | DATA_PATH="$DATA_PATH" CHAIN_ID=mainnet bash ``` ### Archival mainnet Для archival нужны две загрузки из *одного и того же* среза снапшота. Зафиксируйте одно значение `LATEST` и переиспользуйте его и для hot-, и для cold-data — смешивание высот даёт внутренне несогласованный набор данных и удивляет nearcore на этапе настройки. ```bash HOT_DATA_PATH=~/.near/data COLD_DATA_PATH=/mnt/hdds/cold-data LATEST="$(curl -s "https://snapshot.neardata.xyz/mainnet/archival/latest.txt")" echo "Latest archival mainnet snapshot block: $LATEST" curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/fastnear/static/refs/heads/main/down_rclone_archival.sh \ | DATA_TYPE=hot-data DATA_PATH="$HOT_DATA_PATH" CHAIN_ID=mainnet BLOCK="$LATEST" bash curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/fastnear/static/refs/heads/main/down_rclone_archival.sh \ | DATA_TYPE=cold-data DATA_PATH="$COLD_DATA_PATH" CHAIN_ID=mainnet BLOCK="$LATEST" bash ``` ## Частые ошибки - Использовать документацию по снапшотам, когда задача на самом деле про чтение данных цепочки. - Выбирать archival-восстановление, когда достаточно standard или optimized RPC. - Забывать про разделение hot/cold-хранилища для archival-данных. - Переходить к командам до выбора сети и цели узла. ## Связанные страницы - [Обзор snapshot](https://docs.fastnear.com/ru/snapshots) - [Снапшоты mainnet](https://docs.fastnear.com/ru/snapshots/mainnet) - [Снапшоты testnet](https://docs.fastnear.com/ru/snapshots/testnet) - [RPC Reference](https://docs.fastnear.com/ru/rpc) - [NEAR Data API](https://docs.fastnear.com/ru/neardata) --- ## mainnet - HTML-маршрут: https://docs.fastnear.com/ru/snapshots/mainnet - Markdown-маршрут: https://docs.fastnear.com/ru/snapshots/mainnet.md **Источник:** [https://docs.fastnear.com/ru/snapshots/mainnet](https://docs.fastnear.com/ru/snapshots/mainnet) # Mainnet FastNear больше не публикует здесь публичный сценарий самостоятельной загрузки снапшота mainnet. :::warning[Бесплатные снапшоты устарели] Бесплатные снапшоты данных nearcore были прекращены 1 июня 2025 года. ::: ## Для обычных RPC-узлов и валидаторов Используйте [NEAR Nodes](https://near-nodes.io) и актуальную схему запуска на основе Epoch Sync вместе с децентрализованной синхронизацией состояния. Это публично рекомендуемый путь для обычного запуска и восстановления узлов mainnet. Перед первым `neard run` обновите `network.boot_nodes` по актуальной команде из [NEAR Nodes: Epoch Sync](https://near-nodes.io/intro/node-epoch-sync). Даже у свежескачанного `config.json` список `boot_nodes` может остаться пустым, и тогда узел зависнет на `Waiting for peers 0 peers`. ## Для архивных снапшотов mainnet Доступ к архивным снапшотам предоставляется по запросу. Начните со [страницы FastNear о снапшотах](https://fastnear.com/snapshots) или напишите на [почту команды FastNear по снапшотам](mailto:snapshots@fastnear.com), чтобы получить актуальную информацию о доступности, высоте блока и требованиях к хранилищу. ## Что важно знать о старых скриптах В репозитории [fastnear/static](https://github.com/fastnear/static) по-прежнему лежат исторические скрипты `down_rclone.sh` и `down_rclone_archival.sh`. Мы больше не публикуем для них copy-paste команды в документации, потому что прежние публичные URL обнаружения через `latest.txt` теперь ведут на информационную страницу и не являются поддерживаемым публичным сценарием. Если поддержка FastNear выдаст вам конкретную высоту блока и рабочий путь загрузки, используйте именно те хосты, блок и схему размещения данных, которые вам предоставят, а не старые публичные примеры. ## Если вы готовитесь к запросу архивного снапшота - Будьте готовы разнести hot data и cold data, если это потребуется для конкретного пакета снапшота. - Заранее проверьте схему хранения nearcore до начала переноса данных. - Устанавливайте `rclone` только если полученный от поддержки сценарий действительно на него опирается. ## Если FastNear передаст вам пакет снапшота 1. Остановите `neard`, прежде чем заменять данные снапшота или менять настройки архивного хранилища. 2. Уточните, рассчитан ли пакет на `~/.near/data` или на раздельные пути `hot-data` и `cold-data`. 3. До перезапуска проверьте, что `config.json` соответствует нужному режиму архивного узла. Для архивных узлов NEAR Nodes считает критичными параметры `archive: true` и `tracked_shards: [0]`. 4. Если пакет использует раздельное хранилище, убедитесь, что пути в конфигурации совпадают с полученной схемой hot/cold, и только потом запускайте узел. 5. Перезапустите узел и проверьте, что он стартует без ошибок и продолжает синхронизацию, а не остаётся на устаревшем локальном состоянии. Требования к хранилищу nearcore и общие операторские предпосылки смотрите в [nearcore](https://github.com/near/nearcore?tab=readme-ov-file#about-near). --- ## testnet - HTML-маршрут: https://docs.fastnear.com/ru/snapshots/testnet - Markdown-маршрут: https://docs.fastnear.com/ru/snapshots/testnet.md **Источник:** [https://docs.fastnear.com/ru/snapshots/testnet](https://docs.fastnear.com/ru/snapshots/testnet) # Testnet FastNear больше не публикует здесь публичный сценарий самостоятельной загрузки снапшота testnet. :::warning[Бесплатные снапшоты устарели] Бесплатные снапшоты данных nearcore были прекращены 1 июня 2025 года. ::: ## Для обычных RPC-узлов и валидаторов Используйте [NEAR Nodes](https://near-nodes.io) и актуальную схему запуска на основе Epoch Sync вместе с децентрализованной синхронизацией состояния. Это публично рекомендуемый путь для обычного запуска и восстановления узлов testnet. Перед первым `neard run` обновите `network.boot_nodes` по актуальной команде из [NEAR Nodes: Epoch Sync](https://near-nodes.io/intro/node-epoch-sync). Даже у свежескачанного `config.json` список `boot_nodes` может остаться пустым, и тогда узел зависнет на `Waiting for peers 0 peers`. ## Для архивных снапшотов testnet Доступ к архивным снапшотам предоставляется по запросу. Начните со [страницы FastNear о снапшотах](https://fastnear.com/snapshots) или напишите на [почту команды FastNear по снапшотам](mailto:snapshots@fastnear.com), чтобы получить актуальную информацию о доступности, высоте блока и требованиях к хранилищу. ## Что важно знать о старых скриптах В репозитории [fastnear/static](https://github.com/fastnear/static) по-прежнему лежат исторические скрипты `down_rclone.sh` и `down_rclone_archival.sh`. Мы больше не публикуем для них copy-paste команды в документации, потому что прежние публичные URL обнаружения через `latest.txt` теперь ведут на информационную страницу и не являются поддерживаемым публичным сценарием. Если поддержка FastNear выдаст вам конкретную высоту блока и рабочий путь загрузки, используйте именно те хосты, блок и схему размещения данных, которые вам предоставят, а не старые публичные примеры. ## Если вы готовитесь к запросу архивного снапшота - Будьте готовы разместить hot data на быстром локальном хранилище, если это потребуется для конкретного пакета снапшота. - Заранее проверьте схему хранения nearcore до начала переноса данных. - Устанавливайте `rclone` только если полученный от поддержки сценарий действительно на него опирается. ## Если FastNear передаст вам пакет снапшота 1. Остановите `neard`, прежде чем заменять данные снапшота или менять настройки архивного хранилища. 2. Уточните, рассчитан ли пакет на `~/.near/data` или на раздельные пути `hot-data` и `cold-data`. 3. До перезапуска проверьте, что `config.json` соответствует нужному режиму архивного узла. Для архивных узлов NEAR Nodes считает критичными параметры `archive: true` и `tracked_shards: [0]`. 4. Если пакет использует раздельное хранилище, убедитесь, что пути в конфигурации совпадают с полученной схемой hot/cold, и только потом запускайте узел. 5. Перезапустите узел и проверьте, что он стартует без ошибок и продолжает синхронизацию, а не остаётся на устаревшем локальном состоянии. Требования к хранилищу nearcore и общие операторские предпосылки смотрите в [nearcore](https://github.com/near/nearcore?tab=readme-ov-file#about-near). --- ## API переводов - HTML-маршрут: https://docs.fastnear.com/ru/transfers - Markdown-маршрут: https://docs.fastnear.com/ru/transfers.md **Источник:** [https://docs.fastnear.com/ru/transfers](https://docs.fastnear.com/ru/transfers) # API переводов API переводов — это самая узкая поверхность истории FastNear. Стартуйте здесь, когда вопрос именно о движении активов, а не о более широкой истории исполнения за этим движением. ## Базовый URL ```bash title="Transfers API Mainnet" https://transfers.main.fastnear.com ``` Эта поверхность сейчас доступна только в mainnet. `?network=testnet` не переключает бэкенд. ## Используйте этот API, когда - нужна история переводов NEAR или FT-токенов по аккаунту - строятся ленты кошелька или представления активности только по переводам - отвечаете на вопросы поддержки или комплаенса про отправку и получение ## Не стартуйте здесь, когда - нужна более широкая история транзакций или квитанций - нужны балансы, активы, NFT или представления стейкинга - нужен трафик testnet Используйте [Транзакции API](https://docs.fastnear.com/ru/tx) для более широкой истории исполнения и [FastNear API](https://docs.fastnear.com/ru/api) для ответов в стиле состояния аккаунта. ## Минимально полезные входы - `account_id` - опциональные фильтры: актив, направление, сумма или время - нужно пользователю несколько событий или более длинный обзор истории ## Рабочий цикл по умолчанию 1. Начните с [Запроса переводов](https://docs.fastnear.com/ru/transfers/query), используя самый узкий набор фильтров, который всё ещё отвечает на вопрос. 2. Читайте возвращённые события как историю только переводов. Не пересобирайте полную хронологию квитанций, пока пользователь не попросит. 3. Переиспользуйте непрозрачный `resume_token` ровно в том виде, в каком его вернул сервис, при листании дальше. 4. Остановитесь, как только можете ответить, кто, что, когда и в каком активе отправил. ## Аутентификация и доступность - Публичные чтения истории переводов часто работают и без ключа. - Если вы стандартизируете один FastNear API-ключ на всех поверхностях FastNear, используйте здесь тот же формат через заголовок или параметр запроса. - Ответы включают непрозрачный `resume_token` для пагинации. - Сервис сейчас доступен только в mainnet. ## Расширяйтесь, только если - пользователь начинает спрашивать о квитанциях или действиях кроме переводов - пользователь хочет более широкий контекст транзакции за переводом - пользователь на самом деле спрашивает о балансах или текущих активах, а не о движении Тогда расширяйтесь на [Транзакции API](https://docs.fastnear.com/ru/tx) или [FastNear API](https://docs.fastnear.com/ru/api), а не перегружайте представление переводов. ## Типовые стартовые страницы - [Запрос переводов](https://docs.fastnear.com/ru/transfers/query) — лента по аккаунту с фильтрами по направлению, активу, сумме и времени ## Нужен сценарий? Используйте [Transfers API Examples](https://docs.fastnear.com/ru/transfers/examples) для практических примеров: узкие поиски переводов, пагинация через `resume_token` и переход к более широкому расследованию транзакций. ## Устранение неполадок ### Нужны полные метаданные транзакции Переходите на [Транзакции API](https://docs.fastnear.com/ru/tx), если одной истории переводов недостаточно. ### `resume_token` перестал работать Считайте токен непрозрачным и переиспользуйте его только с тем же эндпоинтом и фильтрами, которые его вернули. --- ## Примеры Transfers API - HTML-маршрут: https://docs.fastnear.com/ru/transfers/examples - Markdown-маршрут: https://docs.fastnear.com/ru/transfers/examples.md **Источник:** [https://docs.fastnear.com/ru/transfers/examples](https://docs.fastnear.com/ru/transfers/examples) ## Примеры Эти shell-примеры работают и на публичных Transfers и Transactions endpoint-ах. Если `FASTNEAR_API_KEY` задан в окружении, сниппеты автоматически передадут его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке. ### Какая у этого аккаунта свежая активность по переводам? `/v0/transfers` всего с `account_id` и `desc: true` возвращает самые свежие переводы, касающиеся этого аккаунта, по всем типам активов, в обоих направлениях сразу. В каждой строке уже есть `human_amount`, `asset_id` и `transaction_id`, так что этот поток заодно служит быстрым сканом активности до того, как вы достанете фильтры. ```bash ACCOUNT_ID=root.near curl -s "https://transfers.main.fastnear.com/v0/transfers?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg account_id "$ACCOUNT_ID" '{account_id: $account_id, desc: true, limit: 5}')" \ | jq '{ recent: [.transfers[] | { block_height, asset_id, human_amount, other_account_id, transfer_type, tx: .transaction_id }] }' ``` Для `root.near` последние строки смешивают активы `FtTransfer` и `MtTransfer`. `asset_id` использует URI по NEP-стандартам (`native:near`, `nep141:...`, `nep245:...`), так что одно поле уже подсказывает, к какому стандарту тянуться дальше. Положительный `human_amount` означает, что аккаунт получил; отрицательный — что отправил. `other_account_id: null` — норма для multi-token-форм, где контрагент сидит внутри границы контракта, а не как отдельный аккаунт верхнего уровня. ### Отфильтровать и листать ленту переводов одного аккаунта `/v0/transfers` возвращает отфильтрованную ленту плюс `resume_token`, который вы переиспользуете *без изменения фильтров*, чтобы продолжать листать. В каждой строке уже есть `human_amount`, `usd_amount`, `transaction_id` и `receipt_id` — большинство audit-вопросов закрываются без второго запроса. ```bash ACCOUNT_ID=root.near FEED="$(curl -s "https://transfers.main.fastnear.com/v0/transfers?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg account_id "$ACCOUNT_ID" '{ account_id: $account_id, direction: "receiver", asset_id: "native:near", min_amount: "1000000000000000000000000", desc: true, limit: 10 }')")" echo "$FEED" | jq '{ resume_token, transfers: [.transfers[] | {block_height, amount, human_amount, usd_amount, other_account_id, transaction_id, receipt_id}] }' ``` Для зафиксированного аккаунта это возвращает недавние входящие native-NEAR переводы не меньше 1 NEAR — в примерных строках видны native-переводы с `escrow.ai.near` и уже посчитанным USD. Чтобы получить следующую страницу, отправьте то же тело с верхнеуровневым `resume_token: ""`; изменение любого другого фильтра делает токен недействительным. Когда одной строке нужна точка исполнения, возьмите её `receipt_id` и сразу обратитесь к `/v0/receipt`: ```bash ACCOUNT_ID=root.near FEED="$(curl -s "https://transfers.main.fastnear.com/v0/transfers?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg account_id "$ACCOUNT_ID" '{ account_id: $account_id, direction: "receiver", asset_id: "native:near", min_amount: "1000000000000000000000000", desc: true, limit: 10 }')")" RECEIPT_ID="$(echo "$FEED" | jq -r '.transfers[0].receipt_id')" curl -s "https://tx.main.fastnear.com/v0/receipt?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg receipt_id "$RECEIPT_ID" '{receipt_id: $receipt_id}')" \ | jq '.receipt | {receipt_id, transaction_hash, receiver_id, predecessor_id, tx_block_height, is_success}' ``` Это тот же переход, что описан в [Превратить один receipt ID в читаемую историю транзакции](https://docs.fastnear.com/ru/tx/examples#receipt-id-to-readable-story) — один запрос возвращает и квитанцию, и её родительскую транзакцию целиком. ## Частые ошибки - Использовать Transfers API, когда пользователю на самом деле нужны балансы, активы или сводки аккаунта. - Считать историю переводов полной историей исполнения. - Переиспользовать `resume_token` с другими фильтрами. ## Связанные страницы - [Transfers API](https://docs.fastnear.com/ru/transfers) - [Transactions API](https://docs.fastnear.com/ru/tx) - [FastNear API](https://docs.fastnear.com/ru/api) - [Choosing the Right Surface](https://docs.fastnear.com/ru/agents/choosing-surfaces) - [Agent Playbooks](https://docs.fastnear.com/ru/agents/playbooks) --- ## Транзакции API - HTML-маршрут: https://docs.fastnear.com/ru/tx - Markdown-маршрут: https://docs.fastnear.com/ru/tx.md **Источник:** [https://docs.fastnear.com/ru/tx](https://docs.fastnear.com/ru/tx) # Транзакции API Транзакции API — это поверхность истории. Используйте её, когда нужны индексированные представления транзакций или квитанций без постоянного опроса сырых RPC-методов и ручного объединения результатов. ## Базовые URL ```bash title="Transactions API Mainnet" https://tx.main.fastnear.com ``` ```bash title="Transactions API Testnet" https://tx.test.fastnear.com ``` ## Лучше всего подходит для - лент активности аккаунта; - инструментов отладки и поддержки; - поиска транзакций и квитанций по хешу; - запросов по блокам и диапазонам блоков. ## Когда его не стоит использовать - Используйте [FastNear API](https://docs.fastnear.com/ru/api), когда нужны балансы, NFT, стейкинг или поиск по публичному ключу. - Используйте [Справочник RPC](https://docs.fastnear.com/ru/rpc), когда нужно каноническое поведение узла или отправка транзакций. ## Аутентификация и доступность - Публичные запросы по истории часто работают и без ключа. - Если ваша интеграция стандартизирует один FastNear API-ключ на всех поверхностях FastNear, используйте здесь тот же формат через заголовок или параметр запроса. - Для testnet используйте `https://tx.test.fastnear.com`; поиск квитанций там тоже доступен. - Сервис предназначен для индексированного доступа к истории, а не для отправки транзакций. ## С чего обычно начинают - [Транзакции по хешу](https://docs.fastnear.com/ru/tx/transactions) — когда вы уже знаете идентификатор транзакции. - [История аккаунта](https://docs.fastnear.com/ru/tx/account) — для лент активности и отладки аккаунта. - [Поиск квитанции](https://docs.fastnear.com/ru/tx/receipt) — для расследования цепочки исполнения. - [Диапазон блоков](https://docs.fastnear.com/ru/tx/blocks) — когда нужен ограниченный по диапазону просмотр истории. ## Нужен сценарий? Используйте [примеры API транзакций](https://docs.fastnear.com/ru/tx/examples) для практических примеров: поиска транзакций, расследования квитанций, истории аккаунта и анализа диапазонов блоков. ## Устранение неполадок ### Я ожидал, что здесь можно отправлять транзакции Это семейство предназначено для индексированных запросов по истории, а не для отправки подписанных транзакций. Для отправки используйте сырой RPC. ### Мне нужны пояснения по пагинации `/v0/account` использует непрозрачный `resume_token`, а `/v0/blocks` опирается на диапазон и лимит. Повторно используйте непрозрачные токены ровно в том виде, в каком их вернул сервис. ### Мне нужен только один канонический результат статуса транзакции из RPC Используйте сырой RPC вместо индексированного семейства истории. --- ## Примеры Transactions - HTML-маршрут: https://docs.fastnear.com/ru/tx/examples - Markdown-маршрут: https://docs.fastnear.com/ru/tx/examples.md **Источник:** [https://docs.fastnear.com/ru/tx/examples](https://docs.fastnear.com/ru/tx/examples) ## Начните здесь Все shell-примеры ниже работают на публичных Transactions API-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке. ### У меня один хеш транзакции. Что произошло? Вставьте хеш в `POST /v0/transactions` — один ответ обычно содержит всю историю. ```bash TX_HASH=7ZKnhzt2MqMNmsk13dV8GAjGu3Db8aHzSBHeNeu9MJCq curl -s "https://tx.main.fastnear.com/v0/transactions?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg tx_hash "$TX_HASH" '{tx_hashes: [$tx_hash]}')" \ | jq '{ hash: .transactions[0].transaction.hash, signer_id: .transactions[0].transaction.signer_id, receiver_id: .transactions[0].transaction.receiver_id, included_block_height: .transactions[0].execution_outcome.block_height, actions: (.transactions[0].transaction.actions | map(if type == "string" then . else keys[0] end)), first_receipt_id: .transactions[0].execution_outcome.outcome.status.SuccessReceiptId, receipt_count: (.transactions[0].receipts | length) }' ``` Для зафиксированного хеша `root.near` отправил один `Transfer` на `escrow.ai.near` в блоке `188976785`, с передачей в receipt `B8QzHQZ6VnUVy8zaVXCEkWuSs7MPb34yoHYixZV3Zdj1`. Если `receipt_count > 1` или следующий вопрос касается поведения на уровне receipt, переходите к [Какой receipt испустил этот лог или событие?](#какой-receipt-испустил-этот-лог-или-событие) или [`POST /v0/receipt`](https://docs.fastnear.com/ru/tx/receipt). ### Какой receipt испустил этот лог или событие? Выведите список всех receipt транзакции с логами и флагом, содержат ли их логи ваш фрагмент. Совпадение доказывается, а не угадывается: у зафиксированной транзакции один receipt логирует `Transfer`, другой — `Refund`, и только сторона `Refund` переключается в `true`. ```bash TX_HASH=2KhhB1uDScGCFQfVchep7DiZTGTxMcgfUYHNzwf5e6uL LOG_FRAGMENT=Refund curl -s "https://tx.main.fastnear.com/v0/transactions?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg tx_hash "$TX_HASH" '{tx_hashes: [$tx_hash]}')" \ | jq --arg fragment "$LOG_FRAGMENT" ' [ .transactions[0].receipts[] | select((.execution_outcome.outcome.logs | length) > 0) | { receipt_id: .receipt.receipt_id, receiver_id: .receipt.receiver_id, method_name: (.receipt.receipt.Action.actions[0] | if type == "string" then . else (.FunctionCall.method_name // keys[0]) end), matches_fragment: any(.execution_outcome.outcome.logs[]?; contains($fragment)), logs: .execution_outcome.outcome.logs } ]' ``` Фрагмент `Refund` атрибутируется receipt `9sLHQpaGz3NnMNMn8zGrDUSyktR1q6ts2otr9mHkfD1w` на `wrap.near`, метод `ft_resolve_transfer`. Логи receipt живут на receipts, а не на транзакции, поэтому одного прохода достаточно — более глубокая async-трассировка не нужна. ### Превратить один receipt ID в читаемую историю транзакции {#receipt-id-to-readable-story} `POST /v0/receipt` возвращает запись receipt **и** его полную родительскую транзакцию в одном ответе, поэтому единственного запроса хватает на всю историю — дополнительный `/v0/transactions` не нужен. ```bash RECEIPT_ID=B8QzHQZ6VnUVy8zaVXCEkWuSs7MPb34yoHYixZV3Zdj1 curl -s "https://tx.main.fastnear.com/v0/receipt?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg receipt_id "$RECEIPT_ID" '{receipt_id: $receipt_id}')" \ | jq '{ receipt: { receipt_id: .receipt.receipt_id, type: .receipt.receipt_type, is_success: .receipt.is_success, receipt_block: .receipt.block_height, tx_block: .receipt.tx_block_height, predecessor_id: .receipt.predecessor_id, receiver_id: .receipt.receiver_id, transaction_hash: .receipt.transaction_hash }, parent_transaction: { signer_id: .transaction.transaction.signer_id, receiver_id: .transaction.transaction.receiver_id, action_types: (.transaction.transaction.actions | map(if type == "string" then . else keys[0] end)) } }' ``` Для зафиксированного receipt это возвращает `Action`-receipt от `root.near` к `escrow.ai.near`, который успешно выполнился в блоке `188976786`, через один блок после попадания родительской транзакции `7ZKnhzt2…`, — один `Transfer` (3.5 NEAR, в сыром `.transaction.transaction.actions` видимо как `3500000000000000000000000` yocto). Если интересным якорем становится родительская транзакция, хеш у вас уже есть — переиспользуйте его в [У меня один хеш транзакции. Что произошло?](#у-меня-один-хеш-транзакции-что-произошло). ## Сбои и async ### Доказать, что один провалившийся action откатил весь batch Один batch отправил `CreateAccount → Transfer → AddKey → FunctionCall`, и финальный вызов попал в отсутствующий метод. Индексированная запись транзакции уже несёт упорядоченный batch *и* точный сбой на уровне receipt, поэтому одного запроса хватает, чтобы ответить «что пытались и что сломалось»; проверка через `view_account` затем доказывает, что предыдущие actions откатились. ```bash TX_HASH=CrhH3xLzbNwNMGgZkgptXorwh8YmqxRGuA6Mc11MkU6M NEW_ACCOUNT_ID=rollback-mo4vmkig.temp.mike.testnet curl -s "https://tx.test.fastnear.com/v0/transactions?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg tx_hash "$TX_HASH" '{tx_hashes: [$tx_hash]}')" \ | jq '{ action_types: (.transactions[0].transaction.actions | map(if type == "string" then . else keys[0] end)), final_method: .transactions[0].transaction.actions[3].FunctionCall.method_name, tx_handoff: .transactions[0].execution_outcome.outcome.status, receipt_failure: ( first( .transactions[0].receipts[] | select(.execution_outcome.outcome.status.Failure != null) | .execution_outcome.outcome.status.Failure.ActionError ) ) }' ``` Статус на уровне транзакции — `SuccessReceiptId`: транзакция успешно передала свои batched actions в receipt. Сбой лежит слоем ниже на этом receipt: `index: 3` (именно `FunctionCall`), вид `CodeDoesNotExist` на `rollback-mo4vmkig.temp.mike.testnet`. `SuccessReceiptId` в tx-outcome означает «handoff прошёл», а не «всё завершилось» — реальная ловушка, если смотреть только на статус уровня транзакции. Теперь докажите откат предыдущих actions: спросите аккаунт, который batch *пытался* создать: ```bash NEW_ACCOUNT_ID=rollback-mo4vmkig.temp.mike.testnet curl -s "https://rpc.testnet.fastnear.com?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg account_id "$NEW_ACCOUNT_ID" '{ jsonrpc: "2.0", id: "fastnear", method: "query", params: {request_type: "view_account", account_id: $account_id, finality: "final"} }')" \ | jq '{error: .error.cause.name, requested_account_id: .error.cause.info.requested_account_id}' ``` `UNKNOWN_ACCOUNT` — это и есть доказательство. Если бы `CreateAccount` закрепился, `view_account` вернул бы результат; раз нет — предыдущие `Transfer` и `AddKey` из того же batched-receipt тоже не закрепились. ### Когда транзакция выглядит успешной — что на самом деле произошло? Внешний `execution_outcome.outcome.status` рапортует `SuccessReceiptId`, как только сработал handoff первого receipt, — и ничего не говорит о том, успешны ли дочерние receipts и отработал ли callback на исходном контракте. Один pipeline над `/v0/transactions` отвечает сразу на все три вопроса. ```bash TX_HASH=2KhhB1uDScGCFQfVchep7DiZTGTxMcgfUYHNzwf5e6uL ORIGIN_CONTRACT_ID=wrap.near CALLBACK_METHOD=ft_resolve_transfer curl -s "https://tx.main.fastnear.com/v0/transactions?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg tx_hash "$TX_HASH" '{tx_hashes: [$tx_hash]}')" \ | jq --arg origin "$ORIGIN_CONTRACT_ID" --arg callback "$CALLBACK_METHOD" '{ outer: { method: .transactions[0].transaction.actions[0].FunctionCall.method_name, tx_handoff: (.transactions[0].execution_outcome.outcome.status | keys[0]) }, callback: { expected_on: $origin, method: $callback, ran: any( .transactions[0].receipts[]; .receipt.receiver_id == $origin and (.receipt.receipt.Action.actions[0].FunctionCall.method_name // "") == $callback ) }, descendant_failures: [ .transactions[0].receipts[] | select(.execution_outcome.outcome.status.Failure != null) | { receiver_id: .receipt.receiver_id, method: (.receipt.receipt.Action.actions[0].FunctionCall.method_name // "system"), cause: .execution_outcome.outcome.status.Failure } ] }' ``` Для зафиксированной транзакции `outer.method` — `ft_transfer_call`, а `outer.tx_handoff` — `SuccessReceiptId`: транзакция чисто запустила свой первый receipt, и если смотреть только сюда, можно назвать это победой. `descendant_failures` рассказывают вторую историю: `ft_on_transfer` на `v2.ref-finance.near` упал с `E51: contract paused` — DEX был на паузе во время этого свопа и не мог принять wrapped NEAR. `callback.ran: true` — третью: callback `ft_resolve_transfer` на `wrap.near` всё равно отработал. Сбой ниже по цепочке никогда не мешает callback исходного контракта — именно так NEP-141 возвращает отправителю средства, когда получатель их отклонил. Успех receipt не транзитивен. Протокол может чисто отдать handoff и при этом увидеть, как отцеплённая работа провалится позже; callback исходного контракта отработает в любом случае. Прочитайте эти три поля вместе — и async-история становится читаемой без ручного обхода цепочки receipts. Чтобы вытянуть сам лог `Refund`, переходите к [Какой receipt испустил этот лог или событие?](#какой-receipt-испустил-этот-лог-или-событие). ### Сопоставить запрос OutLayer с его TEE-разрешением [OutLayer](https://outlayer.fastnear.com) разделяет один логический вызов на две транзакции: пользователь подписывает `request_execution` на `outlayer.near`, worker в Intel TDX запускает нужный WASM off-chain, затем `worker.outlayer.near` присылает результат через `submit_execution_output_and_resolve`. Обе половины несут один и тот же `request_id` — передайте оба tx-хеша в один запрос `/v0/transactions` и извлеките это поле с каждой стороны, чтобы подтвердить пару. ```bash REQUEST_TX=BZDQAxEdpQ9wUGXmXTa2APwFLDTTqTy5ucrBPsfgZeyz WORKER_TX=3NYD4Mkn5cwkuVkGP9PPoiJ9PB5Vr7v6r8CwSswtHVA3 curl -s "https://tx.main.fastnear.com/v0/transactions?apiKey=${FASTNEAR_API_KEY:-}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg a "$REQUEST_TX" --arg b "$WORKER_TX" '{tx_hashes: [$a, $b]}')" \ | jq '[ .transactions[] | { role: (if .transaction.actions[0].FunctionCall.method_name == "request_execution" then "request" else "worker" end), hash: .transaction.hash, signer: .transaction.signer_id, method: .transaction.actions[0].FunctionCall.method_name, block: .execution_outcome.block_height, request_id: ( if .transaction.actions[0].FunctionCall.method_name == "request_execution" then (.receipts[0].execution_outcome.outcome.logs[] | select(startswith("EVENT_JSON")) | sub("EVENT_JSON:"; "") | fromjson | .data[0].request_data | fromjson | .request_id) else (.receipts[0].receipt.receipt.Action.actions[0].FunctionCall.args | @base64d | fromjson | .request_id) end ) } ]' ``` Обе строки несут `request_id: 1868`, подтверждая пару. Половина-запрос, подписанная `retrorn.near` в блоке `194832281`, лежит в логе `EVENT_JSON:` её receipt (это yield/resume-паттерн NEAR — on-chain-обещание приостанавливается, пока TDX-worker выполняется). Половина-worker приходит через 11 блоков с `submit_execution_output_and_resolve`, подписанной `worker.outlayer.near`, и её `request_id` достаётся прямо из base64-обёрнутых `FunctionCall.args`. Те же два payload несут и более богатый отпечаток — `sender_id`, `project_id`, `code_hash`, `resources_used.instructions`, `resources_used.time_ms`, размер зашифрованного результата в байтах — если нужно проверить, что именно исполнилось; этот минимальный pipeline лишь подтверждает, что половины принадлежат друг другу. `/v0/transactions` отдаёт исторические пары бессрочно, поэтому archival RPC для самой трассировки не нужен даже через недели. ## Частые ошибки - Пытаться отправить транзакцию через history-API вместо raw RPC. - Использовать Transactions API, когда пользователю нужны только текущие балансы или активы. - Спускаться в raw RPC до того, как индексированная история ответила на читаемый вопрос «что произошло?». ## Связанные страницы - [Transactions API](https://docs.fastnear.com/ru/tx) - [RPC Reference](https://docs.fastnear.com/ru/rpc) - [FastNear API](https://docs.fastnear.com/ru/api) - [NEAR Data API](https://docs.fastnear.com/ru/neardata) - [Berry Club: живая доска и один путь исторической реконструкции](https://docs.fastnear.com/ru/tx/examples/berry-club) - [Расширенный поиск записи SocialDB](https://docs.fastnear.com/ru/tx/socialdb-proofs) - [Choosing the Right Surface](https://docs.fastnear.com/ru/agents/choosing-surfaces) - [Agent Playbooks](https://docs.fastnear.com/ru/agents/playbooks) --- ## Berry Club: как читать живую доску и разбирать одну эпоху - HTML-маршрут: https://docs.fastnear.com/ru/tx/examples/berry-club - Markdown-маршрут: https://docs.fastnear.com/ru/tx/examples/berry-club.md **Источник:** [https://docs.fastnear.com/ru/tx/examples/berry-club](https://docs.fastnear.com/ru/tx/examples/berry-club) {/* FASTNEAR_AI_DISCOVERY: Этот walkthrough показывает краткий и полезный путь для Berry Club: сначала прочитайте живую доску через RPC get_lines, а Transactions API используйте только тогда, когда нужно восстановить одну более раннюю эпоху по draw-вызовам. */} # Berry Club: как читать живую доску и разбирать одну эпоху Используйте этот walkthrough, когда живую доску читать легко, но нужен один понятный путь к исторической реконструкции. Начните с живой доски. Если этого уже достаточно для ответа, на этом можно остановиться. Переходите к Transactions API только тогда, когда вопрос становится историческим: «как Berry Club выглядел в одной более ранней эпохе и какие `draw`-вызовы сделали доску именно такой?» Эти shell-примеры работают и с публичными RPC и Transactions endpoint-ами. Если `FASTNEAR_API_KEY` уже задан в окружении, FastNear-вызовы автоматически пробросят его как bearer-заголовок. Карточка живой доски: запрашивает `berryclub.ek.near` `get_lines` через mainnet RPC и рендерит текущую сетку 50x50 в интерфейсе документации. ## 1. Прочитайте живую доску Это самый короткий полезный запрос: ```bash ARGS_BASE64="$(jq -nc '{lines: [range(0;50)]}' | base64 | tr -d '\n')" AUTH_HEADER=() if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi curl -sS https://rpc.mainnet.fastnear.com \ "${AUTH_HEADER[@]}" \ -H 'content-type: application/json' \ --data "{ \"jsonrpc\": \"2.0\", \"id\": \"berry-live-board\", \"method\": \"query\", \"params\": { \"request_type\": \"call_function\", \"finality\": \"final\", \"account_id\": \"berryclub.ek.near\", \"method_name\": \"get_lines\", \"args_base64\": \"$ARGS_BASE64\" } }" | jq '.result | {block_height, line_count: (.result | implode | fromjson | length)}' ``` Этот запрос отдаёт текущую доску 50x50 прямо из контракта. Дальше нужно только декодировать каждую base64-строку в 50 цветов пикселей. ## 2. Восстановите одну более раннюю эпоху Когда нужна история, держите путь коротким: 1. ограничьте одну эпоху 2. получите кандидатные `draw`-транзакции для `berryclub.ek.near` 3. раскройте эти хеши 4. проиграйте массивы `pixels` от старых к новым В этом примере используется узкое окно вокруг блока `97601515`: ```bash AUTH_HEADER=() if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi curl -sS https://tx.main.fastnear.com/v0/account \ "${AUTH_HEADER[@]}" \ -H 'content-type: application/json' \ --data '{ "account_id": "berryclub.ek.near", "is_function_call": true, "is_receiver": true, "is_real_receiver": true, "from_tx_block_height": 97576515, "to_tx_block_height": 97601516, "desc": false, "limit": 200 }' | jq '.account_txs | map({transaction_hash, tx_block_height}) | .[-5:]' ``` Если окно ещё нужно подобрать, сначала можно использовать [`/v0/blocks`](https://docs.fastnear.com/ru/tx/blocks). Это не часть основного Berry Club-сценария. Раскройте кандидатные хеши и оставьте только верхнеуровневые вызовы `draw`: ```bash AUTH_HEADER=() if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi curl -sS https://tx.main.fastnear.com/v0/transactions \ "${AUTH_HEADER[@]}" \ -H 'content-type: application/json' \ --data '{ "tx_hashes": [ "Hq5qwsuiM2emJrqczWM9awCa7o6sTBYqYpcifUX2SUhQ", "8tBip5M2TrozhSyepAA3tYXpyKooi5t7b9c64wXjFvfL" ] }' | jq '.transactions[] | select(.transaction.receiver_id == "berryclub.ek.near") | .transaction.actions[]?.FunctionCall | select(.method_name == "draw") | {method_name, args: (.args | @base64d | fromjson)}' ``` Затем проиграйте массивы `pixels` от старых к новым: ```javascript const board = Array.from({ length: 50 }, () => Array(50).fill(0)); for (const drawTx of drawTransactionsOldestFirst) { for (const pixel of drawTx.args.pixels) { if (pixel.x < 0 || pixel.x >= 50 || pixel.y < 0 || pixel.y >= 50) { continue; } board[pixel.y][pixel.x] = pixel.color; } } ``` В этом и состоит исторический паттерн. У Berry Club нет готового эндпоинта «доска на блоке N», поэтому старые эпохи восстанавливаются проигрыванием `draw`-записей. ## Связанные руководства - [RPC: call_function](https://docs.fastnear.com/ru/rpc/contract/call-function) - [Transactions API: история аккаунта](https://docs.fastnear.com/ru/tx/account) - [Transactions API: транзакции по хешу](https://docs.fastnear.com/ru/tx/transactions) --- ## Расширенный поиск записи SocialDB - HTML-маршрут: https://docs.fastnear.com/ru/tx/socialdb-proofs - Markdown-маршрут: https://docs.fastnear.com/ru/tx/socialdb-proofs.md **Источник:** [https://docs.fastnear.com/ru/tx/socialdb-proofs](https://docs.fastnear.com/ru/tx/socialdb-proofs) # Расширенный поиск записи SocialDB Используйте эту страницу только тогда, когда отправная точка — уже читаемое значение SocialDB из `api.near.social`, а следующий вопрос относится к историческому поиску записи. Эти shell-шаги работают и с публичными endpoint-ами SocialDB и FastNear. Если `FASTNEAR_API_KEY` уже задан в окружении, FastNear-вызовы автоматически пробросят его как bearer-заголовок. Для FastNear-first-задач сначала откройте [Transactions Examples](https://docs.fastnear.com/ru/tx/examples). Сюда переходите только тогда, когда вопрос звучит как «какая запись сделала это читаемое значение SocialDB истинным?». ## Канонический пример: доказать, что `root.near` установил `profile.name` в `Illia` Используйте этот сценарий, когда читаемый факт уже звучит как «текущее `profile.name` равно `Illia`», а остаётся вопрос, какая запись сделала это поле истинным. Это единственный нюанс SocialDB, который стоит запомнить: для исторического доказательства правильным мостом обычно служит `:block` на уровне поля, а не `:block` родительского объекта. Для этого живого якоря: - текущее `profile.name`: `Illia` - блок записи SocialDB на уровне поля: `75590392` - receipt ID: `GYvnvBxWA46UGa3aGEkqUBeT7hxhVXk2iZScJFZWU8Se` - хеш исходной транзакции: `7HtFWv51k5Bispmh1WYPbAVkxr2X4AL6n98DhcQwVw7w` - внешний блок транзакции: `75590391` ### Shell-сценарий 1. Прочитайте поле из NEAR Social и сохраните блок записи на уровне поля. ```bash ACCOUNT_ID=root.near PROFILE_FIELD=profile/name PROFILE="$(curl -s "https://api.near.social/get" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg account_id "$ACCOUNT_ID" --arg profile_field "$PROFILE_FIELD" '{ keys: [($account_id + "/" + $profile_field)], options: {with_block_height: true} }')")" echo "$PROFILE" | jq --arg account_id "$ACCOUNT_ID" '{ current_name: .[$account_id].profile.name[""], field_block_height: .[$account_id].profile.name[":block"], parent_profile_block_height: .[$account_id].profile[":block"] }' PROFILE_BLOCK_HEIGHT="$(echo "$PROFILE" | jq -r --arg account_id "$ACCOUNT_ID" '.[$account_id].profile.name[":block"]')" ``` 2. Переиспользуйте этот блок уровня поля в FastNear block receipts и восстановите receipt вместе с tx hash. ```bash ACCOUNT_ID=root.near PROFILE_FIELD=profile/name AUTH_HEADER=() if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi PROFILE_BLOCK_HEIGHT="$( curl -s "https://api.near.social/get" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg account_id "$ACCOUNT_ID" --arg profile_field "$PROFILE_FIELD" '{ keys: [($account_id + "/" + $profile_field)], options: {with_block_height: true} }')" \ | jq -r --arg account_id "$ACCOUNT_ID" '.[$account_id].profile.name[":block"]' )" BLOCK_RECEIPTS="$(curl -s "https://tx.main.fastnear.com/v0/block" \ "${AUTH_HEADER[@]}" \ -H 'content-type: application/json' \ --data "$(jq -nc --argjson block_id "$PROFILE_BLOCK_HEIGHT" '{ block_id: $block_id, with_transactions: false, with_receipts: true }')")" echo "$BLOCK_RECEIPTS" | jq --arg account_id "$ACCOUNT_ID" '{ profile_receipt: ( first( .block_receipts[] | select(.predecessor_id == $account_id and .receiver_id == "social.near") | {receipt_id, transaction_hash, block_height, tx_block_height} ) ) }' PROFILE_TX_HASH="$(echo "$BLOCK_RECEIPTS" | jq -r --arg account_id "$ACCOUNT_ID" ' first( .block_receipts[] | select(.predecessor_id == $account_id and .receiver_id == "social.near") | .transaction_hash )')" ``` 3. Переиспользуйте этот tx hash в `POST /v0/transactions` и декодируйте payload записи SocialDB. ```bash ACCOUNT_ID=root.near PROFILE_FIELD=profile/name AUTH_HEADER=() if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi PROFILE_BLOCK_HEIGHT="$( curl -s "https://api.near.social/get" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg account_id "$ACCOUNT_ID" --arg profile_field "$PROFILE_FIELD" '{ keys: [($account_id + "/" + $profile_field)], options: {with_block_height: true} }')" \ | jq -r --arg account_id "$ACCOUNT_ID" '.[$account_id].profile.name[":block"]' )" PROFILE_TX_HASH="$( curl -s "https://tx.main.fastnear.com/v0/block" \ "${AUTH_HEADER[@]}" \ -H 'content-type: application/json' \ --data "$(jq -nc --argjson block_id "$PROFILE_BLOCK_HEIGHT" '{ block_id: $block_id, with_transactions: false, with_receipts: true }')" \ | jq -r --arg account_id "$ACCOUNT_ID" ' first( .block_receipts[] | select(.predecessor_id == $account_id and .receiver_id == "social.near") | .transaction_hash )' )" curl -s "https://tx.main.fastnear.com/v0/transactions" \ "${AUTH_HEADER[@]}" \ -H 'content-type: application/json' \ --data "$(jq -nc --arg tx_hash "$PROFILE_TX_HASH" '{tx_hashes: [$tx_hash]}')" \ | jq --arg account_id "$ACCOUNT_ID" '{ transaction: { hash: .transactions[0].transaction.hash, signer_id: .transactions[0].transaction.signer_id, receiver_id: .transactions[0].transaction.receiver_id, included_block_height: .transactions[0].execution_outcome.block_height }, write_proof: ( .transactions[0].receipts[0].receipt.receipt.Action.actions[0].FunctionCall | (.args | @base64d | fromjson | .data[$account_id].profile) as $profile | { method_name, profile_name: $profile.name, image_fields: (($profile.image // {}) | keys), linktree_keys: (($profile.linktree // {}) | keys) } ) }' ``` Это и есть весь паттерн lookup: читаемое значение, блок уровня поля, мост через receipt и payload транзакции. Тот же мост работает и для других читаемых значений SocialDB: - вариант для связи подписки: `root.near -> mob.near`, блок `79152039`, tx `DvNoqtDrruhmcq7mPpxdFacph2ZCqSzMFF5ZqMRFG78q` - вариант для исходника виджета: `root.near/widget/Profile`, блок `76029540`, tx `ELS3DrE4Upoc91ZnBh4thVugxCUBAbaLFB4nyKsoyRNP` Ключевая идея не меняется: начните с читаемого значения и его write-block, восстановите receipt `*.near -> social.near` из блока, а затем декодируйте payload `social.near set` из исходной транзакции. --- ## RPC протокола NEAR: Просмотр ключа доступа - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/account/view_access_key - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/account/view_access_key.md # RPC протокола NEAR: Просмотр ключа доступа Просмотр ключа доступа аккаунта Получите права и nonce одного ключа доступа аккаунта по его публичному ключу. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/account/view_access_key - https://docs.fastnear.com/ru/rpcs/account/view_access_key/other/view_access_key - https://docs.fastnear.com/ru/reference/operation/view_access_key ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/account/view_access_key.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "account_id": "root.near", "public_key": "ed25519:6666666666666666666666666666666666666666666", "request_type": "view_access_key", "finality": "final" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "account_id": "root.near", "public_key": "ed25519:6666666666666666666666666666666666666666666", "request_type": "view_access_key", "finality": "final" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `account_id` (body, обязательный, string): ID аккаунта NEAR. - `public_key` (body, обязательный, string): Публичный ключ в формате `ed25519:...` или `secp256k1:...`. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "query" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "request_type", "account_id", "public_key", "финальность" ], "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "public_key", "required": true, "schema": { "type": "string", "description": "Публичный ключ с префиксом ed25519: или secp256k1:" } }, { "name": "request_type", "required": true, "schema": { "type": "string", "enum": [ "view_access_key" ] } }, { "name": "финальность", "required": true, "schema": { "type": "string", "description": "Финальность блока", "enum": [ "final", "near-final", "optimistic" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Информация о ключе доступа ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Описывает область действия ключа доступа и nonce.", "required": [ "nonce", "permission" ], "properties": [ { "name": "nonce", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "permission", "required": true, "schema": { "type": "object", "description": "One of multiple possible types" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Список ключей доступа - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/account/view_access_key_list - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/account/view_access_key_list.md # RPC протокола NEAR: Список ключей доступа Просмотр списка ключей доступа аккаунта Получите все ключи доступа аккаунта — каждый с правами и nonce. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/account/view_access_key_list - https://docs.fastnear.com/ru/rpcs/account/view_access_key_list/other/view_access_key_list - https://docs.fastnear.com/ru/reference/operation/view_access_key_list ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/account/view_access_key_list.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "account_id": "root.near", "request_type": "view_access_key_list", "finality": "final" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "account_id": "root.near", "request_type": "view_access_key_list", "finality": "final" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `account_id` (body, обязательный, string): ID аккаунта NEAR. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "query" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "request_type", "account_id", "финальность" ], "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "request_type", "required": true, "schema": { "type": "string", "enum": [ "view_access_key_list" ] } }, { "name": "финальность", "required": true, "schema": { "type": "string", "description": "Финальность блока", "enum": [ "final", "near-final", "optimistic" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Список ключей доступа аккаунта ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Список ключей доступа", "required": [ "ключи" ], "properties": [ { "name": "ключи", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Описывает информацию о ключе доступа, включая публичный ключ." } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Просмотр аккаунта - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/account/view_account - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/account/view_account.md # RPC протокола NEAR: Просмотр аккаунта Просмотр аккаунта Получите баланс аккаунта, размер хранилища и хеш кода на выбранной высоте блока или финальности. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/account/view_account - https://docs.fastnear.com/ru/rpcs/account/view_account/other/view_account - https://docs.fastnear.com/ru/reference/operation/view_account ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/account/view_account.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "account_id": "root.near", "request_type": "view_account", "finality": "final" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "account_id": "root.near", "request_type": "view_account", "finality": "final" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `account_id` (body, обязательный, string): ID аккаунта NEAR. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "query" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "request_type", "account_id", "финальность" ], "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "request_type", "required": true, "schema": { "type": "string", "enum": [ "view_account" ] } }, { "name": "финальность", "required": true, "schema": { "type": "string", "description": "Финальность блока", "enum": [ "final", "near-final", "optimistic" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Сведения об аккаунте ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Представление аккаунта", "required": [ "amount", "locked", "code_hash", "storage_usage" ], "properties": [ { "name": "amount", "required": true, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "code_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "global_contract_account_id", "required": false, "schema": { "type": "string", "nullable": true, "description": "ID аккаунта NEAR" } }, { "name": "global_contract_hash", "required": false, "schema": { "type": "string", "nullable": true, "description": "Base58-encoded hash" } }, { "name": "locked", "required": true, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "storage_paid_at", "required": false, "schema": { "type": "integer", "description": "TODO(2271): deprecated.", "format": "uint64", "default": 0 } }, { "name": "storage_usage", "required": true, "schema": { "type": "integer", "format": "uint64" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Блок по высоте - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/block/block_by_height - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/block/block_by_height.md # RPC протокола NEAR: Блок по высоте Получить блок по высоте Получите заголовок и сводку по чанкам блока по его высоте в цепочке. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/block/block_by_height - https://docs.fastnear.com/ru/rpcs/block/block_by_height/other/block_by_height - https://docs.fastnear.com/ru/reference/operation/block_by_height ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/block/block_by_height.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "блок", "params": { "block_id": 9820210 } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "блок", "params": { "block_id": 9820210 } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `block_id` (body, обязательный, integer): Высота блока NEAR для запроса. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "блок" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "block_id" ], "properties": [ { "name": "block_id", "required": true, "schema": { "type": "integer", "description": "Высота блока для запроса" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object" } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Блок по хешу - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/block/block_by_id - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/block/block_by_id.md # RPC протокола NEAR: Блок по хешу Получить блок по хешу Получите заголовок и сводку по чанкам блока по его SHA-256-хешу в кодировке Base58. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/block/block_by_id - https://docs.fastnear.com/ru/rpcs/block/block_by_id/other/block_by_id - https://docs.fastnear.com/ru/reference/operation/block_by_id ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/block/block_by_id.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "блок", "params": { "block_id": "EPnLgE7iEq9s7yTkos96M3cWymH5avBAPm3qx3NXqR8H" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "блок", "params": { "block_id": "EPnLgE7iEq9s7yTkos96M3cWymH5avBAPm3qx3NXqR8H" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `block_id` (body, обязательный, string): Хеш блока в кодировке Base58. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "блок" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "block_id" ], "properties": [ { "name": "block_id", "required": true, "schema": { "type": "string", "description": "Хеш блока в кодировке Base58" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object" } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Эффекты блока - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/block/block_effects - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/block/block_effects.md # RPC протокола NEAR: Эффекты блока Получить эффекты блока Получите сводку всех изменений состояния в одном блоке — какие аккаунты, ключи и записи состояния контрактов были затронуты. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/block/block_effects - https://docs.fastnear.com/ru/rpcs/block/block_effects/other/block_effects - https://docs.fastnear.com/ru/reference/operation/block_effects ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/block/block_effects.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "block_effects", "params": { "block_id": 9820210 } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "block_effects", "params": { "block_id": 9820210 } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `block_id` (body, обязательный, integer | string): Высота блока (целое число) или хеш блока (строка). ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "block_effects" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "block_id" ], "properties": [ { "name": "block_id", "required": true, "schema": { "description": "Высота блока (целое число) или хеш блока (строка)", "oneOf": [ { "type": "integer", "description": "Высота блока" }, { "type": "string", "description": "Хеш блока в кодировке Base58" } ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "block_hash", "changes" ], "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "changes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "One of multiple possible types" } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Вызов view-метода - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/contract/call - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/contract/call.md # RPC протокола NEAR: Вызов view-метода Вызвать view-метод контракта Вызовите view-метод контракта без газа и изменений состояния — чтение вычисляемых значений из логики контракта. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/contract/call - https://docs.fastnear.com/ru/rpcs/contract/call/other/call_function - https://docs.fastnear.com/ru/reference/operation/call_function ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/contract/call.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "request_type": "call_function", "finality": "final", "account_id": "contract.near", "method_name": "get_info", "args_base64": "e30=" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "request_type": "call_function", "finality": "final", "account_id": "contract.near", "method_name": "get_info", "args_base64": "e30=" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `account_id` (body, обязательный, string): ID аккаунта NEAR. - `args_base64` (body, обязательный, string): Сырые аргументы метода в кодировке Base64. Контракты, работающие с JSON, обычно ожидают UTF-8-байты JSON-полезной нагрузки; пример `e30=` соответствует `{}`. - `method_name` (body, обязательный, string): Имя view-метода контракта. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "query" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "request_type", "account_id", "method_name", "args_base64", "финальность" ], "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "args_base64", "required": true, "schema": { "type": "string", "description": "Base64-кодированные сырые аргументы метода. Контракты, работающие с JSON, обычно ожидают UTF-8-байты JSON-полезной нагрузки; пример `e30=` соответствует `{}`." } }, { "name": "method_name", "required": true, "schema": { "type": "string", "description": "Name of the contract view method to invoke." } }, { "name": "request_type", "required": true, "schema": { "type": "string", "enum": [ "call_function" ] } }, { "name": "финальность", "required": true, "schema": { "type": "string", "description": "Финальность блока", "enum": [ "final", "near-final", "optimistic" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Результат, возвращённый методом контракта", "required": [ "result", "logs" ], "properties": [ { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "result", "required": true, "schema": { "type": "array", "items": { "type": "integer", "format": "uint8" } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Код контракта - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/contract/view_code - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/contract/view_code.md # RPC протокола NEAR: Код контракта Получить код контракта Получите скомпилированный WebAssembly-байткод, развёрнутый непосредственно на одном аккаунте. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/contract/view_code - https://docs.fastnear.com/ru/rpcs/contract/view_code/other/view_code - https://docs.fastnear.com/ru/reference/operation/view_code ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/contract/view_code.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "account_id": "intents.near", "request_type": "view_code", "finality": "final" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "account_id": "intents.near", "request_type": "view_code", "finality": "final" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `account_id` (body, обязательный, string): ID аккаунта NEAR. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "query" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "request_type", "account_id", "финальность" ], "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "request_type", "required": true, "schema": { "type": "string", "enum": [ "view_code" ] } }, { "name": "финальность", "required": true, "schema": { "type": "string", "description": "Финальность блока", "enum": [ "final", "near-final", "optimistic" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Представление кода контракта.", "required": [ "code_base64", "hash" ], "properties": [ { "name": "code_base64", "required": true, "schema": { "type": "string" } }, { "name": "hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Глобальный код контракта - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/contract/view_global_contract_code - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/contract/view_global_contract_code.md # RPC протокола NEAR: Глобальный код контракта Получить глобальный код контракта Найдите WebAssembly-байткод глобального контракта по SHA-256-хешу его кода в кодировке Base58. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/contract/view_global_contract_code - https://docs.fastnear.com/ru/rpcs/contract/view_global_contract_code/other/view_global_contract_code - https://docs.fastnear.com/ru/reference/operation/view_global_contract_code ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/contract/view_global_contract_code.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "code_hash": "A2VxywASqbnarBAfTWobhDZjMXobjnYyJmkjhoXAiYBz", "request_type": "view_global_contract_code", "finality": "final" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "code_hash": "A2VxywASqbnarBAfTWobhDZjMXobjnYyJmkjhoXAiYBz", "request_type": "view_global_contract_code", "finality": "final" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `code_hash` (body, обязательный, string): Хеш в кодировке Base58. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "query" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "request_type", "code_hash", "финальность" ], "properties": [ { "name": "code_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "request_type", "required": true, "schema": { "type": "string", "enum": [ "view_global_contract_code" ] } }, { "name": "финальность", "required": true, "schema": { "type": "string", "description": "Финальность блока", "enum": [ "final", "near-final", "optimistic" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Представление кода контракта.", "required": [ "code_base64", "hash" ], "properties": [ { "name": "code_base64", "required": true, "schema": { "type": "string" } }, { "name": "hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Глобальный код контракта по аккаунту - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/contract/view_global_contract_code_by_account_id - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/contract/view_global_contract_code_by_account_id.md # RPC протокола NEAR: Глобальный код контракта по аккаунту Получить глобальный код контракта по аккаунту Найдите WebAssembly-байткод глобального контракта по ID аккаунта, который его зарегистрировал. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/contract/view_global_contract_code_by_account_id - https://docs.fastnear.com/ru/rpcs/contract/view_global_contract_code_by_account_id/other/view_global_contract_code_by_account_id - https://docs.fastnear.com/ru/reference/operation/view_global_contract_code_by_account_id ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/contract/view_global_contract_code_by_account_id.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "account_id": "global-contract.nfts.tg", "request_type": "view_global_contract_code_by_account_id", "finality": "final" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "account_id": "global-contract.nfts.tg", "request_type": "view_global_contract_code_by_account_id", "finality": "final" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `account_id` (body, обязательный, string): ID аккаунта NEAR. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "query" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "request_type", "account_id", "финальность" ], "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "request_type", "required": true, "schema": { "type": "string", "enum": [ "view_global_contract_code_by_account_id" ] } }, { "name": "финальность", "required": true, "schema": { "type": "string", "description": "Финальность блока", "enum": [ "final", "near-final", "optimistic" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Представление кода контракта.", "required": [ "code_base64", "hash" ], "properties": [ { "name": "code_base64", "required": true, "schema": { "type": "string" } }, { "name": "hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Состояние контракта - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/contract/view_state - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/contract/view_state.md # RPC протокола NEAR: Состояние контракта Получить состояние контракта Получите сырое состояние «ключ-значение», записанное контрактом, с опциональным фильтром по префиксу ключа. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/contract/view_state - https://docs.fastnear.com/ru/rpcs/contract/view_state/other/view_state - https://docs.fastnear.com/ru/reference/operation/view_state ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/contract/view_state.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "request_type": "view_state", "finality": "final", "account_id": "lockup.near", "prefix_base64": "U1RBVEU=" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "query", "params": { "request_type": "view_state", "finality": "final", "account_id": "lockup.near", "prefix_base64": "U1RBVEU=" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `account_id` (body, обязательный, string): ID аккаунта NEAR. - `include_proof` (body, boolean): Добавить криптографическое доказательство к ответу. - `prefix_base64` (body, обязательный, string): Префикс ключа хранилища в кодировке Base64. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "query" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "request_type", "account_id", "prefix_base64", "финальность" ], "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "include_proof", "required": false, "schema": { "type": "boolean", "description": "Include a Merkle proof for the queried state alongside the values." } }, { "name": "prefix_base64", "required": true, "schema": { "type": "string", "description": "Base64-encoded storage key prefix. Use an empty string (`\"\"`) to remove the prefix filter and return all matching contract state values. Large contracts can produce very large responses when no prefix is set." } }, { "name": "request_type", "required": true, "schema": { "type": "string", "enum": [ "view_state" ] } }, { "name": "финальность", "required": true, "schema": { "type": "string", "description": "Финальность блока", "enum": [ "final", "near-final", "optimistic" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Итоговые значения состояния для запроса просмотра состояния", "required": [ "values" ], "properties": [ { "name": "доказательство", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "values", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Элемент состояния: ключ и значение сериализованы в Base64, а также приложено доказательство включения этого элемента состояния." } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Изменения состояния - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/changes - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/changes.md # RPC протокола NEAR: Изменения состояния Получить изменения состояния Получите подробные изменения состояния в блоке — с фильтром по аккаунту, префиксу ключа или типу изменения. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/changes - https://docs.fastnear.com/ru/rpcs/protocol/changes/other/changes - https://docs.fastnear.com/ru/reference/operation/changes ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/changes.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "changes", "params": { "finality": "final", "changes_type": "account_changes", "account_ids": [ "root.near" ] } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "changes", "params": { "finality": "final", "changes_type": "account_changes", "account_ids": [ "root.near" ] } }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "changes" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "description": "One of multiple possible types" } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "block_hash", "changes" ], "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "changes", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "cause" ], "properties": [ { "name": "cause", "required": true, "schema": { "type": "object", "description": "One of multiple possible types" } } ] } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Чанк по блоку и шарду - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/chunk_by_block_shard - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/chunk_by_block_shard.md # RPC протокола NEAR: Чанк по блоку и шарду Получить чанк по блоку и шарду Получите транзакции и квитанции одного чанка по родительскому блоку и индексу шарда. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/chunk_by_block_shard - https://docs.fastnear.com/ru/rpcs/protocol/chunk_by_block_shard/other/chunk_by_block_shard - https://docs.fastnear.com/ru/reference/operation/chunk_by_block_shard ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/chunk_by_block_shard.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "chunk", "params": { "block_id": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T", "shard_id": 10 } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "chunk", "params": { "block_id": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T", "shard_id": 10 } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `block_id` (body, обязательный, integer | string): Высота блока (целое число) или хеш блока (строка). - `shard_id` (body, обязательный, integer): Идентификатор шарда. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "chunk" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "block_id", "shard_id" ], "properties": [ { "name": "block_id", "required": true, "schema": { "description": "Высота блока (целое число) или хеш блока (строка)", "oneOf": [ { "type": "integer", "description": "Высота блока" }, { "type": "string", "description": "Хеш блока в кодировке Base58" } ] } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "description": "Shard identifier" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "author", "header", "транзакции", "квитанции" ], "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Contains main info about the chunk.", "required": [ "chunk_hash", "prev_block_hash", "outcome_root", "prev_state_root", "encoded_merkle_root", "encoded_length", "height_created", "height_included", "shard_id", "gas_used", "gas_limit", "balance_burnt", "outgoing_receipts_root", "tx_root", "validator_proposals", "signature" ], "properties": [ { "name": "balance_burnt", "required": true, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "bandwidth_requests", "required": false, "schema": { "type": "object", "nullable": true, "description": "One of multiple possible types" } }, { "name": "chunk_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "congestion_info", "required": false, "schema": { "type": "object", "nullable": true, "description": "Хранит уровень перегрузки шарда. Подробнее о перегрузке [здесь](https://near.github.io/nearcore/architecture/how/receipt-congestion.html?highlight=congestion#receipt-congestion)" } }, { "name": "encoded_length", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "encoded_merkle_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "gas_limit", "required": true, "schema": { "type": "string", "description": "Количество газа" } }, { "name": "gas_used", "required": true, "schema": { "type": "string", "description": "Количество газа" } }, { "name": "height_created", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "outgoing_receipts_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "prev_block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "prev_state_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "rent_paid", "required": false, "schema": { "type": "string", "description": "Amount in yoctoNEAR", "default": "0" } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "description": "Shard identifier" } }, { "name": "signature", "required": true, "schema": { "type": "string", "description": "Base58-encoded cryptographic signature" } }, { "name": "tx_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "validator_proposals", "required": true, "schema": { "type": "array", "items": { "type": "object" } } }, { "name": "validator_reward", "required": false, "schema": { "type": "string", "description": "Amount in yoctoNEAR", "default": "0" } } ] } }, { "name": "квитанции", "required": true, "schema": { "type": "array", "items": { "type": "object" } } }, { "name": "транзакции", "required": true, "schema": { "type": "array", "items": { "type": "object" } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Чанк по хешу - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/chunk_by_hash - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/chunk_by_hash.md # RPC протокола NEAR: Чанк по хешу Получить чанк по хешу Получите транзакции и квитанции одного чанка по его хешу содержимого в кодировке Base58. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/chunk_by_hash - https://docs.fastnear.com/ru/rpcs/protocol/chunk_by_hash/other/chunk_by_hash - https://docs.fastnear.com/ru/reference/operation/chunk_by_hash ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/chunk_by_hash.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "chunk", "params": { "chunk_id": "349Wr5HMm2Bvyy8GuhExAZ4F353tXCChx1FfAsYnQTAn" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "chunk", "params": { "chunk_id": "349Wr5HMm2Bvyy8GuhExAZ4F353tXCChx1FfAsYnQTAn" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `chunk_id` (body, обязательный, string): Хеш чанка в кодировке Base58. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "chunk" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "chunk_id" ], "properties": [ { "name": "chunk_id", "required": true, "schema": { "type": "string", "description": "Base58-encoded chunk hash" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "author", "header", "транзакции", "квитанции" ], "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Contains main info about the chunk.", "required": [ "chunk_hash", "prev_block_hash", "outcome_root", "prev_state_root", "encoded_merkle_root", "encoded_length", "height_created", "height_included", "shard_id", "gas_used", "gas_limit", "balance_burnt", "outgoing_receipts_root", "tx_root", "validator_proposals", "signature" ], "properties": [ { "name": "balance_burnt", "required": true, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "bandwidth_requests", "required": false, "schema": { "type": "object", "nullable": true, "description": "One of multiple possible types" } }, { "name": "chunk_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "congestion_info", "required": false, "schema": { "type": "object", "nullable": true, "description": "Хранит уровень перегрузки шарда. Подробнее о перегрузке [здесь](https://near.github.io/nearcore/architecture/how/receipt-congestion.html?highlight=congestion#receipt-congestion)" } }, { "name": "encoded_length", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "encoded_merkle_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "gas_limit", "required": true, "schema": { "type": "string", "description": "Количество газа" } }, { "name": "gas_used", "required": true, "schema": { "type": "string", "description": "Количество газа" } }, { "name": "height_created", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "outgoing_receipts_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "prev_block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "prev_state_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "rent_paid", "required": false, "schema": { "type": "string", "description": "Amount in yoctoNEAR", "default": "0" } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "description": "Shard identifier" } }, { "name": "signature", "required": true, "schema": { "type": "string", "description": "Base58-encoded cryptographic signature" } }, { "name": "tx_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "validator_proposals", "required": true, "schema": { "type": "array", "items": { "type": "object" } } }, { "name": "validator_reward", "required": false, "schema": { "type": "string", "description": "Amount in yoctoNEAR", "default": "0" } } ] } }, { "name": "квитанции", "required": true, "schema": { "type": "array", "items": { "type": "object" } } }, { "name": "транзакции", "required": true, "schema": { "type": "array", "items": { "type": "object" } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Конфигурация клиента - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/client_config - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/client_config.md # RPC протокола NEAR: Конфигурация клиента Получить конфигурацию клиента Получите локальную клиентскую конфигурацию узла — таймауты, настройки повторов и параметры оператора. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/client_config - https://docs.fastnear.com/ru/rpcs/protocol/client_config/other/client_config - https://docs.fastnear.com/ru/reference/operation/client_config ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/client_config.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "client_config", "params": [] } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "client_config", "params": [] }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "client_config" ] } }, { "name": "params", "required": true, "schema": { "type": "array", "description": "Empty array as this method takes no parameters", "example": [] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "ClientConfig where some fields can be updated at runtime.", "properties": [ { "name": "archive", "required": false, "schema": { "type": "boolean", "description": "Not clear old data, set `true` for archive nodes." } }, { "name": "block_fetch_horizon", "required": false, "schema": { "type": "integer", "description": "Горизонт, после которого вместо получения блока извлекается полное состояние.", "format": "uint64" } }, { "name": "block_header_fetch_horizon", "required": false, "schema": { "type": "integer", "description": "Behind this horizon header fetch kicks in.", "format": "uint64" } }, { "name": "block_production_tracking_delay", "required": false, "schema": { "type": "array", "description": "Интервал проверки необходимости выпустить или пропустить блок.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "catchup_step_period", "required": false, "schema": { "type": "array", "description": "Time between check to perform catchup.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "chain_id", "required": false, "schema": { "type": "string", "description": "ID цепочки для статуса." } }, { "name": "chunk_distribution_network", "required": false, "schema": { "type": "object", "nullable": true, "description": "Конфигурация функции Chunk Distribution Network.\nОна позволяет узлам отправлять и получать чанки через центральный поток.\nПреимущества такого подхода: (1) меньше трафика запросов и ответов\nв одноранговой сети и (2) меньшая задержка для RPC-узлов, индексирующих цепочку.", "properties": [ { "name": "enabled", "required": false, "schema": { "type": "boolean" } }, { "name": "uris", "required": false, "schema": { "type": "object", "description": "URI для функции Chunk Distribution Network." } } ] } }, { "name": "chunk_request_retry_period", "required": false, "schema": { "type": "array", "description": "Время между проверками на повторный запрос чанков.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "chunk_validation_threads", "required": false, "schema": { "type": "integer", "description": "Number of threads for ChunkValidationActor pool.", "format": "uint" } }, { "name": "chunk_wait_mult", "required": false, "schema": { "type": "array", "description": "Multiplier for the wait time for all chunks to be received.", "items": { "type": "integer", "format": "int32" } } }, { "name": "chunks_cache_height_horizon", "required": false, "schema": { "type": "integer", "description": "Height horizon for the chunk cache. A chunk is removed from the cache\nif its height + chunks_cache_height_horizon < largest_seen_height.\nThe default value is DEFAULT_CHUNKS_CACHE_HEIGHT_HORIZON.", "format": "uint64" } }, { "name": "client_background_migration_threads", "required": false, "schema": { "type": "integer", "description": "Количество потоков, выполняющих фоновые миграционные работы в клиенте.", "format": "uint" } }, { "name": "cloud_archival_writer", "required": false, "schema": { "type": "object", "nullable": true, "description": "Конфигурация облачного компонента записи архивных данных. Если эта конфигурация задана, компонент включается и\nзаписывает данные, связанные с чанками, на основе отслеживаемых шардов. Эта конфигурация также управляет дополнительным архивным\nповедением, например записью данных блоков и интервалом опроса.", "properties": [ { "name": "archive_block_data", "required": false, "schema": { "type": "boolean", "description": "Определяет, должны ли данные, связанные с блоками, записываться в облачное хранилище.", "default": false } }, { "name": "polling_interval", "required": false, "schema": { "type": "object", "description": "Интервал, с которым система проверяет новые блоки или чанки для архивации.", "default": { "nanos": 0, "secs": 1 } } } ] } }, { "name": "disable_tx_routing", "required": false, "schema": { "type": "boolean", "description": "Если значение `true`, узел не будет пересылать транзакции следующим производителям чанков." } }, { "name": "doomslug_step_period", "required": false, "schema": { "type": "array", "description": "Time between running doomslug timer.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "enable_early_prepare_transactions", "required": false, "schema": { "type": "boolean", "description": "Если значение `true`, транзакции для следующего чанка будут подготавливаться заранее, сразу после того,\nкак будет готово post-state предыдущего чанка. Это помогает быстрее выпускать чанки в сетях с высокой пропускной способностью.\nТекущая реализация увеличивает задержку в сетях с низкой нагрузкой; это будет исправлено позже.\nПо умолчанию параметр отключён." } }, { "name": "enable_multiline_logging", "required": false, "schema": { "type": "boolean" } }, { "name": "enable_statistics_export", "required": false, "schema": { "type": "boolean", "description": "Re-export storage layer statistics as prometheus metrics." } }, { "name": "epoch_length", "required": false, "schema": { "type": "integer", "description": "Epoch length.", "format": "uint64" } }, { "name": "epoch_sync", "required": false, "schema": { "type": "object", "description": "Options for epoch sync.", "properties": [ { "name": "epoch_sync_horizon_num_epochs", "required": false, "schema": { "type": "integer", "description": "Количество эпох от головы сети, за пределами которого узел переключится с header-синхронизации\nна epoch-синхронизацию. На стороне потребителя это значение\nумножается на epoch_length, чтобы получить горизонт в блоках.", "format": "uint64", "default": 2 } }, { "name": "timeout_for_epoch_sync", "required": false, "schema": { "type": "object", "description": "Timeout for epoch sync requests. The node will continue retrying indefinitely even\nif this timeout is exceeded." } } ] } }, { "name": "expected_shutdown", "required": false, "schema": { "type": "string", "description": "Корректное завершение работы на ожидаемой высоте блока." } }, { "name": "gc", "required": false, "schema": { "type": "object", "description": "Configuration for garbage collection.", "properties": [ { "name": "gc_blocks_limit", "required": false, "schema": { "type": "integer", "description": "Максимальное количество блоков, собираемых сборщиком мусора\nза один вызов.", "format": "uint64", "default": 2 } }, { "name": "gc_fork_clean_step", "required": false, "schema": { "type": "integer", "description": "Maximum number of height to go through at each garbage collection step\nwhen cleaning forks during garbage collection.", "format": "uint64", "default": 100 } }, { "name": "gc_num_epochs_to_keep", "required": false, "schema": { "type": "integer", "description": "Number of epochs for which we keep store data.", "format": "uint64", "default": 5 } }, { "name": "gc_step_period", "required": false, "schema": { "type": "object", "description": "How often gc should be run", "default": { "nanos": 500000000, "secs": 0 } } } ] } }, { "name": "header_sync_expected_height_per_second", "required": false, "schema": { "type": "integer", "description": "Expected increase of header head height per second during header sync", "format": "uint64" } }, { "name": "header_sync_initial_timeout", "required": false, "schema": { "type": "array", "description": "How much time to wait after initial header sync", "items": { "type": "integer", "format": "uint64" } } }, { "name": "header_sync_progress_timeout", "required": false, "schema": { "type": "array", "description": "How much time to wait after some progress is made in header sync", "items": { "type": "integer", "format": "uint64" } } }, { "name": "header_sync_stall_ban_timeout", "required": false, "schema": { "type": "array", "description": "How much time to wait before banning a peer in header sync if sync is too slow", "items": { "type": "integer", "format": "uint64" } } }, { "name": "log_summary_period", "required": false, "schema": { "type": "array", "description": "Period between logging summary information.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "log_summary_style", "required": false, "schema": { "type": "string", "description": "Enable coloring of the logs", "enum": [ "plain", "colored" ] } }, { "name": "max_block_production_delay", "required": false, "schema": { "type": "array", "description": "Максимальное время ожидания подтверждений перед выпуском блока.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "max_block_wait_delay", "required": false, "schema": { "type": "array", "description": "Maximum duration before skipping given height.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "max_gas_burnt_view", "required": false, "schema": { "type": "string", "nullable": true, "description": "Количество газа" } }, { "name": "min_block_production_delay", "required": false, "schema": { "type": "array", "description": "Минимальная длительность перед выпуском блока.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "min_num_peers", "required": false, "schema": { "type": "integer", "description": "Minimum number of peers to start syncing.", "format": "uint" } }, { "name": "num_block_producer_seats", "required": false, "schema": { "type": "integer", "description": "Количество мест для производителей блоков", "format": "uint64" } }, { "name": "orphan_state_witness_max_size", "required": false, "schema": { "type": "integer", "description": "Максимальный размер state witness в OrphanStateWitnessPool.\nВ пуле сохраняются только orphan-witness, размер которых меньше этого значения.\nЭто ограничивает максимальное потребление памяти пулом OrphanStateWitnessPool.", "format": "uint64" } }, { "name": "orphan_state_witness_pool_size", "required": false, "schema": { "type": "integer", "description": "OrphanStateWitnessPool хранит экземпляры ChunkStateWitness, которые нельзя обработать,\nпотому что предыдущий блок недоступен. Эти witness остаются в пуле, пока\nне появится нужный блок. Эта переменная определяет, сколько witness можно хранить в пуле.", "format": "uint" } }, { "name": "produce_chunk_add_transactions_time_limit", "required": false, "schema": { "type": "string", "description": "Ограничивает время добавления транзакций в чанк.\nНода формирует чанк, добавляя транзакции из пула транзакций, пока\nне будет достигнут один из лимитов. Этот лимит по времени гарантирует, что добавление транзакций не займёт\nдольше указанной длительности и поможет быстрее выпустить чанк." } }, { "name": "produce_empty_blocks", "required": false, "schema": { "type": "boolean", "description": "Выпускать пустые блоки; значение `false` используется для тестирования." } }, { "name": "protocol_version_check", "required": false, "schema": { "type": "string", "description": "Определяет, проверяет ли узел совместимость версии сети для следующей или через одну эпохи.", "enum": [ "Next", "NextNext" ] } }, { "name": "resharding_config", "required": false, "schema": { "type": "string" } }, { "name": "rpc_addr", "required": false, "schema": { "type": "string", "nullable": true, "description": "Порт RPC для статуса, на котором слушает узел." } }, { "name": "save_invalid_witnesses", "required": false, "schema": { "type": "boolean", "description": "Save observed instances of invalid ChunkStateWitness to the database in DBCol::InvalidChunkStateWitnesses.\nSaving invalid witnesses is useful for analysis and debugging.\nThis option can cause extra load on the database and is not recommended for production use." } }, { "name": "save_latest_witnesses", "required": false, "schema": { "type": "boolean", "description": "Сохраняет наблюдаемые экземпляры ChunkStateWitness в базу данных DBCol::LatestChunkStateWitnesses.\nСохранение последних экземпляров ChunkStateWitness полезно для анализа и отладки.\nЭта опция может создавать дополнительную нагрузку на базу данных и не рекомендуется для продового контура." } }, { "name": "save_state_changes", "required": false, "schema": { "type": "boolean", "description": "Нужно ли сохранять изменения состояния на диск." } }, { "name": "save_trie_changes", "required": false, "schema": { "type": "boolean", "description": "save_trie_changes should be set to true iff\n- archive if false - non-archival nodes need trie changes to perform garbage collection\n- archive is true, cold_store is configured and migration to split_storage is finished - node\nworking in split storage mode needs trie changes in order to do garbage collection on hot." } }, { "name": "save_tx_outcomes", "required": false, "schema": { "type": "boolean", "description": "Нужно ли сохранять результаты транзакций на диск." } }, { "name": "save_untracked_partial_chunks_parts", "required": false, "schema": { "type": "boolean", "description": "Whether to persist partial chunk parts for untracked shards or not." } }, { "name": "skip_sync_wait", "required": false, "schema": { "type": "boolean", "description": "Skip waiting for sync (for testing or single node testnet)." } }, { "name": "state_request_server_threads", "required": false, "schema": { "type": "integer", "description": "Number of threads for StateRequestActor pool.", "format": "uint" } }, { "name": "state_request_throttle_period", "required": false, "schema": { "type": "array", "description": "Количество секунд между запросами состояния для view-клиента.\nОкно троттлинга для запросов состояния (заголовки и части).", "items": { "type": "integer", "format": "uint64" } } }, { "name": "state_requests_per_throttle_period", "required": false, "schema": { "type": "integer", "description": "Максимальное количество запросов состояния, обслуживаемых за период троттлинга", "format": "uint" } }, { "name": "state_sync", "required": false, "schema": { "type": "object", "description": "Параметры синхронизации состояния.", "properties": [ { "name": "concurrency", "required": false, "schema": { "type": "object" } }, { "name": "dump", "required": false, "schema": { "type": "object", "nullable": true, "description": "Настраивает способ выгрузки состояния во внешнее хранилище." } }, { "name": "parts_compression_lvl", "required": false, "schema": { "type": "integer", "description": "Уровень сжатия Zstd для частей состояния.", "format": "int32", "default": 1 } }, { "name": "sync", "required": false, "schema": { "type": "string", "nullable": true, "description": "Синхронизирует состояние от пиров, не читая ничего из внешнего хранилища.", "enum": [ "Peers" ] } } ] } }, { "name": "state_sync_enabled", "required": false, "schema": { "type": "boolean", "description": "Использовать ли механизм State Sync.\nЕсли отключён, узел будет выполнять Block Sync вместо State Sync." } }, { "name": "state_sync_external_backoff", "required": false, "schema": { "type": "array", "description": "Дополнительное время ожидания после неудачного запроса к внешнему хранилищу", "items": { "type": "integer", "format": "uint64" } } }, { "name": "state_sync_external_timeout", "required": false, "schema": { "type": "array", "description": "Как долго ждать ответа от централизованной синхронизации состояния", "items": { "type": "integer", "format": "uint64" } } }, { "name": "state_sync_p2p_timeout", "required": false, "schema": { "type": "array", "description": "Как долго ждать ответа от p2p-синхронизации состояния", "items": { "type": "integer", "format": "uint64" } } }, { "name": "state_sync_retry_backoff", "required": false, "schema": { "type": "array", "description": "Как долго ждать после неудачного запроса синхронизации состояния", "items": { "type": "integer", "format": "uint64" } } }, { "name": "sync_check_period", "required": false, "schema": { "type": "array", "description": "How often to check that we are not out of sync.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "sync_height_threshold", "required": false, "schema": { "type": "integer", "description": "Sync height threshold: below this difference in height don't start syncing.", "format": "uint64" } }, { "name": "sync_max_block_requests", "required": false, "schema": { "type": "integer", "description": "Максимальное количество запросов блоков, отправляемых пирам для синхронизации", "format": "uint" } }, { "name": "sync_step_period", "required": false, "schema": { "type": "array", "description": "While syncing, how long to check for each step.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "tracked_shards_config", "required": false, "schema": { "type": "object", "description": "One of multiple possible types" } }, { "name": "transaction_pool_size_limit", "required": false, "schema": { "type": "integer", "nullable": true, "description": "Ограничение размера пула транзакций одного шарда в байтах. Если не задано,\nразмер не ограничен.", "format": "uint64" } }, { "name": "transaction_request_handler_threads", "required": false, "schema": { "type": "integer", "format": "uint" } }, { "name": "trie_viewer_state_size_limit", "required": false, "schema": { "type": "integer", "nullable": true, "description": "Верхняя граница размера состояния контракта в байтах, при котором оно ещё доступно для просмотра. None — без ограничения", "format": "uint64" } }, { "name": "ttl_account_id_router", "required": false, "schema": { "type": "array", "description": "Time to persist Accounts Id in the router without removing them.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "tx_routing_height_horizon", "required": false, "schema": { "type": "integer", "description": "Если узел не является производителем чанков в пределах этого числа блоков,\nмаршрутизировать запросы к будущим производителям чанков.", "format": "uint64" } }, { "name": "version", "required": false, "schema": { "type": "object", "description": "Data structure for semver version and github tag or commit.", "required": [ "version", "build", "commit" ], "properties": [ { "name": "build", "required": true, "schema": { "type": "string" } }, { "name": "commit", "required": true, "schema": { "type": "string" } }, { "name": "rustc_version", "required": false, "schema": { "type": "string", "default": "" } }, { "name": "version", "required": true, "schema": { "type": "string" } } ] } }, { "name": "view_client_threads", "required": false, "schema": { "type": "integer", "description": "Количество потоков для пула ViewClientActor.", "format": "uint" } }, { "name": "dynamic_resharding_dry_run", "required": false, "schema": { "type": "boolean", "description": "Если значение `true`, рантайм выполнит пробный динамический ресхардинг на последнем блоке каждой эпохи.\nЭто означает вычисление предварительных граничных аккаунтов для разделения отслеживаемых шардов." } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Уровень перегрузки - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_congestion_level - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_congestion_level.md # RPC протокола NEAR: Уровень перегрузки Получить уровень перегрузки Измерьте нагрузку одного шарда на выбранном блоке — оценка насыщения от 0.0 до 1.0. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_congestion_level - https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_congestion_level/other/EXPERIMENTAL_congestion_level - https://docs.fastnear.com/ru/reference/operation/EXPERIMENTAL_congestion_level ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/EXPERIMENTAL_congestion_level.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_congestion_level", "params": { "block_id": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T", "shard_id": 10 } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_congestion_level", "params": { "block_id": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T", "shard_id": 10 } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `block_id` (body, обязательный, integer | string): Высота блока (целое число) или хеш блока (строка). - `shard_id` (body, обязательный, integer): Идентификатор шарда. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "EXPERIMENTAL_congestion_level" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "nullable": true, "required": [ "block_id", "shard_id" ], "properties": [ { "name": "block_id", "required": true, "schema": { "description": "Высота блока (целое число) или хеш блока (строка)", "oneOf": [ { "type": "integer", "description": "Высота блока" }, { "type": "string", "description": "Хеш блока в кодировке Base58" } ] } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "description": "Shard identifier" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "congestion_level" ], "properties": [ { "name": "congestion_level", "required": true, "schema": { "type": "number", "format": "double" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Доказательство блока для лайт-клиента - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_light_client_block_proof - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_light_client_block_proof.md # RPC протокола NEAR: Доказательство блока для лайт-клиента Получить доказательство блока для лайт-клиента Получите Merkle-доказательство — по хешам блока и вершины лайт-клиента в кодировке Base58 — того, что блок включён в верифицированную цепочку лайт-клиента. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_light_client_block_proof - https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_light_client_block_proof/other/EXPERIMENTAL_light_client_block_proof - https://docs.fastnear.com/ru/reference/operation/EXPERIMENTAL_light_client_block_proof ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/EXPERIMENTAL_light_client_block_proof.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_light_client_block_proof", "params": { "block_hash": "64utzv4G8AwNSxVnj23KPwU46VL435jQbQokbaYFtZ6V", "light_client_head": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_light_client_block_proof", "params": { "block_hash": "64utzv4G8AwNSxVnj23KPwU46VL435jQbQokbaYFtZ6V", "light_client_head": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `block_hash` (body, обязательный, string): Хеш в кодировке Base58. - `light_client_head` (body, обязательный, string): Хеш в кодировке Base58. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "EXPERIMENTAL_light_client_block_proof" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "block_hash", "light_client_head" ], "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "light_client_head", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "block_header_lite", "block_proof" ], "properties": [ { "name": "block_header_lite", "required": true, "schema": { "type": "object", "required": [ "prev_block_hash", "inner_rest_hash", "inner_lite" ], "properties": [ { "name": "inner_lite", "required": true, "schema": { "type": "object", "description": "Часть состояния для текущей головы лёгкого клиента. Подробнее [здесь](https://nomicon.io/ChainSpec/LightClient)." } }, { "name": "inner_rest_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "prev_block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } }, { "name": "block_proof", "required": true, "schema": { "type": "array", "items": { "type": "object" } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Доказательство исполнения для лайт-клиента - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_light_client_proof - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_light_client_proof.md # RPC протокола NEAR: Доказательство исполнения для лайт-клиента Получить доказательство исполнения для лайт-клиента Получите Merkle-доказательство включения транзакции или квитанции по ID в кодировке Base58 — EXPERIMENTAL-вариант метода `light_client_proof`. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_light_client_proof - https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_light_client_proof/other/EXPERIMENTAL_light_client_proof - https://docs.fastnear.com/ru/reference/operation/EXPERIMENTAL_light_client_proof ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/EXPERIMENTAL_light_client_proof.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_light_client_proof", "params": { "light_client_head": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T", "sender_id": "escrow.ai.near", "transaction_hash": "34E7weKCDqXh3xPKdBgSWRqo44yTWjbka9deMK8JbAxx", "type": "квитанция" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_light_client_proof", "params": { "light_client_head": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T", "sender_id": "escrow.ai.near", "transaction_hash": "34E7weKCDqXh3xPKdBgSWRqo44yTWjbka9deMK8JbAxx", "type": "квитанция" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `light_client_head` (body, обязательный, string): Хеш в кодировке Base58. - `sender_id` (body, string): ID аккаунта NEAR. - `transaction_hash` (body, string): Хеш в кодировке Base58. - `type` (body, string): Предмет доказательства — `transaction` подтверждает включение транзакции верхнего уровня, `receipt` подтверждает включение конкретной квитанции, сформированной в ходе исполнения. - `receipt_id` (body, string): Base58-encoded hash - `receiver_id` (body, string): ID аккаунта NEAR ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "EXPERIMENTAL_light_client_proof" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "light_client_head" ], "properties": [ { "name": "light_client_head", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "sender_id", "required": false, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "transaction_hash", "required": false, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "type", "required": false, "schema": { "type": "string", "description": "Proof subject — `receipt` proves inclusion of a specific receipt produced during execution.", "enum": [ "квитанция" ] } }, { "name": "receipt_id", "required": false, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "receiver_id", "required": false, "schema": { "type": "string", "description": "ID аккаунта NEAR" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "outcome_proof", "outcome_root_proof", "block_header_lite", "block_proof" ], "properties": [ { "name": "block_header_lite", "required": true, "schema": { "type": "object", "required": [ "prev_block_hash", "inner_rest_hash", "inner_lite" ], "properties": [ { "name": "inner_lite", "required": true, "schema": { "type": "object", "description": "Часть состояния для текущей головы лёгкого клиента. Подробнее [здесь](https://nomicon.io/ChainSpec/LightClient)." } }, { "name": "inner_rest_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "prev_block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } }, { "name": "block_proof", "required": true, "schema": { "type": "array", "items": { "type": "object" } } }, { "name": "outcome_proof", "required": true, "schema": { "type": "object", "required": [ "доказательство", "block_hash", "id", "outcome" ], "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "id", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "outcome", "required": true, "schema": { "type": "object" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object" } } } ] } }, { "name": "outcome_root_proof", "required": true, "schema": { "type": "array", "items": { "type": "object" } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Конфигурация протокола - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_protocol_config - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_protocol_config.md # RPC протокола NEAR: Конфигурация протокола Получить конфигурацию протокола Получите рантайм-конфигурацию протокола на выбранном блоке — стоимость газа, цены хранилища и действующие лимиты. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_protocol_config - https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_protocol_config/other/EXPERIMENTAL_protocol_config - https://docs.fastnear.com/ru/reference/operation/EXPERIMENTAL_protocol_config ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/EXPERIMENTAL_protocol_config.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_protocol_config", "params": { "finality": "final" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_protocol_config", "params": { "finality": "final" } }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "EXPERIMENTAL_protocol_config" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "description": "One of multiple possible types" } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "properties": [ { "name": "avg_hidden_validator_seats_per_shard", "required": false, "schema": { "type": "array", "description": "Ожидаемое количество скрытых валидаторов на шард.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "block_producer_kickout_threshold", "required": false, "schema": { "type": "integer", "description": "Порог исключения производителей блоков, значение от 0 до 100.", "format": "uint8" } }, { "name": "chain_id", "required": false, "schema": { "type": "string", "description": "ID блокчейна. Должен быть уникальным для каждого блокчейна.\nЕсли у ваших testnet-блокчейнов chain ID не уникальны, вас ждут проблемы." } }, { "name": "chunk_producer_kickout_threshold", "required": false, "schema": { "type": "integer", "description": "Threshold for kicking out chunk producers, between 0 and 100.", "format": "uint8" } }, { "name": "chunk_validator_only_kickout_threshold", "required": false, "schema": { "type": "integer", "description": "Порог исключения нод, которые являются только валидаторами чанков, значение от 0 до 100.", "format": "uint8" } }, { "name": "dynamic_resharding", "required": false, "schema": { "type": "boolean", "description": "Enable dynamic re-sharding." } }, { "name": "epoch_length", "required": false, "schema": { "type": "integer", "description": "Длина эпохи, измеряемая в высотах блоков.", "format": "uint64" } }, { "name": "fishermen_threshold", "required": false, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "gas_limit", "required": false, "schema": { "type": "string", "description": "Количество газа" } }, { "name": "gas_price_adjustment_rate", "required": false, "schema": { "type": "array", "description": "Коэффициент корректировки цены газа", "items": { "type": "integer", "format": "int32" } } }, { "name": "genesis_height", "required": false, "schema": { "type": "integer", "description": "Высота генезис-блока.", "format": "uint64" } }, { "name": "genesis_time", "required": false, "schema": { "type": "string", "description": "Официальное время запуска блокчейна.", "format": "date-time" } }, { "name": "max_gas_price", "required": false, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "max_inflation_rate", "required": false, "schema": { "type": "array", "description": "Maximum inflation on the total supply every epoch.", "items": { "type": "integer", "format": "int32" } } }, { "name": "max_kickout_stake_perc", "required": false, "schema": { "type": "integer", "description": "Максимальный процент стейка валидаторов, которых будем исключать.", "format": "uint8" } }, { "name": "min_gas_price", "required": false, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "minimum_stake_divisor", "required": false, "schema": { "type": "integer", "description": "Минимальный стейк, необходимый для стейкинга, — это последняя цена места, делённая на это число.", "format": "uint64" } }, { "name": "minimum_stake_ratio", "required": false, "schema": { "type": "array", "description": "Минимальное отношение s/s_total, которое может быть у производителя блоков.\nПодробнее см. ", "items": { "type": "integer", "format": "int32" } } }, { "name": "minimum_validators_per_shard", "required": false, "schema": { "type": "integer", "description": "Минимальное количество валидаторов, которое должно быть в каждом шарде", "format": "uint64" } }, { "name": "num_block_producer_seats", "required": false, "schema": { "type": "integer", "description": "Количество мест для производителей блоков в генезисе.", "format": "uint64" } }, { "name": "num_block_producer_seats_per_shard", "required": false, "schema": { "type": "array", "description": "Задаёт количество шардов и количество мест для производителей блоков на каждый шард в генезисе.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "num_blocks_per_year", "required": false, "schema": { "type": "integer", "description": "Ожидаемое количество блоков в год", "format": "uint64" } }, { "name": "online_max_threshold", "required": false, "schema": { "type": "array", "description": "Максимальный порог онлайна, выше которого валидатор получает полную награду.", "items": { "type": "integer", "format": "int32" } } }, { "name": "online_min_threshold", "required": false, "schema": { "type": "array", "description": "Минимальный порог онлайна, ниже которого валидатор не получает награду.", "items": { "type": "integer", "format": "int32" } } }, { "name": "protocol_reward_rate", "required": false, "schema": { "type": "array", "description": "Ставка казны протокола", "items": { "type": "integer", "format": "int32" } } }, { "name": "protocol_treasury_account", "required": false, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "protocol_upgrade_stake_threshold", "required": false, "schema": { "type": "array", "description": "Threshold of stake that needs to indicate that they ready for upgrade.", "items": { "type": "integer", "format": "int32" } } }, { "name": "protocol_version", "required": false, "schema": { "type": "integer", "description": "Текущая версия протокола", "format": "uint32" } }, { "name": "runtime_config", "required": false, "schema": { "type": "object", "description": "Представление, сохраняющее JSON-формат конфигурации рантайма.", "properties": [ { "name": "account_creation_config", "required": false, "schema": { "type": "object", "description": "Структура описывает конфигурацию создания новых аккаунтов." } }, { "name": "congestion_control_config", "required": false, "schema": { "type": "object", "description": "The configuration for congestion control. More info about congestion [here](https://near.github.io/nearcore/architecture/how/receipt-congestion.html?highlight=congestion#receipt-congestion)" } }, { "name": "storage_amount_per_byte", "required": false, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "transaction_costs", "required": false, "schema": { "type": "object", "description": "Describes different fees for the runtime" } }, { "name": "wasm_config", "required": false, "schema": { "type": "object", "description": "Конфигурация операций wasm." } }, { "name": "witness_config", "required": false, "schema": { "type": "object", "description": "Configuration specific to ChunkStateWitness." } } ] } }, { "name": "shard_layout", "required": false, "schema": { "type": "object", "description": "One of multiple possible types" } }, { "name": "shuffle_shard_assignment_for_chunk_producers", "required": false, "schema": { "type": "boolean", "description": "Если значение `true`, производители чанков перемешиваются между шардами. Иными словами, если\nраспределение шардов было `[S_0, S_1, S_2, S_3]`, где `S_i` — множество\nпроизводителей чанков для шарда `i`, то при включённом флаге\nраспределение может стать, например, `[S_2, S_0, S_3, S_1]`." } }, { "name": "target_validator_mandates_per_shard", "required": false, "schema": { "type": "integer", "description": "Целевое количество мандатов валидаторов чанков для каждого шарда.", "format": "uint64" } }, { "name": "transaction_validity_period", "required": false, "schema": { "type": "integer", "description": "Количество блоков, в течение которых заданная транзакция действительна", "format": "uint64" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Информация о разделённом хранилище - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_split_storage_info - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_split_storage_info.md # RPC протокола NEAR: Информация о разделённом хранилище Получить сведения о разделённом хранилище Изучите раскладку разделённого хранилища узла — границу между горячими недавними и холодными архивными данными. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_split_storage_info - https://docs.fastnear.com/ru/rpcs/protocol/EXPERIMENTAL_split_storage_info/other/EXPERIMENTAL_split_storage_info - https://docs.fastnear.com/ru/reference/operation/EXPERIMENTAL_split_storage_info ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/EXPERIMENTAL_split_storage_info.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_split_storage_info", "params": [] } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_split_storage_info", "params": [] }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "EXPERIMENTAL_split_storage_info" ] } }, { "name": "params", "required": true, "schema": { "type": "array", "description": "Empty array as this method takes no parameters", "example": [] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Contains the split storage information.", "properties": [ { "name": "cold_head_height", "required": false, "schema": { "type": "integer", "nullable": true, "format": "uint64" } }, { "name": "final_head_height", "required": false, "schema": { "type": "integer", "nullable": true, "format": "uint64" } }, { "name": "head_height", "required": false, "schema": { "type": "integer", "nullable": true, "format": "uint64" } }, { "name": "hot_db_kind", "required": false, "schema": { "type": "string", "nullable": true } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Цена газа - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/gas_price - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/gas_price.md # RPC протокола NEAR: Цена газа Получить текущую цену газа Получите текущую общесетевую цену газа для самого последнего блока. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/gas_price - https://docs.fastnear.com/ru/rpcs/protocol/gas_price/other/gas_price - https://docs.fastnear.com/ru/reference/operation/gas_price ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/gas_price.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "gas_price", "params": [ null ] } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "gas_price", "params": [ null ] }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "gas_price" ] } }, { "name": "params", "required": true, "schema": { "type": "array", "example": [ null ], "items": { "nullable": true } } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "gas_price" ], "properties": [ { "name": "gas_price", "required": true, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Цена газа по блоку - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/gas_price_by_block - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/gas_price_by_block.md # RPC протокола NEAR: Цена газа по блоку Получить цену газа по блоку Получите общесетевую цену газа на выбранном историческом блоке — по высоте или хешу. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/gas_price_by_block - https://docs.fastnear.com/ru/rpcs/protocol/gas_price_by_block/other/gas_price_by_block - https://docs.fastnear.com/ru/reference/operation/gas_price_by_block ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/gas_price_by_block.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "gas_price", "params": { "block_id": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "gas_price", "params": { "block_id": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `block_id` (body, обязательный, integer | string): Высота блока (целое число) или хеш блока (строка). ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "gas_price" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "block_id" ], "properties": [ { "name": "block_id", "required": true, "schema": { "description": "Высота блока (целое число) или хеш блока (строка)", "oneOf": [ { "type": "integer", "description": "Высота блока" }, { "type": "string", "description": "Хеш блока в кодировке Base58" } ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "gas_price" ], "properties": [ { "name": "gas_price", "required": true, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Конфигурация генезиса - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/genesis_config - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/genesis_config.md # RPC протокола NEAR: Конфигурация генезиса Получить конфигурацию генезиса Получите неизменяемую генезис-конфигурацию цепочки — начальные записи, настройки протокола и длину эпохи в блоке 0. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/genesis_config - https://docs.fastnear.com/ru/rpcs/protocol/genesis_config/other/genesis_config - https://docs.fastnear.com/ru/reference/operation/genesis_config ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/genesis_config.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "genesis_config", "params": [] } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "genesis_config", "params": [] }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "genesis_config" ] } }, { "name": "params", "required": true, "schema": { "type": "array", "description": "Empty array as this method takes no parameters", "example": [] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "protocol_version", "genesis_time", "chain_id", "genesis_height", "num_block_producer_seats", "num_block_producer_seats_per_shard", "avg_hidden_validator_seats_per_shard", "dynamic_resharding", "epoch_length", "gas_limit", "min_gas_price", "max_gas_price", "block_producer_kickout_threshold", "chunk_producer_kickout_threshold", "gas_price_adjustment_rate", "валидаторы", "transaction_validity_period", "protocol_reward_rate", "max_inflation_rate", "total_supply", "num_blocks_per_year", "protocol_treasury_account", "fishermen_threshold" ], "properties": [ { "name": "avg_hidden_validator_seats_per_shard", "required": true, "schema": { "type": "array", "description": "Ожидаемое количество скрытых валидаторов на шард.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "block_producer_kickout_threshold", "required": true, "schema": { "type": "integer", "description": "Порог исключения производителей блоков, значение от 0 до 100.", "format": "uint8" } }, { "name": "chain_id", "required": true, "schema": { "type": "string", "description": "ID блокчейна. Должен быть уникальным для каждого блокчейна.\nЕсли у ваших testnet-блокчейнов chain ID не уникальны, вас ждут проблемы." } }, { "name": "chunk_producer_assignment_changes_limit", "required": false, "schema": { "type": "integer", "description": "Ограничивает число изменений шардов в распределении производителей чанков,\nесли алгоритм способен выбрать распределение с лучшим балансом\nчисла производителей чанков по шардам.", "format": "uint64", "default": 5 } }, { "name": "chunk_producer_kickout_threshold", "required": true, "schema": { "type": "integer", "description": "Threshold for kicking out chunk producers, between 0 and 100.", "format": "uint8" } }, { "name": "chunk_validator_only_kickout_threshold", "required": false, "schema": { "type": "integer", "description": "Порог исключения нод, которые являются только валидаторами чанков, значение от 0 до 100.", "format": "uint8", "default": 80 } }, { "name": "dynamic_resharding", "required": true, "schema": { "type": "boolean", "description": "Enable dynamic re-sharding." } }, { "name": "epoch_length", "required": true, "schema": { "type": "integer", "description": "Длина эпохи, измеряемая в высотах блоков.", "format": "uint64" } }, { "name": "fishermen_threshold", "required": true, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "gas_limit", "required": true, "schema": { "type": "string", "description": "Количество газа" } }, { "name": "gas_price_adjustment_rate", "required": true, "schema": { "type": "array", "description": "Коэффициент корректировки цены газа", "items": { "type": "integer", "format": "int32" } } }, { "name": "genesis_height", "required": true, "schema": { "type": "integer", "description": "Высота генезис-блока.", "format": "uint64" } }, { "name": "genesis_time", "required": true, "schema": { "type": "string", "description": "Официальное время запуска блокчейна.", "format": "date-time" } }, { "name": "max_gas_price", "required": true, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "max_inflation_rate", "required": true, "schema": { "type": "array", "description": "Maximum inflation on the total supply every epoch.", "items": { "type": "integer", "format": "int32" } } }, { "name": "max_kickout_stake_perc", "required": false, "schema": { "type": "integer", "description": "Максимальный процент стейка валидаторов, которых будем исключать.", "format": "uint8", "default": 100 } }, { "name": "min_gas_price", "required": true, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "minimum_stake_divisor", "required": false, "schema": { "type": "integer", "description": "Минимальный стейк, необходимый для стейкинга, — это последняя цена места, делённая на это число.", "format": "uint64", "default": 10 } }, { "name": "minimum_stake_ratio", "required": false, "schema": { "type": "array", "description": "Минимальное отношение s/s_total, которое может быть у производителя блоков.\nПодробнее см. ", "items": { "type": "integer", "format": "int32" } } }, { "name": "minimum_validators_per_shard", "required": false, "schema": { "type": "integer", "description": "Минимальное количество валидаторов, которое должно быть в каждом шарде", "format": "uint64", "default": 1 } }, { "name": "num_block_producer_seats", "required": true, "schema": { "type": "integer", "description": "Количество мест для производителей блоков в генезисе.", "format": "uint64" } }, { "name": "num_block_producer_seats_per_shard", "required": true, "schema": { "type": "array", "description": "Задаёт количество шардов и количество мест для производителей блоков на каждый шард в генезисе.\nПрим.: не используется с protocol_feature_chunk_only_producers — заменено на minimum_validators_per_shard.\nПрим.: раньше не использовалось, так как все производители блоков выпускали чанки для всех шардов.", "items": { "type": "integer", "format": "uint64" } } }, { "name": "num_blocks_per_year", "required": true, "schema": { "type": "integer", "description": "Ожидаемое количество блоков в год", "format": "uint64" } }, { "name": "num_chunk_only_producer_seats", "required": false, "schema": { "type": "integer", "description": "Deprecated.", "format": "uint64", "default": 300 } }, { "name": "num_chunk_producer_seats", "required": false, "schema": { "type": "integer", "description": "Number of chunk producers.\nDon't mess it up with chunk-only producers feature which is deprecated.", "format": "uint64", "default": 100 } }, { "name": "num_chunk_validator_seats", "required": false, "schema": { "type": "integer", "format": "uint64", "default": 300 } }, { "name": "online_max_threshold", "required": false, "schema": { "type": "array", "description": "Максимальный порог онлайна, выше которого валидатор получает полную награду.", "items": { "type": "integer", "format": "int32" } } }, { "name": "online_min_threshold", "required": false, "schema": { "type": "array", "description": "Минимальный порог онлайна, ниже которого валидатор не получает награду.", "items": { "type": "integer", "format": "int32" } } }, { "name": "protocol_reward_rate", "required": true, "schema": { "type": "array", "description": "Ставка казны протокола", "items": { "type": "integer", "format": "int32" } } }, { "name": "protocol_treasury_account", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "protocol_upgrade_stake_threshold", "required": false, "schema": { "type": "array", "description": "Threshold of stake that needs to indicate that they ready for upgrade.", "items": { "type": "integer", "format": "int32" } } }, { "name": "protocol_version", "required": true, "schema": { "type": "integer", "description": "Версия протокола, для которой предназначен этот genesis.", "format": "uint32" } }, { "name": "shard_layout", "required": false, "schema": { "type": "object", "description": "One of multiple possible types", "default": { "V2": { "boundary_accounts": [], "id_to_index_map": { "0": 0 }, "index_to_id_map": { "0": 0 }, "shard_ids": [ 0 ], "version": 0 } } } }, { "name": "shuffle_shard_assignment_for_chunk_producers", "required": false, "schema": { "type": "boolean", "description": "Если значение `true`, производители чанков перемешиваются между шардами. Иными словами, если\nраспределение шардов было `[S_0, S_1, S_2, S_3]`, где `S_i` — множество\nпроизводителей чанков для шарда `i`, то при включённом флаге\nраспределение может стать, например, `[S_2, S_0, S_3, S_1]`.", "default": false } }, { "name": "target_validator_mandates_per_shard", "required": false, "schema": { "type": "integer", "description": "Целевое количество мандатов валидаторов чанков для каждого шарда.", "format": "uint64", "default": 68 } }, { "name": "total_supply", "required": true, "schema": { "type": "string", "description": "Amount in yoctoNEAR" } }, { "name": "transaction_validity_period", "required": true, "schema": { "type": "integer", "description": "Количество блоков, в течение которых заданная транзакция действительна", "format": "uint64" } }, { "name": "use_production_config", "required": false, "schema": { "type": "boolean", "description": "Используется только для тестов. Мы жёстко задаём часть конфигурации для mainnet и testnet\nв AllEpochConfig, и нам нужен способ протестировать этот путь в коде. Для этого и служит этот флаг.\nЕсли установить `true`, узел будет использовать тот же путь переопределения конфигурации, что и mainnet и testnet.", "default": false } }, { "name": "валидаторы", "required": true, "schema": { "type": "array", "description": "Список начальных валидаторов.", "items": { "type": "object", "description": "Информация об аккаунтах валидаторов" } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Состояние узла - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/health - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/health.md # RPC протокола NEAR: Состояние узла Проверить состояние узла Проверьте работоспособность узла — `null` при успехе, ошибка при проблемах. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/health - https://docs.fastnear.com/ru/rpcs/protocol/health/other/health - https://docs.fastnear.com/ru/reference/operation/health ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/health.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "health", "params": [] } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "health", "params": [] }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "health" ] } }, { "name": "params", "required": true, "schema": { "type": "array", "description": "Empty array as this method takes no parameters", "example": [] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Статус состояния узла" } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Последний блок - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/latest_block - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/latest_block.md # RPC протокола NEAR: Последний блок Получить последний блок Получите последний финализированный блок — финальность выбирается автоматически, ID блока не требуется. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/latest_block - https://docs.fastnear.com/ru/rpcs/protocol/latest_block/other/latest_block - https://docs.fastnear.com/ru/reference/operation/latest_block ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/latest_block.yaml` ## Сети - Архивный RPC mainnet: https://rpc.mainnet.fastnear.com/ - Архивный RPC testnet: https://rpc.testnet.fastnear.com/ - Архивный RPC mainnet: https://archival-rpc.mainnet.fastnear.com/ - Архивный RPC testnet: https://archival-rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Архивный RPC mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "блок", "params": { "finality": "final" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "блок", "params": { "finality": "optimistic" } }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "блок" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "финальность" ], "properties": [ { "name": "финальность", "required": true, "schema": { "type": "string", "description": "Селектор финальности для последнего видимого блока", "enum": [ "final", "near-final", "optimistic" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object" } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Доказательство для лайт-клиента - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/light_client_proof - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/light_client_proof.md # RPC протокола NEAR: Доказательство для лайт-клиента Получить доказательство для лайт-клиента Получите Merkle-доказательство — по ID транзакции или квитанции в кодировке Base58 — того, что элемент был включён и исполнен, для верификации лайт-клиентом. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/light_client_proof - https://docs.fastnear.com/ru/rpcs/protocol/light_client_proof/other/light_client_proof - https://docs.fastnear.com/ru/reference/operation/light_client_proof ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/light_client_proof.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "light_client_proof", "params": { "type": "квитанция", "transaction_hash": "34E7weKCDqXh3xPKdBgSWRqo44yTWjbka9deMK8JbAxx", "sender_id": "escrow.ai.near", "light_client_head": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "light_client_proof", "params": { "type": "квитанция", "transaction_hash": "34E7weKCDqXh3xPKdBgSWRqo44yTWjbka9deMK8JbAxx", "sender_id": "escrow.ai.near", "light_client_head": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `light_client_head` (body, обязательный, string): Хеш в кодировке Base58. - `sender_id` (body, string): ID аккаунта NEAR. - `transaction_hash` (body, string): Хеш в кодировке Base58. - `type` (body, string): Предмет доказательства — `transaction` подтверждает включение транзакции верхнего уровня, `receipt` подтверждает включение конкретной квитанции, сформированной в ходе исполнения. - `receipt_id` (body, string): Base58-encoded hash - `receiver_id` (body, string): ID аккаунта NEAR ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "light_client_proof" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "light_client_head" ], "properties": [ { "name": "light_client_head", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "sender_id", "required": false, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "transaction_hash", "required": false, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "type", "required": false, "schema": { "type": "string", "description": "Proof subject — `receipt` proves inclusion of a specific receipt produced during execution.", "enum": [ "квитанция" ] } }, { "name": "receipt_id", "required": false, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "receiver_id", "required": false, "schema": { "type": "string", "description": "ID аккаунта NEAR" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "outcome_proof", "outcome_root_proof", "block_header_lite", "block_proof" ], "properties": [ { "name": "block_header_lite", "required": true, "schema": { "type": "object", "required": [ "prev_block_hash", "inner_rest_hash", "inner_lite" ], "properties": [ { "name": "inner_lite", "required": true, "schema": { "type": "object", "description": "Часть состояния для текущей головы лёгкого клиента. Подробнее [здесь](https://nomicon.io/ChainSpec/LightClient)." } }, { "name": "inner_rest_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "prev_block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } }, { "name": "block_proof", "required": true, "schema": { "type": "array", "items": { "type": "object" } } }, { "name": "outcome_proof", "required": true, "schema": { "type": "object", "required": [ "доказательство", "block_hash", "id", "outcome" ], "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "id", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "outcome", "required": true, "schema": { "type": "object" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object" } } } ] } }, { "name": "outcome_root_proof", "required": true, "schema": { "type": "array", "items": { "type": "object" } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Окна обслуживания - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/maintenance_windows - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/maintenance_windows.md # RPC протокола NEAR: Окна обслуживания Получить окна обслуживания Найдите предстоящие диапазоны блоков, когда валидатор может безопасно перезапуститься, не пропуская производство блоков. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/maintenance_windows - https://docs.fastnear.com/ru/rpcs/protocol/maintenance_windows/other/maintenance_windows - https://docs.fastnear.com/ru/reference/operation/maintenance_windows ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/maintenance_windows.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "maintenance_windows", "params": { "account_id": "root.near" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "maintenance_windows", "params": { "account_id": "root.near" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `account_id` (body, обязательный, string): ID аккаунта NEAR. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "maintenance_windows" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "account_id" ], "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "array", "items": { "type": "object", "required": [ "start", "end" ], "properties": [ { "name": "end", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "start", "required": true, "schema": { "type": "integer", "format": "uint64" } } ] } } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Метрики узла - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/metrics - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/metrics.md # RPC протокола NEAR: Метрики узла Получить метрики узла Соберите метрики узла в Prometheus-формате для мониторинга. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/metrics - https://docs.fastnear.com/ru/rpcs/protocol/metrics/other/metrics - https://docs.fastnear.com/ru/reference/operation/metrics ## Операция - Транспорт: json-rpc - Метод: GET - Путь: `/metrics` - Исходная спецификация: `rpcs/protocol/metrics.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "metrics", "params": {} } ``` ## Справка по запросу ## Справка по ответу - Статус: 200 - Тип данных: text/plain - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "string", "description": "Prometheus exposition text", "example": "# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.\n# TYPE process_cpu_seconds_total counter\nprocess_cpu_seconds_total 12.34" } ``` --- ## RPC протокола NEAR: Сведения о сети - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/network_info - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/network_info.md # RPC протокола NEAR: Сведения о сети Получить сведения о сети Получите список активных подключений к пирам узла и отслеживаемых им производителей блоков. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/network_info - https://docs.fastnear.com/ru/rpcs/protocol/network_info/other/network_info - https://docs.fastnear.com/ru/reference/operation/network_info ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/network_info.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "network_info", "params": [] } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "network_info", "params": [] }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "network_info" ] } }, { "name": "params", "required": true, "schema": { "type": "array", "description": "Empty array as this method takes no parameters", "example": [] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "active_peers", "num_active_peers", "peer_max_count", "sent_bytes_per_sec", "received_bytes_per_sec", "known_producers" ], "properties": [ { "name": "active_peers", "required": true, "schema": { "type": "array", "items": { "type": "object" } } }, { "name": "known_producers", "required": true, "schema": { "type": "array", "description": "Аккаунты известных производителей блоков и чанков из таблицы маршрутизации.", "items": { "type": "object" } } }, { "name": "num_active_peers", "required": true, "schema": { "type": "integer", "format": "uint" } }, { "name": "peer_max_count", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "received_bytes_per_sec", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "sent_bytes_per_sec", "required": true, "schema": { "type": "integer", "format": "uint64" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Следующий блок для лайт-клиента - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/next_light_client_block - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/next_light_client_block.md # RPC протокола NEAR: Следующий блок для лайт-клиента Получить следующий блок для лайт-клиента Получите следующий заголовок блока для лайт-клиента после известного хеша вершины его верифицированной цепочки в кодировке Base58. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/next_light_client_block - https://docs.fastnear.com/ru/rpcs/protocol/next_light_client_block/other/next_light_client_block - https://docs.fastnear.com/ru/reference/operation/next_light_client_block ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/next_light_client_block.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "next_light_client_block", "params": { "last_block_hash": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "next_light_client_block", "params": { "last_block_hash": "9XN7MtDywZvfGx6TKy1MT2iCZkKuHikJXmNazxdZ4x6T" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `last_block_hash` (body, обязательный, string): Хеш в кодировке Base58. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "next_light_client_block" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "last_block_hash" ], "properties": [ { "name": "last_block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Состояние для текущей головы лёгкого клиента. Подробнее [здесь](https://nomicon.io/ChainSpec/LightClient).", "properties": [ { "name": "approvals_after_next", "required": false, "schema": { "type": "array", "items": { "type": "string", "nullable": true, "description": "Base58-encoded cryptographic signature" } } }, { "name": "inner_lite", "required": false, "schema": { "type": "object", "description": "Часть состояния для текущей головы лёгкого клиента. Подробнее [здесь](https://nomicon.io/ChainSpec/LightClient).", "required": [ "height", "epoch_id", "next_epoch_id", "prev_state_root", "outcome_root", "timestamp", "timestamp_nanosec", "next_bp_hash", "block_merkle_root" ], "properties": [ { "name": "block_merkle_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "epoch_id", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "next_bp_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "next_epoch_id", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "outcome_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "prev_state_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "timestamp", "required": true, "schema": { "type": "integer", "description": "Legacy json number. Should not be used.", "format": "uint64" } }, { "name": "timestamp_nanosec", "required": true, "schema": { "type": "string" } } ] } }, { "name": "inner_rest_hash", "required": false, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "next_block_inner_hash", "required": false, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "next_bps", "required": false, "schema": { "type": "array", "items": { "type": "object", "description": "One of multiple possible types" } } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Статус узла - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/status - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/protocol/status.md # RPC протокола NEAR: Статус узла Получить статус узла Получите версию узла, прогресс синхронизации и последний обработанный блок в одном ответе. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/protocol/status - https://docs.fastnear.com/ru/rpcs/protocol/status/other/status - https://docs.fastnear.com/ru/reference/operation/status ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/protocol/status.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "статус", "params": [] } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "статус", "params": [] }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "статус" ] } }, { "name": "params", "required": true, "schema": { "type": "array", "description": "Empty array as this method takes no parameters", "example": [] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "version", "chain_id", "protocol_version", "latest_protocol_version", "валидаторы", "sync_info", "node_public_key", "uptime_sec", "genesis_hash" ], "properties": [ { "name": "chain_id", "required": true, "schema": { "type": "string", "description": "Unique chain id." } }, { "name": "detailed_debug_status", "required": false, "schema": { "type": "object", "nullable": true, "required": [ "network_info", "sync_status", "catchup_status", "current_head_status", "current_header_head_status", "block_production_delay_millis" ], "properties": [ { "name": "block_production_delay_millis", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "catchup_status", "required": true, "schema": { "type": "array", "items": { "type": "object" } } }, { "name": "current_head_status", "required": true, "schema": { "type": "object", "description": "Высота и хеш блока" } }, { "name": "current_header_head_status", "required": true, "schema": { "type": "object", "description": "Высота и хеш блока" } }, { "name": "network_info", "required": true, "schema": { "type": "object" } }, { "name": "sync_status", "required": true, "schema": { "type": "string" } } ] } }, { "name": "genesis_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "latest_protocol_version", "required": true, "schema": { "type": "integer", "description": "Последняя версия протокола, поддерживаемая этим клиентом.", "format": "uint32" } }, { "name": "node_key", "required": false, "schema": { "type": "string", "nullable": true, "description": "Публичный ключ с префиксом ed25519: или secp256k1:" } }, { "name": "node_public_key", "required": true, "schema": { "type": "string", "description": "Публичный ключ с префиксом ed25519: или secp256k1:" } }, { "name": "protocol_version", "required": true, "schema": { "type": "integer", "description": "Текущая активная версия протокола.", "format": "uint32" } }, { "name": "rpc_addr", "required": false, "schema": { "type": "string", "nullable": true, "description": "Адрес RPC-сервера. None, если у узла не включён RPC-эндпоинт." } }, { "name": "sync_info", "required": true, "schema": { "type": "object", "description": "Статус синхронизации узла.", "required": [ "latest_block_hash", "latest_block_height", "latest_state_root", "latest_block_time", "syncing" ], "properties": [ { "name": "earliest_block_hash", "required": false, "schema": { "type": "string", "nullable": true, "description": "Base58-encoded hash" } }, { "name": "earliest_block_height", "required": false, "schema": { "type": "integer", "nullable": true, "format": "uint64" } }, { "name": "earliest_block_time", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "epoch_id", "required": false, "schema": { "type": "string", "nullable": true, "description": "Base58-encoded epoch identifier hash" } }, { "name": "epoch_start_height", "required": false, "schema": { "type": "integer", "nullable": true, "format": "uint64" } }, { "name": "latest_block_hash", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "latest_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "latest_block_time", "required": true, "schema": { "type": "string" } }, { "name": "latest_state_root", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "syncing", "required": true, "schema": { "type": "boolean" } } ] } }, { "name": "uptime_sec", "required": true, "schema": { "type": "integer", "description": "Uptime of the node.", "format": "int64" } }, { "name": "validator_account_id", "required": false, "schema": { "type": "string", "nullable": true, "description": "ID аккаунта NEAR" } }, { "name": "validator_public_key", "required": false, "schema": { "type": "string", "nullable": true, "description": "Публичный ключ с префиксом ed25519: или secp256k1:" } }, { "name": "валидаторы", "required": true, "schema": { "type": "array", "description": "Валидаторы текущей эпохи.", "items": { "type": "object" } } }, { "name": "version", "required": true, "schema": { "type": "object", "description": "Data structure for semver version and github tag or commit.", "required": [ "version", "build", "commit" ], "properties": [ { "name": "build", "required": true, "schema": { "type": "string" } }, { "name": "commit", "required": true, "schema": { "type": "string" } }, { "name": "rustc_version", "required": false, "schema": { "type": "string", "default": "" } }, { "name": "version", "required": true, "schema": { "type": "string" } } ] } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Отправка транзакции (асинхронно) - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/broadcast_tx_async - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/broadcast_tx_async.md # RPC протокола NEAR: Отправка транзакции (асинхронно) Отправить транзакцию асинхронно Отправьте свежеподписанную транзакцию и сразу получите её хеш, без ожидания исполнения. Примеры по умолчанию служат только для иллюстрации и не являются повторно используемыми подписанными пакетами данных. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/transaction/broadcast_tx_async - https://docs.fastnear.com/ru/rpcs/transaction/broadcast_tx_async/other/broadcast_tx_async - https://docs.fastnear.com/ru/reference/operation/broadcast_tx_async ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/transaction/broadcast_tx_async.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "broadcast_tx_async", "params": { "signed_tx_base64": "DgAAAG1pa2UubmVhcgCpPJgEEFUwQjFQvL8V3CnZ0h688WG5sVsKE8JYM37ax2cUjgEAAAAAAAAADQAAAG1pa2V0ZXN0Lm5lYXIPfFBmYNAIe2/MicVhDXbvT3w06LxS2OCF0UHIYgjNDQAAAHRlc3RpbmcgbWVtbwEAAAADAQAAAAAAAAAAAAAAAAAAAA==" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "broadcast_tx_async", "params": { "signed_tx_base64": "DgAAAG1pa2UubmVhcgCpPJgEEFUwQjFQvL8V3CnZ0h688WG5sVsKE8JYM37ax2cUjgEAAAAAAAAADQAAAG1pa2V0ZXN0Lm5lYXIPfFBmYNAIe2/MicVhDXbvT3w06LxS2OCF0UHIYgjNDQAAAHRlc3RpbmcgbWVtbwEAAAADAQAAAAAAAAAAAAAAAAAAAA==" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `signed_tx_base64` (body, обязательный, string): Подписанная транзакция в кодировке Base64. Сгенерируйте новый подписанный пакет данных для подписывающего аккаунта непосредственно перед отправкой или запросом статуса. - `wait_until` (body, string): Желаемый уровень гарантии статуса исполнения. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "broadcast_tx_async" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "signed_tx_base64" ], "properties": [ { "name": "signed_tx_base64", "required": true, "schema": { "type": "string", "description": "Подписанная транзакция в кодировке Base64. Сгенерируйте новый подписанный пакет данных для подписывающего аккаунта непосредственно перед отправкой или запросом статуса." } }, { "name": "wait_until", "required": false, "schema": { "type": "string", "description": "Желаемый уровень гарантии статуса исполнения", "default": "EXECUTED_OPTIMISTIC", "enum": [ "NONE", "INCLUDED", "INCLUDED_FINAL", "EXECUTED", "EXECUTED_OPTIMISTIC", "FINAL" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Отправка транзакции (с подтверждением) - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/broadcast_tx_commit - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/broadcast_tx_commit.md # RPC протокола NEAR: Отправка транзакции (с подтверждением) Отправить транзакцию и дождаться подтверждения Отправьте свежеподписанную транзакцию и дождитесь её коммита — это устаревший синхронный способ отправки, который заменён `send_tx`. Примеры по умолчанию служат только для иллюстрации и не являются повторно используемыми подписанными пакетами данных. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/transaction/broadcast_tx_commit - https://docs.fastnear.com/ru/rpcs/transaction/broadcast_tx_commit/other/broadcast_tx_commit - https://docs.fastnear.com/ru/reference/operation/broadcast_tx_commit ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/transaction/broadcast_tx_commit.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "broadcast_tx_commit", "params": { "signed_tx_base64": "DgAAAG1pa2UubmVhcgCpPJgEEFUwQjFQvL8V3CnZ0h688WG5sVsKE8JYM37ax2cUjgEAAAAAAAAADQAAAG1pa2V0ZXN0Lm5lYXIPfFBmYNAIe2/MicVhDXbvT3w06LxS2OCF0UHIYgjNDQAAAHRlc3RpbmcgbWVtbwEAAAADAQAAAAAAAAAAAAAAAAAAAA==" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "broadcast_tx_commit", "params": { "signed_tx_base64": "DgAAAG1pa2UubmVhcgCpPJgEEFUwQjFQvL8V3CnZ0h688WG5sVsKE8JYM37ax2cUjgEAAAAAAAAADQAAAG1pa2V0ZXN0Lm5lYXIPfFBmYNAIe2/MicVhDXbvT3w06LxS2OCF0UHIYgjNDQAAAHRlc3RpbmcgbWVtbwEAAAADAQAAAAAAAAAAAAAAAAAAAA==" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `signed_tx_base64` (body, обязательный, string): Подписанная транзакция в кодировке Base64. Сгенерируйте новый подписанный пакет данных для подписывающего аккаунта непосредственно перед отправкой или запросом статуса. - `wait_until` (body, string): Желаемый уровень гарантии статуса исполнения. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "broadcast_tx_commit" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "signed_tx_base64" ], "properties": [ { "name": "signed_tx_base64", "required": true, "schema": { "type": "string", "description": "Подписанная транзакция в кодировке Base64. Сгенерируйте новый подписанный пакет данных для подписывающего аккаунта непосредственно перед отправкой или запросом статуса." } }, { "name": "wait_until", "required": false, "schema": { "type": "string", "description": "Желаемый уровень гарантии статуса исполнения", "default": "EXECUTED_OPTIMISTIC", "enum": [ "NONE", "INCLUDED", "INCLUDED_FINAL", "EXECUTED", "EXECUTED_OPTIMISTIC", "FINAL" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "final_execution_status" ], "properties": [ { "name": "final_execution_status", "required": true, "schema": { "type": "string", "description": "Желаемый уровень гарантии статуса исполнения", "enum": [ "NONE", "INCLUDED", "INCLUDED_FINAL", "EXECUTED", "EXECUTED_OPTIMISTIC", "FINAL" ] } }, { "name": "квитанции", "required": false, "schema": { "type": "array", "description": "Квитанции, порождённые транзакцией", "items": { "type": "object" } } }, { "name": "receipts_outcome", "required": false, "schema": { "type": "array", "description": "Результаты исполнения квитанций.", "items": { "type": "object" } } }, { "name": "статус", "required": false, "schema": { "type": "object", "description": "One of multiple possible types" } }, { "name": "транзакция", "required": false, "schema": { "type": "object", "description": "Подписанная транзакция" } }, { "name": "transaction_outcome", "required": false, "schema": { "type": "object", "description": "Результат исполнения подписанной транзакции." } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Квитанция по ID - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/EXPERIMENTAL_receipt - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/EXPERIMENTAL_receipt.md # RPC протокола NEAR: Квитанция по ID Получить квитанцию по ID Получите одну квитанцию по её ID в кодировке Base58 — межшардовую единицу исполнения, производимую транзакцией. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/transaction/EXPERIMENTAL_receipt - https://docs.fastnear.com/ru/rpcs/transaction/EXPERIMENTAL_receipt/other/EXPERIMENTAL_receipt - https://docs.fastnear.com/ru/reference/operation/EXPERIMENTAL_receipt ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/transaction/EXPERIMENTAL_receipt.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_receipt", "params": { "receipt_id": "ETMK9HmPsAYcNxfSXBejMWQs57W4Ph5HDYoYhDMpotQn" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_receipt", "params": { "receipt_id": "ETMK9HmPsAYcNxfSXBejMWQs57W4Ph5HDYoYhDMpotQn" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `receipt_id` (body, обязательный, string): Хеш в кодировке Base58. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "EXPERIMENTAL_receipt" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "receipt_id" ], "properties": [ { "name": "receipt_id", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "predecessor_id", "receiver_id", "receipt_id", "квитанция" ], "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "priority", "required": false, "schema": { "type": "integer", "description": "Deprecated, retained for backward compatibility.", "format": "uint64", "default": 0 } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "One of multiple possible types" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string", "description": "Base58-encoded hash" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string", "description": "ID аккаунта NEAR" } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Подробный статус транзакции - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/EXPERIMENTAL_tx_status - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/EXPERIMENTAL_tx_status.md # RPC протокола NEAR: Подробный статус транзакции Получить подробный статус транзакции Получите полное дерево квитанций и результаты исполнения каждой квитанции по хешу в кодировке Base58 — богаче, чем `tx_status`. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/transaction/EXPERIMENTAL_tx_status - https://docs.fastnear.com/ru/rpcs/transaction/EXPERIMENTAL_tx_status/other/EXPERIMENTAL_tx_status - https://docs.fastnear.com/ru/reference/operation/EXPERIMENTAL_tx_status ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/transaction/EXPERIMENTAL_tx_status.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_tx_status", "params": { "wait_until": "EXECUTED_OPTIMISTIC", "sender_account_id": "escrow.ai.near", "tx_hash": "34E7weKCDqXh3xPKdBgSWRqo44yTWjbka9deMK8JbAxx" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_tx_status", "params": { "wait_until": "EXECUTED_OPTIMISTIC", "sender_account_id": "escrow.ai.near", "tx_hash": "34E7weKCDqXh3xPKdBgSWRqo44yTWjbka9deMK8JbAxx" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `wait_until` (body, string): Желаемый уровень гарантии статуса исполнения. - `signed_tx_base64` (body, string): Подписанная транзакция в кодировке Base64. Сгенерируйте новый подписанный пакет данных для подписывающего аккаунта непосредственно перед отправкой или запросом статуса. - `sender_account_id` (body, string): ID аккаунта NEAR. - `tx_hash` (body, string): Хеш в кодировке Base58. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "EXPERIMENTAL_tx_status" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "properties": [ { "name": "wait_until", "required": false, "schema": { "type": "string", "description": "Желаемый уровень гарантии статуса исполнения", "default": "EXECUTED_OPTIMISTIC", "enum": [ "NONE", "INCLUDED", "INCLUDED_FINAL", "EXECUTED", "EXECUTED_OPTIMISTIC", "FINAL" ] } }, { "name": "signed_tx_base64", "required": false, "schema": { "type": "string", "description": "Подписанная транзакция в кодировке Base64. Сгенерируйте новый подписанный пакет данных для подписывающего аккаунта непосредственно перед отправкой или запросом статуса." } }, { "name": "sender_account_id", "required": false, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "final_execution_status" ], "properties": [ { "name": "final_execution_status", "required": true, "schema": { "type": "string", "description": "Желаемый уровень гарантии статуса исполнения", "enum": [ "NONE", "INCLUDED", "INCLUDED_FINAL", "EXECUTED", "EXECUTED_OPTIMISTIC", "FINAL" ] } }, { "name": "квитанции", "required": false, "schema": { "type": "array", "description": "Квитанции, порождённые транзакцией", "items": { "type": "object" } } }, { "name": "receipts_outcome", "required": false, "schema": { "type": "array", "description": "Результаты исполнения квитанций.", "items": { "type": "object" } } }, { "name": "статус", "required": false, "schema": { "type": "object", "description": "One of multiple possible types" } }, { "name": "транзакция", "required": false, "schema": { "type": "object", "description": "Подписанная транзакция" } }, { "name": "transaction_outcome", "required": false, "schema": { "type": "object", "description": "Результат исполнения подписанной транзакции." } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Отправить транзакцию - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/send_tx - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/send_tx.md # RPC протокола NEAR: Отправить транзакцию Отправить транзакцию Отправьте свежеподписанную транзакцию и дождитесь её итогового результата исполнения — это текущий синхронный способ отправки. Примеры по умолчанию служат только для иллюстрации и не являются повторно используемыми подписанными пакетами данных. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/transaction/send_tx - https://docs.fastnear.com/ru/rpcs/transaction/send_tx/other/send_tx - https://docs.fastnear.com/ru/reference/operation/send_tx ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/transaction/send_tx.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "send_tx", "params": { "signed_tx_base64": "ExampleBase64EncodedTransaction", "wait_until": "EXECUTED_OPTIMISTIC" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "send_tx", "params": { "signed_tx_base64": "ExampleBase64EncodedTransaction", "wait_until": "EXECUTED_OPTIMISTIC" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `signed_tx_base64` (body, обязательный, string): Подписанная транзакция в кодировке Base64. Сгенерируйте новый подписанный пакет данных для подписывающего аккаунта непосредственно перед отправкой или запросом статуса. - `wait_until` (body, string): Желаемый уровень гарантии статуса исполнения. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "send_tx" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "signed_tx_base64" ], "properties": [ { "name": "signed_tx_base64", "required": true, "schema": { "type": "string", "description": "Подписанная транзакция в кодировке Base64. Сгенерируйте новый подписанный пакет данных для подписывающего аккаунта непосредственно перед отправкой или запросом статуса." } }, { "name": "wait_until", "required": false, "schema": { "type": "string", "description": "Желаемый уровень гарантии статуса исполнения", "default": "EXECUTED_OPTIMISTIC", "enum": [ "NONE", "INCLUDED", "INCLUDED_FINAL", "EXECUTED", "EXECUTED_OPTIMISTIC", "FINAL" ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "final_execution_status" ], "properties": [ { "name": "final_execution_status", "required": true, "schema": { "type": "string", "description": "Желаемый уровень гарантии статуса исполнения", "enum": [ "NONE", "INCLUDED", "INCLUDED_FINAL", "EXECUTED", "EXECUTED_OPTIMISTIC", "FINAL" ] } }, { "name": "квитанции", "required": false, "schema": { "type": "array", "description": "Квитанции, порождённые транзакцией", "items": { "type": "object" } } }, { "name": "receipts_outcome", "required": false, "schema": { "type": "array", "description": "Результаты исполнения квитанций.", "items": { "type": "object" } } }, { "name": "статус", "required": false, "schema": { "type": "object", "description": "One of multiple possible types" } }, { "name": "транзакция", "required": false, "schema": { "type": "object", "description": "Подписанная транзакция" } }, { "name": "transaction_outcome", "required": false, "schema": { "type": "object", "description": "Результат исполнения подписанной транзакции." } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Статус транзакции - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/tx_status - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/transaction/tx_status.md # RPC протокола NEAR: Статус транзакции Проверить статус транзакции Проверьте итоговый результат транзакции по её хешу в кодировке Base58 — успех, сбой или ещё не завершена. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/transaction/tx_status - https://docs.fastnear.com/ru/rpcs/transaction/tx_status/other/tx_status - https://docs.fastnear.com/ru/reference/operation/tx_status ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/transaction/tx_status.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "tx", "params": { "tx_hash": "34E7weKCDqXh3xPKdBgSWRqo44yTWjbka9deMK8JbAxx", "sender_account_id": "escrow.ai.near" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "tx", "params": { "tx_hash": "34E7weKCDqXh3xPKdBgSWRqo44yTWjbka9deMK8JbAxx", "sender_account_id": "escrow.ai.near" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `wait_until` (body, string): Желаемый уровень гарантии статуса исполнения. - `signed_tx_base64` (body, string): Подписанная транзакция в кодировке Base64. Сгенерируйте новый подписанный пакет данных для подписывающего аккаунта непосредственно перед отправкой или запросом статуса. - `sender_account_id` (body, string): ID аккаунта NEAR. - `tx_hash` (body, string): Хеш транзакции в кодировке Base58. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "tx" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "properties": [ { "name": "wait_until", "required": false, "schema": { "type": "string", "description": "Желаемый уровень гарантии статуса исполнения", "default": "EXECUTED_OPTIMISTIC", "enum": [ "NONE", "INCLUDED", "INCLUDED_FINAL", "EXECUTED", "EXECUTED_OPTIMISTIC", "FINAL" ] } }, { "name": "signed_tx_base64", "required": false, "schema": { "type": "string", "description": "Подписанная транзакция в кодировке Base64. Сгенерируйте новый подписанный пакет данных для подписывающего аккаунта непосредственно перед отправкой или запросом статуса." } }, { "name": "sender_account_id", "required": false, "schema": { "type": "string", "description": "ID аккаунта NEAR" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string", "description": "Base58-encoded hash" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "required": [ "final_execution_status" ], "properties": [ { "name": "final_execution_status", "required": true, "schema": { "type": "string", "description": "Желаемый уровень гарантии статуса исполнения", "enum": [ "NONE", "INCLUDED", "INCLUDED_FINAL", "EXECUTED", "EXECUTED_OPTIMISTIC", "FINAL" ] } }, { "name": "квитанции", "required": false, "schema": { "type": "array", "description": "Квитанции, порождённые транзакцией", "items": { "type": "object" } } }, { "name": "receipts_outcome", "required": false, "schema": { "type": "array", "description": "Результаты исполнения квитанций.", "items": { "type": "object" } } }, { "name": "статус", "required": false, "schema": { "type": "object", "description": "One of multiple possible types" } }, { "name": "транзакция", "required": false, "schema": { "type": "object", "description": "Подписанная транзакция" } }, { "name": "transaction_outcome", "required": false, "schema": { "type": "object", "description": "Результат исполнения подписанной транзакции." } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Упорядоченные валидаторы - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/validators/EXPERIMENTAL_validators_ordered - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/validators/EXPERIMENTAL_validators_ordered.md # RPC протокола NEAR: Упорядоченные валидаторы Получить упорядоченных валидаторов Получите список валидаторов, упорядоченный по размеру стейка на выбранном блоке — шире, чем только активный набор. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/validators/EXPERIMENTAL_validators_ordered - https://docs.fastnear.com/ru/rpcs/validators/EXPERIMENTAL_validators_ordered/other/EXPERIMENTAL_validators_ordered - https://docs.fastnear.com/ru/reference/operation/EXPERIMENTAL_validators_ordered ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/validators/EXPERIMENTAL_validators_ordered.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_validators_ordered", "params": { "block_id": 194263739 } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "EXPERIMENTAL_validators_ordered", "params": { "block_id": 194263739 } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `block_id` (body, integer | string): Высота блока (целое число) или хеш блока (строка). ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "EXPERIMENTAL_validators_ordered" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "properties": [ { "name": "block_id", "required": false, "schema": { "description": "Высота блока (целое число) или хеш блока (строка)", "oneOf": [ { "type": "integer", "description": "Высота блока" }, { "type": "string", "description": "Хеш блока в кодировке Base58" }, { "nullable": true } ] } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "array", "items": { "type": "object", "description": "One of multiple possible types" } } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Валидаторы по эпохе - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/validators/validators_by_epoch - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/validators/validators_by_epoch.md # RPC протокола NEAR: Валидаторы по эпохе Получить валидаторов по эпохе Получите набор валидаторов выбранной прошлой эпохи по высоте начального блока или хеш-идентификатору эпохи в кодировке Base58. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/validators/validators_by_epoch - https://docs.fastnear.com/ru/rpcs/validators/validators_by_epoch/other/validators_by_epoch - https://docs.fastnear.com/ru/reference/operation/validators_by_epoch ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/validators/validators_by_epoch.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "валидаторы", "params": { "epoch_id": "4cPDvNDzf3zbKvAxPNWnNGGz8x2tty6xhowmsugAm3fo" } } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "валидаторы", "params": { "epoch_id": "4cPDvNDzf3zbKvAxPNWnNGGz8x2tty6xhowmsugAm3fo" } }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `epoch_id` (body, обязательный, string): Хеш-идентификатор эпохи в кодировке Base58. ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "валидаторы" ] } }, { "name": "params", "required": true, "schema": { "type": "object", "required": [ "epoch_id" ], "properties": [ { "name": "epoch_id", "required": true, "schema": { "type": "string", "description": "Base58-encoded epoch identifier hash" } } ] } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Информация о валидаторах текущей и следующей эпохи", "required": [ "current_validators", "next_validators", "current_fishermen", "next_fishermen", "current_proposals", "prev_epoch_kickout", "epoch_start_height", "epoch_height" ], "properties": [ { "name": "current_fishermen", "required": true, "schema": { "type": "array", "description": "Fishermen текущей эпохи", "items": { "type": "object", "description": "One of multiple possible types" } } }, { "name": "current_proposals", "required": true, "schema": { "type": "array", "description": "Заявки (proposals) в текущей эпохе", "items": { "type": "object", "description": "One of multiple possible types" } } }, { "name": "current_validators", "required": true, "schema": { "type": "array", "description": "Валидаторы текущей эпохи", "items": { "type": "object", "description": "Описывает сведения о валидаторе текущей эпохи" } } }, { "name": "epoch_height", "required": true, "schema": { "type": "integer", "description": "Epoch height", "format": "uint64" } }, { "name": "epoch_start_height", "required": true, "schema": { "type": "integer", "description": "Высота блока начала эпохи", "format": "uint64" } }, { "name": "next_fishermen", "required": true, "schema": { "type": "array", "description": "Fishermen for the next epoch", "items": { "type": "object", "description": "One of multiple possible types" } } }, { "name": "next_validators", "required": true, "schema": { "type": "array", "description": "Валидаторы следующей эпохи", "items": { "type": "object" } } }, { "name": "prev_epoch_kickout", "required": true, "schema": { "type": "array", "description": "Kickout in the previous epoch", "items": { "type": "object" } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## RPC протокола NEAR: Текущие валидаторы - HTML-маршрут: https://docs.fastnear.com/ru/rpcs/validators/validators_current - Markdown-маршрут: https://docs.fastnear.com/ru/rpcs/validators/validators_current.md # RPC протокола NEAR: Текущие валидаторы Получить текущих валидаторов Получите активный набор валидаторов текущей эпохи со стейками и статистикой производительности. ## Ссылки на источник - https://docs.fastnear.com/ru/rpcs/validators/validators_current - https://docs.fastnear.com/ru/rpcs/validators/validators_current/other/validators_current - https://docs.fastnear.com/ru/reference/operation/validators_current ## Операция - Транспорт: json-rpc - Метод: POST - Путь: `/` - Исходная спецификация: `rpcs/validators/validators_current.yaml` ## Сети - Mainnet: https://rpc.mainnet.fastnear.com/ - Testnet: https://rpc.testnet.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Контракт OpenAPI описывает API-ключ FastNear как параметр запроса `apiKey`. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Финальность: final - Эндпоинт: https://rpc.mainnet.fastnear.com/ ### Тело запроса ```json { "jsonrpc": "2.0", "id": "fastnear", "method": "валидаторы", "params": [ null ] } ``` ## Справка по запросу ### Активный пример ```json { "body": { "jsonrpc": "2.0", "id": "fastnear", "method": "валидаторы", "params": [ null ] }, "headers": {}, "path": {}, "query": {} } ``` ### Схема запроса ```json { "type": "object", "required": [ "jsonrpc", "id", "method", "params" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "type": "string", "example": "fastnear" } }, { "name": "method", "required": true, "schema": { "type": "string", "enum": [ "валидаторы" ] } }, { "name": "params", "required": true, "schema": { "type": "array", "example": [ null ], "items": { "nullable": true } } } ] } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Успешный ответ ### Схема ответа ```json { "type": "object", "required": [ "jsonrpc", "id" ], "properties": [ { "name": "jsonrpc", "required": true, "schema": { "type": "string", "enum": [ "2.0" ] } }, { "name": "id", "required": true, "schema": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "result", "required": false, "schema": { "type": "object", "description": "Информация о валидаторах текущей и следующей эпохи", "required": [ "current_validators", "next_validators", "current_fishermen", "next_fishermen", "current_proposals", "prev_epoch_kickout", "epoch_start_height", "epoch_height" ], "properties": [ { "name": "current_fishermen", "required": true, "schema": { "type": "array", "description": "Fishermen текущей эпохи", "items": { "type": "object", "description": "One of multiple possible types" } } }, { "name": "current_proposals", "required": true, "schema": { "type": "array", "description": "Заявки (proposals) в текущей эпохе", "items": { "type": "object", "description": "One of multiple possible types" } } }, { "name": "current_validators", "required": true, "schema": { "type": "array", "description": "Валидаторы текущей эпохи", "items": { "type": "object", "description": "Описывает сведения о валидаторе текущей эпохи" } } }, { "name": "epoch_height", "required": true, "schema": { "type": "integer", "description": "Epoch height", "format": "uint64" } }, { "name": "epoch_start_height", "required": true, "schema": { "type": "integer", "description": "Высота блока начала эпохи", "format": "uint64" } }, { "name": "next_fishermen", "required": true, "schema": { "type": "array", "description": "Fishermen for the next epoch", "items": { "type": "object", "description": "One of multiple possible types" } } }, { "name": "next_validators", "required": true, "schema": { "type": "array", "description": "Валидаторы следующей эпохи", "items": { "type": "object" } } }, { "name": "prev_epoch_kickout", "required": true, "schema": { "type": "array", "description": "Kickout in the previous epoch", "items": { "type": "object" } } } ] } }, { "name": "error", "required": false, "schema": { "type": "object", "properties": [ { "name": "код", "required": false, "schema": { "type": "integer" } }, { "name": "message", "required": false, "schema": { "type": "string" } }, { "name": "data", "required": false, "schema": { "type": "object" } } ] } } ], "refName": "JsonRpcResponse" } ``` --- ## FastNear API - Состояние - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/system/health - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/system/health.md # FastNear API - Состояние Проверить состояние сервиса Пинг FastNEAR API для проверки доступности — возвращает `{status: ok}` при успехе. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/system/health - https://docs.fastnear.com/ru/apis/fastnear/openapi/system/get_health ## Операция - Транспорт: http - Метод: GET - Путь: `/health` - Исходная спецификация: `apis/fastnear/system/health.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/health - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": {}, "query": {} } ``` ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Строка состояния сервиса ### Схема ответа ```json { "type": "object", "required": [ "статус" ], "additionalProperties": false, "properties": [ { "name": "статус", "required": true, "schema": { "type": "string" } } ], "refName": "HealthResponse" } ``` --- ## FastNear API - Статус - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/system/status - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/system/status.md # FastNear API - Статус Получить статус синхронизации сервиса Проверьте текущую индексированную высоту блока, задержку и версию развёрнутого сервиса. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/system/status - https://docs.fastnear.com/ru/apis/fastnear/openapi/system/get_status ## Операция - Транспорт: http - Метод: GET - Путь: `/status` - Исходная спецификация: `apis/fastnear/system/status.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/status - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": {}, "query": {} } ``` ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Текущий статус синхронизации FastNear API ### Схема ответа ```json { "type": "object", "required": [ "version", "sync_block_height", "sync_latency_sec", "sync_block_timestamp_nanosec", "sync_balance_block_height" ], "additionalProperties": false, "properties": [ { "name": "sync_balance_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "sync_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "sync_block_timestamp_nanosec", "required": true, "schema": { "type": "string" } }, { "name": "sync_latency_sec", "required": true, "schema": { "type": "number", "format": "double" } }, { "name": "version", "required": true, "schema": { "type": "string" } } ], "refName": "StatusResponse" } ``` --- ## FastNear API - V0 FT аккаунта - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v0/account_ft - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v0/account_ft.md # FastNear API - V0 FT аккаунта Получить ID FT-контрактов аккаунта Получите ID FT-контрактов, которых касался аккаунт — только ID, без балансов. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v0/account_ft - https://docs.fastnear.com/ru/apis/fastnear/openapi/fungible-tokens/account_ft_v0 ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/account/{account_id}/ft` - Исходная спецификация: `apis/fastnear/v0/account_ft.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который передают встроенные клиенты портала. Публичный FastNear API его не требует. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v0/account/root.near/ft - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "account_id": "root.near" }, "query": {} } ``` ### Входные данные - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры пути - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который передают встроенные клиенты портала. Публичный FastNear API его не требует. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: ID FT-контрактов для запрошенного аккаунта ### Схема ответа ```json { "type": "object", "required": [ "account_id", "contract_ids" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "contract_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } } ], "refName": "V0ContractsResponse" } ``` --- ## FastNear API - V0 NFT аккаунта - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v0/account_nft - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v0/account_nft.md # FastNear API - V0 NFT аккаунта Получить ID NFT-контрактов аккаунта Получите ID NFT-контрактов, которых касался аккаунт — только ID, без метаданных по высоте блока. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v0/account_nft - https://docs.fastnear.com/ru/apis/fastnear/openapi/non-fungible-tokens/account_nft_v0 ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/account/{account_id}/nft` - Исходная спецификация: `apis/fastnear/v0/account_nft.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который передают встроенные клиенты портала. Публичный FastNear API его не требует. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v0/account/root.near/nft - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "account_id": "root.near" }, "query": {} } ``` ### Входные данные - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры пути - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который передают встроенные клиенты портала. Публичный FastNear API его не требует. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: ID NFT-контрактов для запрошенного аккаунта ### Схема ответа ```json { "type": "object", "required": [ "account_id", "contract_ids" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "contract_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } } ], "refName": "V0ContractsResponse" } ``` --- ## FastNear API - V0 стейкинг аккаунта - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v0/account_staking - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v0/account_staking.md # FastNear API - V0 стейкинг аккаунта Получить ID стейкинг-пулов аккаунта Получите ID стейкинг-пулов для одного аккаунта — только ID пулов, без метаданных по высоте блока. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v0/account_staking - https://docs.fastnear.com/ru/apis/fastnear/openapi/staking/account_staking_v0 ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/account/{account_id}/staking` - Исходная спецификация: `apis/fastnear/v0/account_staking.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который передают встроенные клиенты портала. Публичный FastNear API его не требует. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v0/account/root.near/staking - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "account_id": "root.near" }, "query": {} } ``` ### Входные данные - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры пути - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который передают встроенные клиенты портала. Публичный FastNear API его не требует. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: ID стейкинг-пулов для запрошенного аккаунта ### Схема ответа ```json { "type": "object", "required": [ "account_id", "pools" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "pools", "required": true, "schema": { "type": "array", "items": { "type": "string" } } } ], "refName": "V0StakingResponse" } ``` --- ## FastNear API - V0 Поиск по публичному ключу - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v0/public_key_lookup - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v0/public_key_lookup.md # FastNear API - V0 Поиск по публичному ключу Найти аккаунты полного доступа по публичному ключу Получите индексированные ID аккаунтов, связанные с публичным ключом полного доступа. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v0/public_key_lookup - https://docs.fastnear.com/ru/apis/fastnear/openapi/public-key/lookup_by_public_key_v0 ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/public_key/{public_key}` - Исходная спецификация: `apis/fastnear/v0/public_key_lookup.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v0/public_key/ed25519%3ACCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "public_key": "ed25519:CCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT" }, "query": {} } ``` ### Входные данные - `public_key` (путь, обязательный, string): Публичный ключ NEAR в формате `ed25519:...` или `secp256k1:...`. ### Параметры пути - `public_key` (путь, обязательный, string): Публичный ключ NEAR в формате `ed25519:...` или `secp256k1:...`. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Подходящие ID аккаунтов для переданного публичного ключа полного доступа ### Схема ответа ```json { "type": "object", "required": [ "public_key", "account_ids" ], "additionalProperties": false, "properties": [ { "name": "account_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "public_key", "required": true, "schema": { "type": "string" } } ], "refName": "PublicKeyLookupResponse" } ``` --- ## FastNear API - V0 Поиск по публичному ключу (все) - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v0/public_key_lookup_all - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v0/public_key_lookup_all.md # FastNear API - V0 Поиск по публичному ключу (все) Найти все аккаунты по публичному ключу Получите все аккаунты, связанные с публичным ключом — ключи полного доступа и ключи с ограничениями вместе. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v0/public_key_lookup_all - https://docs.fastnear.com/ru/apis/fastnear/openapi/public-key/lookup_by_public_key_all_v0 ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/public_key/{public_key}/all` - Исходная спецификация: `apis/fastnear/v0/public_key_lookup_all.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v0/public_key/ed25519%3ACCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT/all - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "public_key": "ed25519:CCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT" }, "query": {} } ``` ### Входные данные - `public_key` (путь, обязательный, string): Публичный ключ NEAR в формате `ed25519:...` или `secp256k1:...`. ### Параметры пути - `public_key` (путь, обязательный, string): Публичный ключ NEAR в формате `ed25519:...` или `secp256k1:...`. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Подходящие ID аккаунтов для переданного публичного ключа, включая ключи ограниченного доступа ### Схема ответа ```json { "type": "object", "required": [ "public_key", "account_ids" ], "additionalProperties": false, "properties": [ { "name": "account_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "public_key", "required": true, "schema": { "type": "string" } } ], "refName": "PublicKeyLookupResponse" } ``` --- ## FastNear API - V1 FT аккаунта - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/account_ft - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/account_ft.md # FastNear API - V1 FT аккаунта Получить индексированные строки FT-токенов аккаунта Получите строки балансов FT-токенов аккаунта — каждая с ID контракта, балансом и высотой последнего обновления. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v1/account_ft - https://docs.fastnear.com/ru/apis/fastnear/openapi/fungible-tokens/account_ft_v1 ## Операция - Транспорт: http - Метод: GET - Путь: `/v1/account/{account_id}/ft` - Исходная спецификация: `apis/fastnear/v1/account_ft.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v1/account/root.near/ft - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "account_id": "root.near" }, "query": {} } ``` ### Входные данные - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры пути - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Индексированные строки FT-токенов для указанного аккаунта ### Схема ответа ```json { "type": "object", "required": [ "account_id", "токены" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "токены", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "contract_id", "last_update_block_height", "balance" ], "additionalProperties": false, "properties": [ { "name": "balance", "required": true, "schema": { "type": "string" } }, { "name": "contract_id", "required": true, "schema": { "type": "string" } }, { "name": "last_update_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "TokenRow" } } } ], "refName": "V1FtResponse" } ``` --- ## FastNear API - V1 Полный снимок аккаунта - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/account_full - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/account_full.md # FastNear API - V1 Полный снимок аккаунта Получить полный индексированный снимок аккаунта Получите объединённое индексированное представление аккаунта, включая стейкинг-пулы, FT-балансы, NFT и состояние аккаунта. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v1/account_full - https://docs.fastnear.com/ru/apis/fastnear/openapi/accounts/account_full_v1 ## Операция - Транспорт: http - Метод: GET - Путь: `/v1/account/{account_id}/full` - Исходная спецификация: `apis/fastnear/v1/account_full.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v1/account/root.near/full - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "account_id": "root.near" }, "query": {} } ``` ### Входные данные - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры пути - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Полный индексированный снимок указанного аккаунта ### Схема ответа ```json { "type": "object", "required": [ "account_id", "pools", "токены", "nfts", "состояние" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "nfts", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "contract_id", "last_update_block_height" ], "additionalProperties": false, "properties": [ { "name": "contract_id", "required": true, "schema": { "type": "string" } }, { "name": "last_update_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "NftRow" } } }, { "name": "pools", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "pool_id", "last_update_block_height" ], "additionalProperties": false, "properties": [ { "name": "last_update_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "pool_id", "required": true, "schema": { "type": "string" } } ], "refName": "PoolRow" } } }, { "name": "состояние", "required": true, "schema": { "type": "object" } }, { "name": "токены", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "contract_id", "last_update_block_height", "balance" ], "additionalProperties": false, "properties": [ { "name": "balance", "required": true, "schema": { "type": "string" } }, { "name": "contract_id", "required": true, "schema": { "type": "string" } }, { "name": "last_update_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "TokenRow" } } } ], "refName": "AccountFullResponse" } ``` --- ## FastNear API - V1 NFT аккаунта - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/account_nft - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/account_nft.md # FastNear API - V1 NFT аккаунта Получить индексированные строки NFT аккаунта Получите строки NFT-контрактов для аккаунта, каждая с метаданными по высоте блока. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v1/account_nft - https://docs.fastnear.com/ru/apis/fastnear/openapi/non-fungible-tokens/account_nft_v1 ## Операция - Транспорт: http - Метод: GET - Путь: `/v1/account/{account_id}/nft` - Исходная спецификация: `apis/fastnear/v1/account_nft.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v1/account/root.near/nft - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "account_id": "root.near" }, "query": {} } ``` ### Входные данные - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры пути - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Индексированные строки NFT-контрактов для указанного аккаунта ### Схема ответа ```json { "type": "object", "required": [ "account_id", "токены" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "токены", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "contract_id", "last_update_block_height" ], "additionalProperties": false, "properties": [ { "name": "contract_id", "required": true, "schema": { "type": "string" } }, { "name": "last_update_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "NftRow" } } } ], "refName": "V1NftResponse" } ``` --- ## FastNEAR API — V1 стейкинг аккаунта - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/account_staking - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/account_staking.md # FastNEAR API — V1 стейкинг аккаунта Поиск индексированных стейкинг-пулов аккаунта Получите строки по стейкинг-пулам для аккаунта, каждая с метаданными по высоте блока. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v1/account_staking - https://docs.fastnear.com/ru/apis/fastnear/openapi/staking/account_staking_v1 ## Операция - Транспорт: http - Метод: GET - Путь: `/v1/account/{account_id}/staking` - Исходная спецификация: `apis/fastnear/v1/account_staking.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, передаваемый встраиваемыми клиентами портала. Публичный FastNEAR API его не требует. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v1/account/root.near/staking - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "account_id": "root.near" }, "query": {} } ``` ### Входные данные - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры пути - `account_id` (путь, обязательный, string): ID аккаунта NEAR для проверки. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, передаваемый встраиваемыми клиентами портала. Публичный FastNEAR API его не требует. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Индексированные записи стейкинг-пулов для указанного аккаунта ### Схема ответа ```json { "type": "object", "required": [ "account_id", "pools" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "pools", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "pool_id", "last_update_block_height" ], "additionalProperties": false, "properties": [ { "name": "last_update_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "pool_id", "required": true, "schema": { "type": "string" } } ], "refName": "PoolRow" } } } ], "refName": "V1StakingResponse" } ``` --- ## FastNEAR API — V1 топ держателей FT - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/ft_top - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/ft_top.md # FastNEAR API — V1 топ держателей FT Поиск индексированных топ-держателей FT-токена Получите список держателей с наибольшим балансом для FT-контракта, отсортированный по убыванию баланса. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v1/ft_top - https://docs.fastnear.com/ru/apis/fastnear/openapi/fungible-tokens/ft_top_v1 ## Операция - Транспорт: http - Метод: GET - Путь: `/v1/ft/{token_id}/top` - Исходная спецификация: `apis/fastnear/v1/ft_top.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, передаваемый встраиваемыми клиентами портала. Публичный FastNEAR API его не требует. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v1/ft/wrap.near/top - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "token_id": "wrap.near" }, "query": {} } ``` ### Входные данные - `token_id` (путь, обязательный, string): ID аккаунта контракта FT-токена. ### Параметры пути - `token_id` (путь, обязательный, string): ID аккаунта контракта FT-токена. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, передаваемый встраиваемыми клиентами портала. Публичный FastNEAR API его не требует. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Индексированные топ-держатели указанного FT-токена ### Схема ответа ```json { "type": "object", "required": [ "token_id", "аккаунтов" ], "additionalProperties": false, "properties": [ { "name": "аккаунтов", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "account_id", "balance" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "balance", "required": true, "schema": { "type": "string" } } ], "refName": "AccountBalanceRow" } } }, { "name": "token_id", "required": true, "schema": { "type": "string" } } ], "refName": "TokenAccountsResponse" } ``` --- ## FastNear API - V1 Поиск по публичному ключу - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/public_key_lookup - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/public_key_lookup.md # FastNear API - V1 Поиск по публичному ключу Найти аккаунты полного доступа по публичному ключу Получите индексированные ID аккаунтов, связанные с публичным ключом полного доступа. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v1/public_key_lookup - https://docs.fastnear.com/ru/apis/fastnear/openapi/public-key/lookup_by_public_key_v1 ## Операция - Транспорт: http - Метод: GET - Путь: `/v1/public_key/{public_key}` - Исходная спецификация: `apis/fastnear/v1/public_key_lookup.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v1/public_key/ed25519%3ACCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "public_key": "ed25519:CCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT" }, "query": {} } ``` ### Входные данные - `public_key` (путь, обязательный, string): Публичный ключ NEAR в формате `ed25519:...` или `secp256k1:...`. ### Параметры пути - `public_key` (путь, обязательный, string): Публичный ключ NEAR в формате `ed25519:...` или `secp256k1:...`. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Подходящие ID аккаунтов для переданного публичного ключа полного доступа ### Схема ответа ```json { "type": "object", "required": [ "public_key", "account_ids" ], "additionalProperties": false, "properties": [ { "name": "account_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "public_key", "required": true, "schema": { "type": "string" } } ], "refName": "PublicKeyLookupResponse" } ``` --- ## FastNear API - V1 Поиск по публичному ключу (все) - HTML-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/public_key_lookup_all - Markdown-маршрут: https://docs.fastnear.com/ru/apis/fastnear/v1/public_key_lookup_all.md # FastNear API - V1 Поиск по публичному ключу (все) Найти все индексированные аккаунты по публичному ключу Получите все аккаунты, связанные с публичным ключом — ключи полного доступа и ключи с ограничениями вместе. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/fastnear/v1/public_key_lookup_all - https://docs.fastnear.com/ru/apis/fastnear/openapi/public-key/lookup_by_public_key_all_v1 ## Операция - Транспорт: http - Метод: GET - Путь: `/v1/public_key/{public_key}/all` - Исходная спецификация: `apis/fastnear/v1/public_key_lookup_all.yaml` ## Сети - Mainnet: https://api.fastnear.com/ - Testnet: https://test.api.fastnear.com/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://api.fastnear.com/v1/public_key/ed25519%3ACCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT/all - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "public_key": "ed25519:CCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT" }, "query": {} } ``` ### Входные данные - `public_key` (путь, обязательный, string): Публичный ключ NEAR в формате `ed25519:...` или `secp256k1:...`. ### Параметры пути - `public_key` (путь, обязательный, string): Публичный ключ NEAR в формате `ed25519:...` или `secp256k1:...`. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ, который могут передавать встроенные клиенты портала. Публичный FastNear API не требует его. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Подходящие ID аккаунтов для переданного публичного ключа, включая ключи ограниченного доступа ### Схема ответа ```json { "type": "object", "required": [ "public_key", "account_ids" ], "additionalProperties": false, "properties": [ { "name": "account_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "public_key", "required": true, "schema": { "type": "string" } } ], "refName": "PublicKeyLookupResponse" } ``` --- ## KV FastData API - Последние ключи по вызывающему аккаунту - HTML-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/all_by_predecessor - Markdown-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/all_by_predecessor.md # KV FastData API - Последние ключи по вызывающему аккаунту Получить последние строки «ключ-значение» для одного вызывающего аккаунта по всем контрактам Получите последние значения для всех контрактов, к которым обращался один вызывающий аккаунт. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/kv-fastdata/v0/all_by_predecessor - https://docs.fastnear.com/ru/apis/kv-fastdata/openapi/latest/all_by_predecessor ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/all/{predecessor_id}` - Исходная спецификация: `apis/kv-fastdata/v0/all_by_predecessor.yaml` ## Сети - Mainnet: https://kv.main.fastnear.com/ - Testnet: https://kv.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://kv.main.fastnear.com/v0/all/james.near - Активный пример: Mainnet ### Тело запроса ```json { "include_metadata": true, "limit": 50 } ``` ## Справка по запросу ### Активный пример ```json { "body": { "include_metadata": true, "limit": 50 }, "headers": {}, "path": { "predecessor_id": "james.near" }, "query": {} } ``` ### Входные данные - `predecessor_id` (путь, обязательный, string): Вызывающий аккаунт, который записал ключи FastData. - `include_metadata` (body, boolean): Добавить в каждую запись метаданные квитанции и подписанта. - `limit` (body, integer): Maximum number of entries to return in one page (1–200, default 50). - `page_token` (body, string): Непрозрачный токен страницы из предыдущего ответа `/v0/all/{predecessor_id}`. ### Схема запроса ```json { "type": "object", "additionalProperties": false, "properties": [ { "name": "include_metadata", "required": false, "schema": { "type": "boolean", "description": "Включать в каждую запись метаданные квитанции и подписанта.", "default": false } }, { "name": "limit", "required": false, "schema": { "type": "integer", "description": "Maximum number of entries to return in one page (1–200, default 50).", "format": "int32" } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Непрозрачный токен страницы из предыдущего ответа `/v0/all/{predecessor_id}`." } } ], "refName": "AllRequest" } ``` ### Параметры пути - `predecessor_id` (путь, обязательный, string): Вызывающий аккаунт, который записал ключи FastData. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Последние строки для выбранного вызывающего аккаунта ### Схема ответа ```json { "type": "object", "required": [ "entries" ], "additionalProperties": false, "properties": [ { "name": "entries", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "predecessor_id", "current_account_id", "block_height", "block_timestamp", "ключ", "value" ], "additionalProperties": false, "properties": [ { "name": "action_index", "required": false, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "current_account_id", "required": true, "schema": { "type": "string" } }, { "name": "ключ", "required": true, "schema": { "type": "string" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_id", "required": false, "schema": { "type": "string" } }, { "name": "signer_id", "required": false, "schema": { "type": "string" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } }, { "name": "value", "required": true, "schema": { "description": "Raw JSON value as stored in FastData." } } ], "refName": "KvEntry" } } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Opaque pagination cursor for the next page. Absent when there are no more results." } } ], "refName": "ListResponse" } ``` --- ## KV FastData API - История по точному ключу - HTML-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/get_history_key - Markdown-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/get_history_key.md # KV FastData API - История по точному ключу Получить исторические строки для одного точного ключа в рамках одного вызывающего аккаунта и контракта Получите каждую историческую запись для одного точного ключа под одним вызывающим аккаунтом и контрактом. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/kv-fastdata/v0/get_history_key - https://docs.fastnear.com/ru/apis/kv-fastdata/openapi/history/get_history_key ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/history/{current_account_id}/{predecessor_id}/{key}` - Исходная спецификация: `apis/kv-fastdata/v0/get_history_key.yaml` ## Сети - Mainnet: https://kv.main.fastnear.com/ - Testnet: https://kv.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://kv.main.fastnear.com/v0/history/social.near/james.near/%7Bkey%7D - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "current_account_id": "social.near", "predecessor_id": "james.near", "key": "graph/follow/sleet.near" }, "query": {} } ``` ### Входные данные - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. - `predecessor_id` (путь, обязательный, string): Вызывающий аккаунт, который записал ключи FastData. - `ключ` (путь, обязательный, string): Точный ключ FastData, который нужно вернуть. ### Параметры пути - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. - `predecessor_id` (путь, обязательный, string): Вызывающий аккаунт, который записал ключи FastData. - `ключ` (путь, обязательный, string): Точный ключ FastData, который нужно вернуть. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Исторические строки для выбранного вызывающего аккаунта, контракта и ключа ### Схема ответа ```json { "type": "object", "required": [ "entries" ], "additionalProperties": false, "properties": [ { "name": "entries", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "predecessor_id", "current_account_id", "block_height", "block_timestamp", "ключ", "value" ], "additionalProperties": false, "properties": [ { "name": "action_index", "required": false, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "current_account_id", "required": true, "schema": { "type": "string" } }, { "name": "ключ", "required": true, "schema": { "type": "string" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_id", "required": false, "schema": { "type": "string" } }, { "name": "signer_id", "required": false, "schema": { "type": "string" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } }, { "name": "value", "required": true, "schema": { "description": "Raw JSON value as stored in FastData." } } ], "refName": "KvEntry" } } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Opaque pagination cursor for the next page. Absent when there are no more results." } } ], "refName": "ListResponse" } ``` --- ## KV FastData API - Последнее значение по точному ключу - HTML-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/get_latest_key - Markdown-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/get_latest_key.md # KV FastData API - Последнее значение по точному ключу Получить последнюю строку для одного точного ключа в рамках одного вызывающего аккаунта и контракта Получите последнее значение для одного точного ключа под одним вызывающим аккаунтом и контрактом. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/kv-fastdata/v0/get_latest_key - https://docs.fastnear.com/ru/apis/kv-fastdata/openapi/latest/get_latest_key ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/latest/{current_account_id}/{predecessor_id}/{key}` - Исходная спецификация: `apis/kv-fastdata/v0/get_latest_key.yaml` ## Сети - Mainnet: https://kv.main.fastnear.com/ - Testnet: https://kv.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://kv.main.fastnear.com/v0/latest/social.near/james.near/%7Bkey%7D - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "current_account_id": "social.near", "predecessor_id": "james.near", "key": "graph/follow/sleet.near" }, "query": {} } ``` ### Входные данные - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. - `predecessor_id` (путь, обязательный, string): Вызывающий аккаунт, который записал ключи FastData. - `ключ` (путь, обязательный, string): Точный ключ FastData, который нужно вернуть. ### Параметры пути - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. - `predecessor_id` (путь, обязательный, string): Вызывающий аккаунт, который записал ключи FastData. - `ключ` (путь, обязательный, string): Точный ключ FastData, который нужно вернуть. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Последняя строка для выбранного вызывающего аккаунта, контракта и ключа ### Схема ответа ```json { "type": "object", "required": [ "entries" ], "additionalProperties": false, "properties": [ { "name": "entries", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "predecessor_id", "current_account_id", "block_height", "block_timestamp", "ключ", "value" ], "additionalProperties": false, "properties": [ { "name": "action_index", "required": false, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "current_account_id", "required": true, "schema": { "type": "string" } }, { "name": "ключ", "required": true, "schema": { "type": "string" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_id", "required": false, "schema": { "type": "string" } }, { "name": "signer_id", "required": false, "schema": { "type": "string" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } }, { "name": "value", "required": true, "schema": { "description": "Raw JSON value as stored in FastData." } } ], "refName": "KvEntry" } } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Opaque pagination cursor for the next page. Absent when there are no more results." } } ], "refName": "ListResponse" } ``` --- ## KV FastData API - История по аккаунту - HTML-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/history_by_account - Markdown-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/history_by_account.md # KV FastData API - История по аккаунту Получить историю записей «ключ-значение» для одного контракта по всем вызывающим аккаунтам Получите исторические строки FastData для одного целевого аккаунта по всем вызывающим аккаунтам. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/kv-fastdata/v0/history_by_account - https://docs.fastnear.com/ru/apis/kv-fastdata/openapi/history/history_by_account ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/history/{current_account_id}` - Исходная спецификация: `apis/kv-fastdata/v0/history_by_account.yaml` ## Сети - Mainnet: https://kv.main.fastnear.com/ - Testnet: https://kv.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://kv.main.fastnear.com/v0/history/social.near - Активный пример: Mainnet ### Тело запроса ```json { "asc": true, "include_metadata": true, "key_prefix": "graph/follow/sleet.near", "limit": 10 } ``` ## Справка по запросу ### Активный пример ```json { "body": { "asc": true, "include_metadata": true, "key_prefix": "graph/follow/sleet.near", "limit": 10 }, "headers": {}, "path": { "current_account_id": "social.near" }, "query": {} } ``` ### Входные данные - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. - `asc` (body, boolean): Сортировать результаты истории по возрастанию. По умолчанию сначала идут новые записи. - `include_metadata` (body, boolean): Добавить в каждую запись метаданные квитанции и подписанта. - `ключ` (body, string): Фильтр по точному ключу. Взаимно исключающий с `key_prefix`. - `key_prefix` (body, string): Фильтр по префиксу для совпадения пространств имён ключей. - `limit` (body, integer): Maximum number of entries to return in one page (1–200, default 50). - `page_token` (body, string): Непрозрачный токен страницы из предыдущего ответа с тем же эндпоинтом и набором фильтров. ### Схема запроса ```json { "type": "object", "additionalProperties": false, "properties": [ { "name": "asc", "required": false, "schema": { "type": "boolean", "description": "Сортировать по возрастанию для эндпоинтов истории. По умолчанию — от новых к старым.", "default": false } }, { "name": "include_metadata", "required": false, "schema": { "type": "boolean", "description": "Включать в каждую запись метаданные квитанции и подписанта.", "default": false } }, { "name": "ключ", "required": false, "schema": { "type": "string", "description": "Фильтр по точному ключу. Взаимно исключающий с `key_prefix`." } }, { "name": "key_prefix", "required": false, "schema": { "type": "string", "description": "Фильтр по префиксу для сопоставления пространств имён ключей." } }, { "name": "limit", "required": false, "schema": { "type": "integer", "description": "Maximum number of entries to return in one page (1–200, default 50).", "format": "int32" } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Непрозрачный токен страницы из предыдущего ответа того же эндпоинта и набора фильтров." } } ], "refName": "QueryRequest" } ``` ### Параметры пути - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Исторические строки для выбранного контракта ### Схема ответа ```json { "type": "object", "required": [ "entries" ], "additionalProperties": false, "properties": [ { "name": "entries", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "predecessor_id", "current_account_id", "block_height", "block_timestamp", "ключ", "value" ], "additionalProperties": false, "properties": [ { "name": "action_index", "required": false, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "current_account_id", "required": true, "schema": { "type": "string" } }, { "name": "ключ", "required": true, "schema": { "type": "string" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_id", "required": false, "schema": { "type": "string" } }, { "name": "signer_id", "required": false, "schema": { "type": "string" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } }, { "name": "value", "required": true, "schema": { "description": "Raw JSON value as stored in FastData." } } ], "refName": "KvEntry" } } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Opaque pagination cursor for the next page. Absent when there are no more results." } } ], "refName": "ListResponse" } ``` --- ## KV FastData API - История по глобальному ключу - HTML-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/history_by_key - Markdown-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/history_by_key.md # KV FastData API - История по глобальному ключу Получить историю по точному ключу во всех индексированных контрактах Получите исторические значения выбранного ключа по аккаунтам и вызывающим аккаунтам. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/kv-fastdata/v0/history_by_key - https://docs.fastnear.com/ru/apis/kv-fastdata/openapi/history/history_by_key ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/history` - Исходная спецификация: `apis/kv-fastdata/v0/history_by_key.yaml` ## Сети - Mainnet: https://kv.main.fastnear.com/ - Testnet: https://kv.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://kv.main.fastnear.com/v0/history - Активный пример: Mainnet ### Тело запроса ```json { "asc": true, "include_metadata": false, "limit": 50 } ``` ## Справка по запросу ### Активный пример ```json { "body": { "asc": true, "include_metadata": false, "key": "graph/follow/sleet.near", "limit": 50 }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `asc` (body, boolean): Сортировать результаты истории по возрастанию. По умолчанию сначала идут новые записи. - `include_metadata` (body, boolean): Добавить в каждую запись метаданные квитанции и подписанта. - `ключ` (body, обязательный, string): Точное имя ключа для сопоставления по всем аккаунтам и предшественникам. - `limit` (body, integer): Maximum number of entries to return in one page (1–200, default 50). - `page_token` (body, string): Непрозрачный токен страницы из предыдущего ответа с тем же эндпоинтом и набором фильтров. ### Схема запроса ```json { "type": "object", "required": [ "ключ" ], "additionalProperties": false, "properties": [ { "name": "asc", "required": false, "schema": { "type": "boolean", "description": "Сортировать результаты истории по возрастанию. По умолчанию — от новых к старым.", "default": false } }, { "name": "include_metadata", "required": false, "schema": { "type": "boolean", "description": "Включать в каждую запись метаданные квитанции и подписанта.", "default": false } }, { "name": "ключ", "required": true, "schema": { "type": "string", "description": "Точное имя ключа для сопоставления по всем аккаунтам и предшественникам." } }, { "name": "limit", "required": false, "schema": { "type": "integer", "description": "Maximum number of entries to return in one page (1–200, default 50).", "format": "int32" } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Непрозрачный токен страницы из предыдущего ответа того же эндпоинта и набора фильтров." } } ], "refName": "ByKeyRequest" } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Исторические строки для выбранного ключа ### Схема ответа ```json { "type": "object", "required": [ "entries" ], "additionalProperties": false, "properties": [ { "name": "entries", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "predecessor_id", "current_account_id", "block_height", "block_timestamp", "ключ", "value" ], "additionalProperties": false, "properties": [ { "name": "action_index", "required": false, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "current_account_id", "required": true, "schema": { "type": "string" } }, { "name": "ключ", "required": true, "schema": { "type": "string" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_id", "required": false, "schema": { "type": "string" } }, { "name": "signer_id", "required": false, "schema": { "type": "string" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } }, { "name": "value", "required": true, "schema": { "description": "Raw JSON value as stored in FastData." } } ], "refName": "KvEntry" } } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Opaque pagination cursor for the next page. Absent when there are no more results." } } ], "refName": "ListResponse" } ``` --- ## KV FastData API - История по вызывающему аккаунту - HTML-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/history_by_predecessor - Markdown-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/history_by_predecessor.md # KV FastData API - История по вызывающему аккаунту Получить историю записей «ключ-значение» для одного вызывающего аккаунта и контракта Получите исторические строки FastData для одного вызывающего аккаунта и целевого аккаунта. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/kv-fastdata/v0/history_by_predecessor - https://docs.fastnear.com/ru/apis/kv-fastdata/openapi/history/history_by_predecessor ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/history/{current_account_id}/{predecessor_id}` - Исходная спецификация: `apis/kv-fastdata/v0/history_by_predecessor.yaml` ## Сети - Mainnet: https://kv.main.fastnear.com/ - Testnet: https://kv.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://kv.main.fastnear.com/v0/history/social.near/james.near - Активный пример: Mainnet ### Тело запроса ```json { "asc": false, "include_metadata": true, "key_prefix": "graph/follow/", "limit": 50 } ``` ## Справка по запросу ### Активный пример ```json { "body": { "asc": false, "include_metadata": true, "key_prefix": "graph/follow/", "limit": 50 }, "headers": {}, "path": { "current_account_id": "social.near", "predecessor_id": "james.near" }, "query": {} } ``` ### Входные данные - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. - `predecessor_id` (путь, обязательный, string): Вызывающий аккаунт, который записал ключи FastData. - `asc` (body, boolean): Сортировать результаты истории по возрастанию. По умолчанию сначала идут новые записи. - `include_metadata` (body, boolean): Добавить в каждую запись метаданные квитанции и подписанта. - `ключ` (body, string): Фильтр по точному ключу. Взаимно исключающий с `key_prefix`. - `key_prefix` (body, string): Фильтр по префиксу для совпадения пространств имён ключей. - `limit` (body, integer): Maximum number of entries to return in one page (1–200, default 50). - `page_token` (body, string): Непрозрачный токен страницы из предыдущего ответа с тем же эндпоинтом и набором фильтров. ### Схема запроса ```json { "type": "object", "additionalProperties": false, "properties": [ { "name": "asc", "required": false, "schema": { "type": "boolean", "description": "Сортировать по возрастанию для эндпоинтов истории. По умолчанию — от новых к старым.", "default": false } }, { "name": "include_metadata", "required": false, "schema": { "type": "boolean", "description": "Включать в каждую запись метаданные квитанции и подписанта.", "default": false } }, { "name": "ключ", "required": false, "schema": { "type": "string", "description": "Фильтр по точному ключу. Взаимно исключающий с `key_prefix`." } }, { "name": "key_prefix", "required": false, "schema": { "type": "string", "description": "Фильтр по префиксу для сопоставления пространств имён ключей." } }, { "name": "limit", "required": false, "schema": { "type": "integer", "description": "Maximum number of entries to return in one page (1–200, default 50).", "format": "int32" } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Непрозрачный токен страницы из предыдущего ответа того же эндпоинта и набора фильтров." } } ], "refName": "QueryRequest" } ``` ### Параметры пути - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. - `predecessor_id` (путь, обязательный, string): Вызывающий аккаунт, который записал ключи FastData. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Исторические строки для выбранного вызывающего аккаунта и аккаунта контракта ### Схема ответа ```json { "type": "object", "required": [ "entries" ], "additionalProperties": false, "properties": [ { "name": "entries", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "predecessor_id", "current_account_id", "block_height", "block_timestamp", "ключ", "value" ], "additionalProperties": false, "properties": [ { "name": "action_index", "required": false, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "current_account_id", "required": true, "schema": { "type": "string" } }, { "name": "ключ", "required": true, "schema": { "type": "string" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_id", "required": false, "schema": { "type": "string" } }, { "name": "signer_id", "required": false, "schema": { "type": "string" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } }, { "name": "value", "required": true, "schema": { "description": "Raw JSON value as stored in FastData." } } ], "refName": "KvEntry" } } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Opaque pagination cursor for the next page. Absent when there are no more results." } } ], "refName": "ListResponse" } ``` --- ## KV FastData API - Последние значения по аккаунту - HTML-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/latest_by_account - Markdown-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/latest_by_account.md # KV FastData API - Последние значения по аккаунту Получить последние строки «ключ-значение» для одного контракта по всем вызывающим аккаунтам Получите последние строки FastData для одного целевого аккаунта по всем вызывающим аккаунтам. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/kv-fastdata/v0/latest_by_account - https://docs.fastnear.com/ru/apis/kv-fastdata/openapi/latest/latest_by_account ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/latest/{current_account_id}` - Исходная спецификация: `apis/kv-fastdata/v0/latest_by_account.yaml` ## Сети - Mainnet: https://kv.main.fastnear.com/ - Testnet: https://kv.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://kv.main.fastnear.com/v0/latest/social.near - Активный пример: Mainnet ### Тело запроса ```json { "include_metadata": true, "key_prefix": "graph/follow/", "limit": 50 } ``` ## Справка по запросу ### Активный пример ```json { "body": { "include_metadata": true, "key_prefix": "graph/follow/", "limit": 50 }, "headers": {}, "path": { "current_account_id": "social.near" }, "query": {} } ``` ### Входные данные - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. - `include_metadata` (body, boolean): Добавить в каждую запись метаданные квитанции и подписанта. - `ключ` (body, string): Фильтр по точному ключу. Взаимно исключающий с `key_prefix`. - `key_prefix` (body, string): Фильтр по префиксу для совпадения пространств имён ключей. - `limit` (body, integer): Maximum number of entries to return in one page (1–200, default 50). - `page_token` (body, string): Непрозрачный токен страницы из предыдущего ответа с тем же эндпоинтом и набором фильтров. ### Схема запроса ```json { "type": "object", "additionalProperties": false, "properties": [ { "name": "include_metadata", "required": false, "schema": { "type": "boolean", "description": "Включать в каждую запись метаданные квитанции и подписанта.", "default": false } }, { "name": "ключ", "required": false, "schema": { "type": "string", "description": "Фильтр по точному ключу. Взаимно исключающий с `key_prefix`." } }, { "name": "key_prefix", "required": false, "schema": { "type": "string", "description": "Фильтр по префиксу для сопоставления пространств имён ключей." } }, { "name": "limit", "required": false, "schema": { "type": "integer", "description": "Maximum number of entries to return in one page (1–200, default 50).", "format": "int32" } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Непрозрачный токен страницы из предыдущего ответа того же эндпоинта и набора фильтров." } } ], "refName": "LatestRequest" } ``` ### Параметры пути - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Последние строки для выбранного контракта ### Схема ответа ```json { "type": "object", "required": [ "entries" ], "additionalProperties": false, "properties": [ { "name": "entries", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "predecessor_id", "current_account_id", "block_height", "block_timestamp", "ключ", "value" ], "additionalProperties": false, "properties": [ { "name": "action_index", "required": false, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "current_account_id", "required": true, "schema": { "type": "string" } }, { "name": "ключ", "required": true, "schema": { "type": "string" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_id", "required": false, "schema": { "type": "string" } }, { "name": "signer_id", "required": false, "schema": { "type": "string" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } }, { "name": "value", "required": true, "schema": { "description": "Raw JSON value as stored in FastData." } } ], "refName": "KvEntry" } } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Opaque pagination cursor for the next page. Absent when there are no more results." } } ], "refName": "ListResponse" } ``` --- ## KV FastData API - Последние значения по вызывающему аккаунту - HTML-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/latest_by_predecessor - Markdown-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/latest_by_predecessor.md # KV FastData API - Последние значения по вызывающему аккаунту Получить последние строки «ключ-значение» для одного вызывающего аккаунта и контракта Получите последние строки FastData для одного вызывающего аккаунта и целевого аккаунта. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/kv-fastdata/v0/latest_by_predecessor - https://docs.fastnear.com/ru/apis/kv-fastdata/openapi/latest/latest_by_predecessor ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/latest/{current_account_id}/{predecessor_id}` - Исходная спецификация: `apis/kv-fastdata/v0/latest_by_predecessor.yaml` ## Сети - Mainnet: https://kv.main.fastnear.com/ - Testnet: https://kv.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://kv.main.fastnear.com/v0/latest/social.near/james.near - Активный пример: Mainnet ### Тело запроса ```json { "include_metadata": true, "key_prefix": "graph/follow/", "limit": 50 } ``` ## Справка по запросу ### Активный пример ```json { "body": { "include_metadata": true, "key_prefix": "graph/follow/", "limit": 50 }, "headers": {}, "path": { "current_account_id": "social.near", "predecessor_id": "james.near" }, "query": {} } ``` ### Входные данные - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. - `predecessor_id` (путь, обязательный, string): Вызывающий аккаунт, который записал ключи FastData. - `include_metadata` (body, boolean): Добавить в каждую запись метаданные квитанции и подписанта. - `ключ` (body, string): Фильтр по точному ключу. Взаимно исключающий с `key_prefix`. - `key_prefix` (body, string): Фильтр по префиксу для совпадения пространств имён ключей. - `limit` (body, integer): Maximum number of entries to return in one page (1–200, default 50). - `page_token` (body, string): Непрозрачный токен страницы из предыдущего ответа с тем же эндпоинтом и набором фильтров. ### Схема запроса ```json { "type": "object", "additionalProperties": false, "properties": [ { "name": "include_metadata", "required": false, "schema": { "type": "boolean", "description": "Включать в каждую запись метаданные квитанции и подписанта.", "default": false } }, { "name": "ключ", "required": false, "schema": { "type": "string", "description": "Фильтр по точному ключу. Взаимно исключающий с `key_prefix`." } }, { "name": "key_prefix", "required": false, "schema": { "type": "string", "description": "Фильтр по префиксу для сопоставления пространств имён ключей." } }, { "name": "limit", "required": false, "schema": { "type": "integer", "description": "Maximum number of entries to return in one page (1–200, default 50).", "format": "int32" } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Непрозрачный токен страницы из предыдущего ответа того же эндпоинта и набора фильтров." } } ], "refName": "LatestRequest" } ``` ### Параметры пути - `current_account_id` (путь, обязательный, string): Аккаунт контракта, для которого были записаны ключи FastData. - `predecessor_id` (путь, обязательный, string): Вызывающий аккаунт, который записал ключи FastData. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Последние строки для выбранного вызывающего аккаунта и аккаунта контракта ### Схема ответа ```json { "type": "object", "required": [ "entries" ], "additionalProperties": false, "properties": [ { "name": "entries", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "predecessor_id", "current_account_id", "block_height", "block_timestamp", "ключ", "value" ], "additionalProperties": false, "properties": [ { "name": "action_index", "required": false, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "current_account_id", "required": true, "schema": { "type": "string" } }, { "name": "ключ", "required": true, "schema": { "type": "string" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_id", "required": false, "schema": { "type": "string" } }, { "name": "signer_id", "required": false, "schema": { "type": "string" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } }, { "name": "value", "required": true, "schema": { "description": "Raw JSON value as stored in FastData." } } ], "refName": "KvEntry" } } }, { "name": "page_token", "required": false, "schema": { "type": "string", "description": "Opaque pagination cursor for the next page. Absent when there are no more results." } } ], "refName": "ListResponse" } ``` --- ## KV FastData API - Пакетный поиск по ключам - HTML-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/multi - Markdown-маршрут: https://docs.fastnear.com/ru/apis/kv-fastdata/v0/multi.md # KV FastData API - Пакетный поиск по ключам Получить последние строки для нескольких полностью квалифицированных ключей Получите последнюю строку FastData сразу для 100 ключей в одном запросе. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/kv-fastdata/v0/multi - https://docs.fastnear.com/ru/apis/kv-fastdata/openapi/latest/multi ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/multi` - Исходная спецификация: `apis/kv-fastdata/v0/multi.yaml` ## Сети - Mainnet: https://kv.main.fastnear.com/ - Testnet: https://kv.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://kv.main.fastnear.com/v0/multi - Активный пример: Mainnet ### Тело запроса ```json { "include_metadata": true } ``` ## Справка по запросу ### Активный пример ```json { "body": { "include_metadata": true, "keys": [ "social.near/james.near/graph/follow/sleet.near", "social.near/james.near/graph/follow/missing" ] }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `include_metadata` (body, boolean): Добавить в каждую запись метаданные квитанции и подписанта. - `ключи` (body, обязательный, array): Полноквалифицированные ключи в форме current_account_id/predecessor_id/key. ### Схема запроса ```json { "type": "object", "required": [ "ключи" ], "additionalProperties": false, "properties": [ { "name": "include_metadata", "required": false, "schema": { "type": "boolean", "description": "Включать в каждую запись метаданные квитанции и подписанта.", "default": false } }, { "name": "ключи", "required": true, "schema": { "type": "array", "description": "Полноквалифицированные ключи в форме current_account_id/predecessor_id/key.", "items": { "type": "string" } } } ], "refName": "MultiRequest" } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Последние строки для запрошенных ключей ### Схема ответа ```json { "type": "object", "required": [ "entries" ], "additionalProperties": false, "properties": [ { "name": "entries", "required": true, "schema": { "type": "array", "items": { "oneOf": [ { "type": "object", "required": [ "predecessor_id", "current_account_id", "block_height", "block_timestamp", "ключ", "value" ], "additionalProperties": false, "properties": [ { "name": "action_index", "required": false, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "current_account_id", "required": true, "schema": { "type": "string" } }, { "name": "ключ", "required": true, "schema": { "type": "string" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_id", "required": false, "schema": { "type": "string" } }, { "name": "signer_id", "required": false, "schema": { "type": "string" } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } }, { "name": "value", "required": true, "schema": { "description": "Raw JSON value as stored in FastData." } } ] }, { "enum": [ null ] } ] } } } ], "refName": "MultiResponse" } ``` --- ## NEAR Data API - Состояние - HTML-маршрут: https://docs.fastnear.com/ru/apis/neardata/system/health - Markdown-маршрут: https://docs.fastnear.com/ru/apis/neardata/system/health.md # NEAR Data API - Состояние Проверить состояние сервиса Проверьте работоспособность сервиса NEAR Data — возвращает `{status: ok}` при успехе, ошибку при проблемах. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/neardata/system/health - https://docs.fastnear.com/ru/apis/neardata/openapi/system/get_health ## Операция - Транспорт: http - Метод: GET - Путь: `/health` - Исходная спецификация: `apis/neardata/system/health.yaml` ## Сети - Mainnet: https://mainnet.neardata.xyz/ - Testnet: https://testnet.neardata.xyz/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://mainnet.neardata.xyz/health - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": {}, "query": {} } ``` ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Поле состояния сервиса ### Схема ответа ```json { "type": "object", "required": [ "статус" ], "additionalProperties": false, "properties": [ { "name": "статус", "required": true, "schema": { "type": "string" } } ], "refName": "HealthResponse" } ``` --- ## NEAR Data API - Финализированный блок - HTML-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/block - Markdown-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/block.md # NEAR Data API - Финализированный блок Получить финализированный блок по высоте Получите полный документ финализированного блока на выбранной высоте — заголовок плюс каждый чанк и данные шарда. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/neardata/v0/block - https://docs.fastnear.com/ru/apis/neardata/openapi/blocks/get_block ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/block/{block_height}` - Исходная спецификация: `apis/neardata/v0/block.yaml` ## Сети - Mainnet: https://mainnet.neardata.xyz/ - Testnet: https://testnet.neardata.xyz/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://mainnet.neardata.xyz/v0/block/9820210 - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "block_height": "9820210" }, "query": {} } ``` ### Входные данные - `block_height` (путь, обязательный, string): Высота блока NEAR для запроса. ### Параметры пути - `block_height` (путь, обязательный, string): Высота блока NEAR для запроса. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Запрошенный документ или `null`, если выбранный срез отсутствует ### Схема ответа ```json { "type": "object", "description": "Full block document as served by neardata, including the block envelope and per-shard payloads.", "required": [ "блок", "shards" ], "additionalProperties": false, "properties": [ { "name": "блок", "required": true, "schema": { "type": "object", "description": "Block-level payload returned by neardata.", "required": [ "author", "chunks", "header" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Block producer account ID." } }, { "name": "chunks", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Block header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunks_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "gas_price", "required": false, "schema": { "type": "string" } }, { "name": "hash", "required": false, "schema": { "type": "string" } }, { "name": "height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "next_epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "prev_hash", "required": false, "schema": { "type": "string" } }, { "name": "prev_height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "timestamp", "required": false, "schema": { "type": "integer" } }, { "name": "timestamp_nanosec", "required": false, "schema": { "type": "string" } }, { "name": "total_supply", "required": false, "schema": { "type": "string" } } ], "refName": "BlockHeader" } } ], "refName": "BlockEnvelope" } }, { "name": "shards", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Per-shard payload returned by neardata for a block.", "required": [ "chunk", "receipt_execution_outcomes", "shard_id", "state_changes" ], "additionalProperties": false, "properties": [ { "name": "chunk", "required": true, "schema": { "type": "object", "description": "Chunk payload returned by neardata for a single shard in a selected block.", "required": [ "author", "header", "квитанции", "транзакции" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Chunk producer account ID." } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } }, { "name": "квитанции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" } } }, { "name": "транзакции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Transaction entry returned inside a neardata chunk.", "required": [ "outcome", "транзакция" ], "additionalProperties": false, "properties": [ { "name": "outcome", "required": true, "schema": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } }, { "name": "транзакция", "required": true, "schema": { "type": "object", "required": [ "actions", "hash", "nonce", "priority_fee", "public_key", "receiver_id", "signature", "signer_id" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "hash", "required": true, "schema": { "type": "string" } }, { "name": "nonce", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "priority_fee", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "signature", "required": true, "schema": { "type": "string" } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } } ], "refName": "SignedTransactionDocument" } } ], "refName": "ChunkTransactionWrapper" } } } ], "refName": "ChunkDocument" } }, { "name": "receipt_execution_outcomes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "state_changes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "State change entry returned by neardata for a shard.", "required": [ "cause", "change", "type" ], "additionalProperties": false, "properties": [ { "name": "cause", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "tx_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "tx_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseTransactionProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseReceiptProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseActionReceiptGasReward" } ], "refName": "StateChangeCause" } }, { "name": "change", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "account_id", "amount", "code_hash", "locked", "storage_paid_at", "storage_usage" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "amount", "required": true, "schema": { "type": "string" } }, { "name": "code_hash", "required": true, "schema": { "type": "string" } }, { "name": "locked", "required": true, "schema": { "type": "string" } }, { "name": "storage_paid_at", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "storage_usage", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "StateChangeValueAccountUpdate" }, { "type": "object", "required": [ "access_key", "account_id", "public_key" ], "additionalProperties": false, "properties": [ { "name": "access_key", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueAccessKeyUpdate" }, { "type": "object", "required": [ "account_id", "key_base64", "value_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } }, { "name": "value_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataUpdate" }, { "type": "object", "required": [ "account_id", "key_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataDeletion" } ], "refName": "StateChangeValue" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeItem" } } } ], "refName": "ShardDocument" } } } ], "refName": "BlockDocument" } ``` --- ## NEAR Data API - Чанк блока - HTML-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/block_chunk - Markdown-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/block_chunk.md # NEAR Data API - Чанк блока Получить чанк из финализированного блока Получите один чанк — транзакции и входящие квитанции одного шарда — на выбранной высоте блока. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/neardata/v0/block_chunk - https://docs.fastnear.com/ru/apis/neardata/openapi/blocks/get_chunk ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/block/{block_height}/chunk/{shard_id}` - Исходная спецификация: `apis/neardata/v0/block_chunk.yaml` ## Сети - Mainnet: https://mainnet.neardata.xyz/ - Testnet: https://testnet.neardata.xyz/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://mainnet.neardata.xyz/v0/block/50000000/chunk/0 - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "block_height": "50000000", "shard_id": "0" }, "query": {} } ``` ### Входные данные - `block_height` (путь, обязательный, string): Высота блока NEAR для запроса. - `shard_id` (путь, обязательный, string): Идентификатор шарда, чанк которого нужно вернуть. ### Параметры пути - `block_height` (путь, обязательный, string): Высота блока NEAR для запроса. - `shard_id` (путь, обязательный, string): Идентификатор шарда, чанк которого нужно вернуть. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Запрошенный документ или `null`, если выбранный срез отсутствует ### Схема ответа ```json { "type": "object", "description": "Chunk payload returned by neardata for a single shard in a selected block.", "required": [ "author", "header", "квитанции", "транзакции" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Chunk producer account ID." } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } }, { "name": "квитанции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" } } }, { "name": "транзакции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Transaction entry returned inside a neardata chunk.", "required": [ "outcome", "транзакция" ], "additionalProperties": false, "properties": [ { "name": "outcome", "required": true, "schema": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } }, { "name": "транзакция", "required": true, "schema": { "type": "object", "required": [ "actions", "hash", "nonce", "priority_fee", "public_key", "receiver_id", "signature", "signer_id" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "hash", "required": true, "schema": { "type": "string" } }, { "name": "nonce", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "priority_fee", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "signature", "required": true, "schema": { "type": "string" } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } } ], "refName": "SignedTransactionDocument" } } ], "refName": "ChunkTransactionWrapper" } } } ], "refName": "ChunkDocument" } ``` --- ## NEAR Data API - Заголовки блока - HTML-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/block_headers - Markdown-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/block_headers.md # NEAR Data API - Заголовки блока Получить объект блока для финализированного блока Получите только заголовок финализированного блока и сводку по чанкам — без содержимого отдельных шардов. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/neardata/v0/block_headers - https://docs.fastnear.com/ru/apis/neardata/openapi/blocks/get_block_headers ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/block/{block_height}/headers` - Исходная спецификация: `apis/neardata/v0/block_headers.yaml` ## Сети - Mainnet: https://mainnet.neardata.xyz/ - Testnet: https://testnet.neardata.xyz/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://mainnet.neardata.xyz/v0/block/9820210/headers - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "block_height": "9820210" }, "query": {} } ``` ### Входные данные - `block_height` (путь, обязательный, string): Высота блока NEAR для запроса. ### Параметры пути - `block_height` (путь, обязательный, string): Высота блока NEAR для запроса. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Запрошенный документ или `null`, если выбранный срез отсутствует ### Схема ответа ```json { "type": "object", "description": "Block-level payload returned by neardata.", "required": [ "author", "chunks", "header" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Block producer account ID." } }, { "name": "chunks", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Block header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunks_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "gas_price", "required": false, "schema": { "type": "string" } }, { "name": "hash", "required": false, "schema": { "type": "string" } }, { "name": "height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "next_epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "prev_hash", "required": false, "schema": { "type": "string" } }, { "name": "prev_height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "timestamp", "required": false, "schema": { "type": "integer" } }, { "name": "timestamp_nanosec", "required": false, "schema": { "type": "string" } }, { "name": "total_supply", "required": false, "schema": { "type": "string" } } ], "refName": "BlockHeader" } } ], "refName": "BlockEnvelope" } ``` --- ## NEAR Data API - Оптимистичный блок - HTML-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/block_optimistic - Markdown-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/block_optimistic.md # NEAR Data API - Оптимистичный блок Получить оптимистичный блок по высоте Получите оптимистичный (ещё не финализированный) блок на выбранной высоте — может перенаправить на финализированные данные, когда окно оптимистичности закрылось. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/neardata/v0/block_optimistic - https://docs.fastnear.com/ru/apis/neardata/openapi/blocks/get_block_optimistic ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/block_opt/{block_height}` - Исходная спецификация: `apis/neardata/v0/block_optimistic.yaml` ## Сети - Mainnet: https://mainnet.neardata.xyz/ - Testnet: https://testnet.neardata.xyz/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://mainnet.neardata.xyz/v0/block_opt/9820210 - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "block_height": "9820210" }, "query": {} } ``` ### Входные данные - `block_height` (путь, обязательный, string): Высота блока NEAR для запроса. ### Параметры пути - `block_height` (путь, обязательный, string): Высота блока NEAR для запроса. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Запрошенный документ или `null`, если выбранный срез отсутствует ### Схема ответа ```json { "type": "object", "description": "Full block document as served by neardata, including the block envelope and per-shard payloads.", "required": [ "блок", "shards" ], "additionalProperties": false, "properties": [ { "name": "блок", "required": true, "schema": { "type": "object", "description": "Block-level payload returned by neardata.", "required": [ "author", "chunks", "header" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Block producer account ID." } }, { "name": "chunks", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Block header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunks_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "gas_price", "required": false, "schema": { "type": "string" } }, { "name": "hash", "required": false, "schema": { "type": "string" } }, { "name": "height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "next_epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "prev_hash", "required": false, "schema": { "type": "string" } }, { "name": "prev_height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "timestamp", "required": false, "schema": { "type": "integer" } }, { "name": "timestamp_nanosec", "required": false, "schema": { "type": "string" } }, { "name": "total_supply", "required": false, "schema": { "type": "string" } } ], "refName": "BlockHeader" } } ], "refName": "BlockEnvelope" } }, { "name": "shards", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Per-shard payload returned by neardata for a block.", "required": [ "chunk", "receipt_execution_outcomes", "shard_id", "state_changes" ], "additionalProperties": false, "properties": [ { "name": "chunk", "required": true, "schema": { "type": "object", "description": "Chunk payload returned by neardata for a single shard in a selected block.", "required": [ "author", "header", "квитанции", "транзакции" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Chunk producer account ID." } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } }, { "name": "квитанции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" } } }, { "name": "транзакции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Transaction entry returned inside a neardata chunk.", "required": [ "outcome", "транзакция" ], "additionalProperties": false, "properties": [ { "name": "outcome", "required": true, "schema": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } }, { "name": "транзакция", "required": true, "schema": { "type": "object", "required": [ "actions", "hash", "nonce", "priority_fee", "public_key", "receiver_id", "signature", "signer_id" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "hash", "required": true, "schema": { "type": "string" } }, { "name": "nonce", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "priority_fee", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "signature", "required": true, "schema": { "type": "string" } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } } ], "refName": "SignedTransactionDocument" } } ], "refName": "ChunkTransactionWrapper" } } } ], "refName": "ChunkDocument" } }, { "name": "receipt_execution_outcomes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "state_changes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "State change entry returned by neardata for a shard.", "required": [ "cause", "change", "type" ], "additionalProperties": false, "properties": [ { "name": "cause", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "tx_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "tx_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseTransactionProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseReceiptProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseActionReceiptGasReward" } ], "refName": "StateChangeCause" } }, { "name": "change", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "account_id", "amount", "code_hash", "locked", "storage_paid_at", "storage_usage" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "amount", "required": true, "schema": { "type": "string" } }, { "name": "code_hash", "required": true, "schema": { "type": "string" } }, { "name": "locked", "required": true, "schema": { "type": "string" } }, { "name": "storage_paid_at", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "storage_usage", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "StateChangeValueAccountUpdate" }, { "type": "object", "required": [ "access_key", "account_id", "public_key" ], "additionalProperties": false, "properties": [ { "name": "access_key", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueAccessKeyUpdate" }, { "type": "object", "required": [ "account_id", "key_base64", "value_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } }, { "name": "value_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataUpdate" }, { "type": "object", "required": [ "account_id", "key_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataDeletion" } ], "refName": "StateChangeValue" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeItem" } } } ], "refName": "ShardDocument" } } } ], "refName": "BlockDocument" } ``` --- ## NEAR Data API - Шард блока - HTML-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/block_shard - Markdown-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/block_shard.md # NEAR Data API - Шард блока Получить шард из финализированного блока Получите полное содержимое одного шарда на выбранном блоке — чанк плюс изменения состояния и произведённые квитанции. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/neardata/v0/block_shard - https://docs.fastnear.com/ru/apis/neardata/openapi/blocks/get_shard ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/block/{block_height}/shard/{shard_id}` - Исходная спецификация: `apis/neardata/v0/block_shard.yaml` ## Сети - Mainnet: https://mainnet.neardata.xyz/ - Testnet: https://testnet.neardata.xyz/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://mainnet.neardata.xyz/v0/block/50000000/shard/0 - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": { "block_height": "50000000", "shard_id": "0" }, "query": {} } ``` ### Входные данные - `block_height` (путь, обязательный, string): Высота блока NEAR для запроса. - `shard_id` (путь, обязательный, string): Идентификатор шарда, который нужно вернуть. ### Параметры пути - `block_height` (путь, обязательный, string): Высота блока NEAR для запроса. - `shard_id` (путь, обязательный, string): Идентификатор шарда, который нужно вернуть. ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Запрошенный документ или `null`, если выбранный срез отсутствует ### Схема ответа ```json { "type": "object", "description": "Per-shard payload returned by neardata for a block.", "required": [ "chunk", "receipt_execution_outcomes", "shard_id", "state_changes" ], "additionalProperties": false, "properties": [ { "name": "chunk", "required": true, "schema": { "type": "object", "description": "Chunk payload returned by neardata for a single shard in a selected block.", "required": [ "author", "header", "квитанции", "транзакции" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Chunk producer account ID." } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } }, { "name": "квитанции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" } } }, { "name": "транзакции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Transaction entry returned inside a neardata chunk.", "required": [ "outcome", "транзакция" ], "additionalProperties": false, "properties": [ { "name": "outcome", "required": true, "schema": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } }, { "name": "транзакция", "required": true, "schema": { "type": "object", "required": [ "actions", "hash", "nonce", "priority_fee", "public_key", "receiver_id", "signature", "signer_id" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "hash", "required": true, "schema": { "type": "string" } }, { "name": "nonce", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "priority_fee", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "signature", "required": true, "schema": { "type": "string" } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } } ], "refName": "SignedTransactionDocument" } } ], "refName": "ChunkTransactionWrapper" } } } ], "refName": "ChunkDocument" } }, { "name": "receipt_execution_outcomes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "state_changes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "State change entry returned by neardata for a shard.", "required": [ "cause", "change", "type" ], "additionalProperties": false, "properties": [ { "name": "cause", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "tx_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "tx_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseTransactionProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseReceiptProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseActionReceiptGasReward" } ], "refName": "StateChangeCause" } }, { "name": "change", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "account_id", "amount", "code_hash", "locked", "storage_paid_at", "storage_usage" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "amount", "required": true, "schema": { "type": "string" } }, { "name": "code_hash", "required": true, "schema": { "type": "string" } }, { "name": "locked", "required": true, "schema": { "type": "string" } }, { "name": "storage_paid_at", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "storage_usage", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "StateChangeValueAccountUpdate" }, { "type": "object", "required": [ "access_key", "account_id", "public_key" ], "additionalProperties": false, "properties": [ { "name": "access_key", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueAccessKeyUpdate" }, { "type": "object", "required": [ "account_id", "key_base64", "value_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } }, { "name": "value_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataUpdate" }, { "type": "object", "required": [ "account_id", "key_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataDeletion" } ], "refName": "StateChangeValue" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeItem" } } } ], "refName": "ShardDocument" } ``` --- ## NEAR Data API - Первый блок - HTML-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/first_block - Markdown-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/first_block.md # NEAR Data API - Первый блок Перенаправление на первый блок после генезиса Перенаправление на первый блок цепочки после генезиса — стартовый курсор для индексаторов, обходящих цепочку с начала. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/neardata/v0/first_block - https://docs.fastnear.com/ru/apis/neardata/openapi/blocks/get_first_block ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/first_block` - Исходная спецификация: `apis/neardata/v0/first_block.yaml` ## Сети - Mainnet: https://mainnet.neardata.xyz/ - Testnet: https://testnet.neardata.xyz/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://mainnet.neardata.xyz/v0/first_block - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": {}, "query": {} } ``` ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Полный документ блока после автоматического прохождения перенаправления ### Схема ответа ```json { "type": "object", "description": "Full block document as served by neardata, including the block envelope and per-shard payloads.", "required": [ "блок", "shards" ], "additionalProperties": false, "properties": [ { "name": "блок", "required": true, "schema": { "type": "object", "description": "Block-level payload returned by neardata.", "required": [ "author", "chunks", "header" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Block producer account ID." } }, { "name": "chunks", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Block header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunks_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "gas_price", "required": false, "schema": { "type": "string" } }, { "name": "hash", "required": false, "schema": { "type": "string" } }, { "name": "height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "next_epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "prev_hash", "required": false, "schema": { "type": "string" } }, { "name": "prev_height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "timestamp", "required": false, "schema": { "type": "integer" } }, { "name": "timestamp_nanosec", "required": false, "schema": { "type": "string" } }, { "name": "total_supply", "required": false, "schema": { "type": "string" } } ], "refName": "BlockHeader" } } ], "refName": "BlockEnvelope" } }, { "name": "shards", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Per-shard payload returned by neardata for a block.", "required": [ "chunk", "receipt_execution_outcomes", "shard_id", "state_changes" ], "additionalProperties": false, "properties": [ { "name": "chunk", "required": true, "schema": { "type": "object", "description": "Chunk payload returned by neardata for a single shard in a selected block.", "required": [ "author", "header", "квитанции", "транзакции" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Chunk producer account ID." } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } }, { "name": "квитанции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" } } }, { "name": "транзакции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Transaction entry returned inside a neardata chunk.", "required": [ "outcome", "транзакция" ], "additionalProperties": false, "properties": [ { "name": "outcome", "required": true, "schema": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } }, { "name": "транзакция", "required": true, "schema": { "type": "object", "required": [ "actions", "hash", "nonce", "priority_fee", "public_key", "receiver_id", "signature", "signer_id" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "hash", "required": true, "schema": { "type": "string" } }, { "name": "nonce", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "priority_fee", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "signature", "required": true, "schema": { "type": "string" } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } } ], "refName": "SignedTransactionDocument" } } ], "refName": "ChunkTransactionWrapper" } } } ], "refName": "ChunkDocument" } }, { "name": "receipt_execution_outcomes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "state_changes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "State change entry returned by neardata for a shard.", "required": [ "cause", "change", "type" ], "additionalProperties": false, "properties": [ { "name": "cause", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "tx_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "tx_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseTransactionProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseReceiptProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseActionReceiptGasReward" } ], "refName": "StateChangeCause" } }, { "name": "change", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "account_id", "amount", "code_hash", "locked", "storage_paid_at", "storage_usage" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "amount", "required": true, "schema": { "type": "string" } }, { "name": "code_hash", "required": true, "schema": { "type": "string" } }, { "name": "locked", "required": true, "schema": { "type": "string" } }, { "name": "storage_paid_at", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "storage_usage", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "StateChangeValueAccountUpdate" }, { "type": "object", "required": [ "access_key", "account_id", "public_key" ], "additionalProperties": false, "properties": [ { "name": "access_key", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueAccessKeyUpdate" }, { "type": "object", "required": [ "account_id", "key_base64", "value_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } }, { "name": "value_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataUpdate" }, { "type": "object", "required": [ "account_id", "key_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataDeletion" } ], "refName": "StateChangeValue" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeItem" } } } ], "refName": "ShardDocument" } } } ], "refName": "BlockDocument" } ``` --- ## NEAR Data API - Последний финализированный блок - HTML-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/last_block_final - Markdown-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/last_block_final.md # NEAR Data API - Последний финализированный блок Перенаправление на последний финализированный блок Перенаправление на самый свежий финализированный блок — курсор вершины цепочки после достижения консенсуса. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/neardata/v0/last_block_final - https://docs.fastnear.com/ru/apis/neardata/openapi/blocks/get_last_block_final ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/last_block/final` - Исходная спецификация: `apis/neardata/v0/last_block_final.yaml` ## Сети - Mainnet: https://mainnet.neardata.xyz/ - Testnet: https://testnet.neardata.xyz/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://mainnet.neardata.xyz/v0/last_block/final - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": {}, "query": {} } ``` ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Полный документ блока после автоматического прохождения перенаправления ### Схема ответа ```json { "type": "object", "description": "Full block document as served by neardata, including the block envelope and per-shard payloads.", "required": [ "блок", "shards" ], "additionalProperties": false, "properties": [ { "name": "блок", "required": true, "schema": { "type": "object", "description": "Block-level payload returned by neardata.", "required": [ "author", "chunks", "header" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Block producer account ID." } }, { "name": "chunks", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Block header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunks_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "gas_price", "required": false, "schema": { "type": "string" } }, { "name": "hash", "required": false, "schema": { "type": "string" } }, { "name": "height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "next_epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "prev_hash", "required": false, "schema": { "type": "string" } }, { "name": "prev_height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "timestamp", "required": false, "schema": { "type": "integer" } }, { "name": "timestamp_nanosec", "required": false, "schema": { "type": "string" } }, { "name": "total_supply", "required": false, "schema": { "type": "string" } } ], "refName": "BlockHeader" } } ], "refName": "BlockEnvelope" } }, { "name": "shards", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Per-shard payload returned by neardata for a block.", "required": [ "chunk", "receipt_execution_outcomes", "shard_id", "state_changes" ], "additionalProperties": false, "properties": [ { "name": "chunk", "required": true, "schema": { "type": "object", "description": "Chunk payload returned by neardata for a single shard in a selected block.", "required": [ "author", "header", "квитанции", "транзакции" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Chunk producer account ID." } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } }, { "name": "квитанции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" } } }, { "name": "транзакции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Transaction entry returned inside a neardata chunk.", "required": [ "outcome", "транзакция" ], "additionalProperties": false, "properties": [ { "name": "outcome", "required": true, "schema": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } }, { "name": "транзакция", "required": true, "schema": { "type": "object", "required": [ "actions", "hash", "nonce", "priority_fee", "public_key", "receiver_id", "signature", "signer_id" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "hash", "required": true, "schema": { "type": "string" } }, { "name": "nonce", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "priority_fee", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "signature", "required": true, "schema": { "type": "string" } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } } ], "refName": "SignedTransactionDocument" } } ], "refName": "ChunkTransactionWrapper" } } } ], "refName": "ChunkDocument" } }, { "name": "receipt_execution_outcomes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "state_changes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "State change entry returned by neardata for a shard.", "required": [ "cause", "change", "type" ], "additionalProperties": false, "properties": [ { "name": "cause", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "tx_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "tx_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseTransactionProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseReceiptProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseActionReceiptGasReward" } ], "refName": "StateChangeCause" } }, { "name": "change", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "account_id", "amount", "code_hash", "locked", "storage_paid_at", "storage_usage" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "amount", "required": true, "schema": { "type": "string" } }, { "name": "code_hash", "required": true, "schema": { "type": "string" } }, { "name": "locked", "required": true, "schema": { "type": "string" } }, { "name": "storage_paid_at", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "storage_usage", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "StateChangeValueAccountUpdate" }, { "type": "object", "required": [ "access_key", "account_id", "public_key" ], "additionalProperties": false, "properties": [ { "name": "access_key", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueAccessKeyUpdate" }, { "type": "object", "required": [ "account_id", "key_base64", "value_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } }, { "name": "value_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataUpdate" }, { "type": "object", "required": [ "account_id", "key_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataDeletion" } ], "refName": "StateChangeValue" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeItem" } } } ], "refName": "ShardDocument" } } } ], "refName": "BlockDocument" } ``` --- ## NEAR Data API - Последний оптимистичный блок - HTML-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/last_block_optimistic - Markdown-маршрут: https://docs.fastnear.com/ru/apis/neardata/v0/last_block_optimistic.md # NEAR Data API - Последний оптимистичный блок Перенаправление на последний оптимистичный блок Перенаправление на самый свежий оптимистичный блок — максимально свежая вершина, до финализации. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/neardata/v0/last_block_optimistic - https://docs.fastnear.com/ru/apis/neardata/openapi/blocks/get_last_block_optimistic ## Операция - Транспорт: http - Метод: GET - Путь: `/v0/last_block/optimistic` - Исходная спецификация: `apis/neardata/v0/last_block_optimistic.yaml` ## Сети - Mainnet: https://mainnet.neardata.xyz/ - Testnet: https://testnet.neardata.xyz/ ## Авторизация - API-ключ через query `apiKey`: Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. - Этот экспорт намеренно не включает локально сохранённые учётные данные ## Текущий запрос - Сеть: Mainnet - Метод: GET - URL: https://mainnet.neardata.xyz/v0/last_block/optimistic - Активный пример: Mainnet ## Справка по запросу ### Активный пример ```json { "body": null, "headers": {}, "path": {}, "query": {} } ``` ### Параметры запроса - `apiKey` (query, string): Необязательный API-ключ подписки FastNear. Неверные значения могут вернуть `401` до обработки перенаправления. ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Полный документ блока после автоматического прохождения перенаправления ### Схема ответа ```json { "type": "object", "description": "Full block document as served by neardata, including the block envelope and per-shard payloads.", "required": [ "блок", "shards" ], "additionalProperties": false, "properties": [ { "name": "блок", "required": true, "schema": { "type": "object", "description": "Block-level payload returned by neardata.", "required": [ "author", "chunks", "header" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Block producer account ID." } }, { "name": "chunks", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Block header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunks_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "gas_price", "required": false, "schema": { "type": "string" } }, { "name": "hash", "required": false, "schema": { "type": "string" } }, { "name": "height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "next_epoch_id", "required": false, "schema": { "type": "string" } }, { "name": "prev_hash", "required": false, "schema": { "type": "string" } }, { "name": "prev_height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "timestamp", "required": false, "schema": { "type": "integer" } }, { "name": "timestamp_nanosec", "required": false, "schema": { "type": "string" } }, { "name": "total_supply", "required": false, "schema": { "type": "string" } } ], "refName": "BlockHeader" } } ], "refName": "BlockEnvelope" } }, { "name": "shards", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Per-shard payload returned by neardata for a block.", "required": [ "chunk", "receipt_execution_outcomes", "shard_id", "state_changes" ], "additionalProperties": false, "properties": [ { "name": "chunk", "required": true, "schema": { "type": "object", "description": "Chunk payload returned by neardata for a single shard in a selected block.", "required": [ "author", "header", "квитанции", "транзакции" ], "additionalProperties": false, "properties": [ { "name": "author", "required": true, "schema": { "type": "string", "description": "Chunk producer account ID." } }, { "name": "header", "required": true, "schema": { "type": "object", "description": "Chunk header object as served by neardata.", "additionalProperties": true, "properties": [ { "name": "chunk_hash", "required": false, "schema": { "type": "string" } }, { "name": "gas_limit", "required": false, "schema": { "type": "integer" } }, { "name": "gas_used", "required": false, "schema": { "type": "integer" } }, { "name": "height_created", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "height_included", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "outcome_root", "required": false, "schema": { "type": "string" } }, { "name": "outgoing_receipts_root", "required": false, "schema": { "type": "string" } }, { "name": "prev_block_hash", "required": false, "schema": { "type": "string" } }, { "name": "shard_id", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_root", "required": false, "schema": { "type": "string" } } ], "refName": "ChunkHeader" } }, { "name": "квитанции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" } } }, { "name": "транзакции", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Transaction entry returned inside a neardata chunk.", "required": [ "outcome", "транзакция" ], "additionalProperties": false, "properties": [ { "name": "outcome", "required": true, "schema": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } }, { "name": "транзакция", "required": true, "schema": { "type": "object", "required": [ "actions", "hash", "nonce", "priority_fee", "public_key", "receiver_id", "signature", "signer_id" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "hash", "required": true, "schema": { "type": "string" } }, { "name": "nonce", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "priority_fee", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "signature", "required": true, "schema": { "type": "string" } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } } ], "refName": "SignedTransactionDocument" } } ], "refName": "ChunkTransactionWrapper" } } } ], "refName": "ChunkDocument" } }, { "name": "receipt_execution_outcomes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "Execution result paired with an optional receipt object.", "required": [ "execution_outcome", "квитанция" ], "additionalProperties": false, "properties": [ { "name": "execution_outcome", "required": true, "schema": { "type": "object", "required": [ "block_hash", "id", "outcome", "доказательство" ], "additionalProperties": false, "properties": [ { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "id", "required": true, "schema": { "type": "string" } }, { "name": "outcome", "required": true, "schema": { "type": "object", "required": [ "executor_id", "gas_burnt", "logs", "metadata", "receipt_ids", "статус", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "executor_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "logs", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "metadata", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "receipt_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "статус", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "SuccessReceiptId" ], "additionalProperties": false, "properties": [ { "name": "SuccessReceiptId", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessReceiptId" }, { "type": "object", "required": [ "SuccessValue" ], "additionalProperties": false, "properties": [ { "name": "SuccessValue", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeStatusSuccessValue" }, { "type": "object", "required": [ "Failure" ], "additionalProperties": false, "properties": [ { "name": "Failure", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ExecutionOutcomeStatusFailure" } ], "refName": "ExecutionOutcomeStatus" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } } ], "refName": "ExecutionOutcomeSummary" } }, { "name": "доказательство", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ExecutionProofItem" } } } ], "refName": "ExecutionOutcomeDocument" } }, { "name": "квитанция", "required": true, "schema": { "type": "object", "description": "Receipt payload when neardata includes it for this entry.", "oneOf": [ { "type": "object", "description": "Receipt object as served by neardata inside a chunk payload.", "required": [ "predecessor_id", "priority", "квитанция", "receipt_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "квитанция", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "Action" ], "additionalProperties": false, "properties": [ { "name": "Action", "required": true, "schema": { "type": "object", "required": [ "actions", "gas_price", "input_data_ids", "is_promise_yield", "output_data_receivers", "signer_id", "signer_public_key" ], "additionalProperties": false, "properties": [ { "name": "actions", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true, "refName": "ActionDocument" } } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "input_data_ids", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_promise_yield", "required": true, "schema": { "type": "boolean" } }, { "name": "output_data_receivers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "data_id", "receiver_id" ], "additionalProperties": false, "properties": [ { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "OutputDataReceiverDocument" } } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } } ], "refName": "ActionReceiptDocument" } } ], "refName": "ActionReceiptBody" }, { "type": "object", "required": [ "Data" ], "additionalProperties": false, "properties": [ { "name": "Data", "required": true, "schema": { "type": "object", "required": [ "data", "data_id", "is_promise_resume" ], "additionalProperties": false, "properties": [ { "name": "data", "required": true, "schema": { "type": "string" } }, { "name": "data_id", "required": true, "schema": { "type": "string" } }, { "name": "is_promise_resume", "required": true, "schema": { "type": "boolean" } } ], "refName": "DataReceiptDocument" } } ], "refName": "DataReceiptBody" } ], "refName": "ReceiptBody" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } } ], "refName": "ReceiptDocument" }, { "type": "object", "additionalProperties": false, "refName": "OmittedReceiptDocument" } ] } }, { "name": "tx_hash", "required": false, "schema": { "type": "string" } } ], "refName": "ExecutionWithReceipt" } } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "state_changes", "required": true, "schema": { "type": "array", "items": { "type": "object", "description": "State change entry returned by neardata for a shard.", "required": [ "cause", "change", "type" ], "additionalProperties": false, "properties": [ { "name": "cause", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "tx_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "tx_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseTransactionProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseReceiptProcessing" }, { "type": "object", "required": [ "receipt_hash", "type" ], "additionalProperties": false, "properties": [ { "name": "receipt_hash", "required": true, "schema": { "type": "string" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeCauseActionReceiptGasReward" } ], "refName": "StateChangeCause" } }, { "name": "change", "required": true, "schema": { "oneOf": [ { "type": "object", "required": [ "account_id", "amount", "code_hash", "locked", "storage_paid_at", "storage_usage" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "amount", "required": true, "schema": { "type": "string" } }, { "name": "code_hash", "required": true, "schema": { "type": "string" } }, { "name": "locked", "required": true, "schema": { "type": "string" } }, { "name": "storage_paid_at", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "storage_usage", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "StateChangeValueAccountUpdate" }, { "type": "object", "required": [ "access_key", "account_id", "public_key" ], "additionalProperties": false, "properties": [ { "name": "access_key", "required": true, "schema": { "type": "object", "additionalProperties": true } }, { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "public_key", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueAccessKeyUpdate" }, { "type": "object", "required": [ "account_id", "key_base64", "value_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } }, { "name": "value_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataUpdate" }, { "type": "object", "required": [ "account_id", "key_base64" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "key_base64", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeValueDataDeletion" } ], "refName": "StateChangeValue" } }, { "name": "type", "required": true, "schema": { "type": "string" } } ], "refName": "StateChangeItem" } } } ], "refName": "ShardDocument" } } } ], "refName": "BlockDocument" } ``` --- ## Транзакции API - История аккаунта - HTML-маршрут: https://docs.fastnear.com/ru/apis/transactions/v0/account - Markdown-маршрут: https://docs.fastnear.com/ru/apis/transactions/v0/account.md # Транзакции API - История аккаунта Получить историю транзакций аккаунта Получите историю транзакций аккаунта с необязательными фильтрами по подписанту, статусу успеха и порядку сортировки. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/transactions/v0/account - https://docs.fastnear.com/ru/apis/transactions/openapi/account/get_account ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/account` - Исходная спецификация: `apis/transactions/v0/account.yaml` ## Сети - Mainnet: https://tx.main.fastnear.com/ - Testnet: https://tx.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://tx.main.fastnear.com/v0/account - Активный пример: Mainnet ### Тело запроса ```json { "account_id": "intents.near", "desc": true, "is_real_signer": true, "is_success": true, "limit": 50 } ``` ## Справка по запросу ### Активный пример ```json { "body": { "account_id": "intents.near", "desc": true, "is_real_signer": true, "is_success": true, "limit": 50 }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `account_id` (body, обязательный, string): NEAR account to query transactions for (may be a signer, predecessor, receiver, or related party). - `desc` (body, boolean): Sort newest-first when true; oldest-first when false or omitted. - `from_tx_block_height` (body, integer): Inclusive lower bound on the transaction's block height. - `is_action_arg` (body, boolean): Restrict to transactions where this account appeared in action arguments. - `is_any_signer` (body, boolean): Restrict to transactions where this account signed either the top-level transaction or a delegated action. - `is_delegated_signer` (body, boolean): Restrict to transactions where this account signed a delegated action. - `is_event_log` (body, boolean): Restrict to transactions where this account appeared in a JSON event log. - `is_explicit_refund_to` (body, boolean): Restrict to transactions where this account was the explicit `refund_to` target of an action receipt. - `is_function_call` (body, boolean): Restrict to transactions where this account was the target of a function-call action. - `is_predecessor` (body, boolean): Restrict to transactions where this account was the predecessor of a receipt. - `is_real_receiver` (body, boolean): Restrict to transactions where this account was the real receiver — excluding relayer receivers and gas refunds. - `is_real_signer` (body, boolean): Restrict to transactions where this account was the real signer — direct or delegated, excluding relayer signers. - `is_receiver` (body, boolean): Restrict to transactions where this account received a receipt. - `is_signer` (body, boolean): Restrict to transactions where this account signed the top-level transaction. - `is_success` (body, boolean): Restrict to transactions whose execution succeeded (true) or failed/pending (false). - `limit` (body, integer): Maximum rows to return in one page (1–200). - `resume_token` (body, string): Opaque pagination token returned on a prior page; omit for the first page. - `to_tx_block_height` (body, integer): Exclusive upper bound on the transaction's block height. ### Схема запроса ```json { "type": "object", "required": [ "account_id" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string", "description": "NEAR account to query transactions for (may be a signer, predecessor, receiver, or related party)." } }, { "name": "desc", "required": false, "schema": { "type": "boolean", "description": "Sort newest-first when true; oldest-first when false or omitted." } }, { "name": "from_tx_block_height", "required": false, "schema": { "type": "integer", "description": "Inclusive lower bound on the transaction's block height.", "format": "uint64" } }, { "name": "is_action_arg", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account appeared in action arguments." } }, { "name": "is_any_signer", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account signed either the top-level transaction or a delegated action." } }, { "name": "is_delegated_signer", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account signed a delegated action." } }, { "name": "is_event_log", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account appeared in a JSON event log." } }, { "name": "is_explicit_refund_to", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account was the explicit `refund_to` target of an action receipt." } }, { "name": "is_function_call", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account was the target of a function-call action." } }, { "name": "is_predecessor", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account was the predecessor of a receipt." } }, { "name": "is_real_receiver", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account was the real receiver — excluding relayer receivers and gas refunds." } }, { "name": "is_real_signer", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account was the real signer — direct or delegated, excluding relayer signers." } }, { "name": "is_receiver", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account received a receipt." } }, { "name": "is_signer", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions where this account signed the top-level transaction." } }, { "name": "is_success", "required": false, "schema": { "type": "boolean", "description": "Restrict to transactions whose execution succeeded (true) or failed/pending (false)." } }, { "name": "limit", "required": false, "schema": { "type": "integer", "description": "Maximum rows to return in one page (1–200).", "format": "uint" } }, { "name": "resume_token", "required": false, "schema": { "type": "string", "description": "Opaque pagination token returned on a prior page; omit for the first page.", "default": null } }, { "name": "to_tx_block_height", "required": false, "schema": { "type": "integer", "description": "Exclusive upper bound on the transaction's block height.", "format": "uint64" } } ], "refName": "AccountInput" } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Набор результатов по истории аккаунта ### Схема ответа ```json { "type": "object", "required": [ "account_txs", "resume_token", "txs_count" ], "additionalProperties": false, "properties": [ { "name": "account_txs", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "account_id", "transaction_hash", "tx_block_height", "tx_block_timestamp", "tx_index", "is_signer", "is_delegated_signer", "is_real_signer", "is_any_signer", "is_predecessor", "is_explicit_refund_to", "is_receiver", "is_real_receiver", "is_function_call", "is_action_arg", "is_event_log", "is_success" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "is_action_arg", "required": true, "schema": { "type": "boolean" } }, { "name": "is_any_signer", "required": true, "schema": { "type": "boolean" } }, { "name": "is_delegated_signer", "required": true, "schema": { "type": "boolean" } }, { "name": "is_event_log", "required": true, "schema": { "type": "boolean" } }, { "name": "is_explicit_refund_to", "required": true, "schema": { "type": "boolean" } }, { "name": "is_function_call", "required": true, "schema": { "type": "boolean" } }, { "name": "is_predecessor", "required": true, "schema": { "type": "boolean" } }, { "name": "is_real_receiver", "required": true, "schema": { "type": "boolean" } }, { "name": "is_real_signer", "required": true, "schema": { "type": "boolean" } }, { "name": "is_receiver", "required": true, "schema": { "type": "boolean" } }, { "name": "is_signer", "required": true, "schema": { "type": "boolean" } }, { "name": "is_success", "required": true, "schema": { "type": "boolean" } }, { "name": "transaction_hash", "required": true, "schema": { "type": "string" } }, { "name": "tx_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_block_timestamp", "required": true, "schema": { "type": "string" } }, { "name": "tx_index", "required": true, "schema": { "type": "integer", "format": "uint32" } } ], "refName": "AccountTxRow" } } }, { "name": "resume_token", "required": true, "schema": { "type": "string" } }, { "name": "txs_count", "required": true, "schema": { "type": "integer", "format": "uint64" } } ], "refName": "AccountResponse" } ``` --- ## Транзакции API - Поиск блока - HTML-маршрут: https://docs.fastnear.com/ru/apis/transactions/v0/block - Markdown-маршрут: https://docs.fastnear.com/ru/apis/transactions/v0/block.md # Транзакции API - Поиск блока Получить блок по высоте или хешу Получите строку блока по высоте или хешу и при необходимости разверните связанные транзакции и квитанции. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/transactions/v0/block - https://docs.fastnear.com/ru/apis/transactions/openapi/blocks/get_block ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/block` - Исходная спецификация: `apis/transactions/v0/block.yaml` ## Сети - Mainnet: https://tx.main.fastnear.com/ - Testnet: https://tx.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://tx.main.fastnear.com/v0/block - Активный пример: Mainnet ### Тело запроса ```json { "block_id": 193916411, "with_receipts": true, "with_transactions": true } ``` ## Справка по запросу ### Активный пример ```json { "body": { "block_id": 193916411, "with_receipts": true, "with_transactions": true }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `block_id` (body, обязательный, integer | string): Block height (integer) or base58-encoded block hash (string) to fetch. - `with_receipts` (body, boolean): Include the block's receipts in the response when true. - `with_transactions` (body, boolean): Include the block's transactions in the response when true. ### Схема запроса ```json { "type": "object", "required": [ "block_id" ], "additionalProperties": false, "properties": [ { "name": "block_id", "required": true, "schema": { "description": "Block height (integer) or base58-encoded block hash (string) to fetch.", "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, { "name": "with_receipts", "required": false, "schema": { "type": "boolean", "description": "Include the block's receipts in the response when true." } }, { "name": "with_transactions", "required": false, "schema": { "type": "boolean", "description": "Include the block's transactions in the response when true." } } ], "refName": "BlockInput" } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Результат поиска блока ### Схема ответа ```json { "type": "object", "required": [ "блок", "block_txs", "block_receipts" ], "additionalProperties": false, "properties": [ { "name": "блок", "required": true, "schema": { "type": "object", "required": [ "block_height", "block_hash", "prev_block_hash", "block_timestamp", "epoch_id", "next_epoch_id", "chunks_included", "author_id", "protocol_version", "gas_price", "total_supply", "num_transactions", "num_receipts", "gas_burnt", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "author_id", "required": true, "schema": { "type": "string" } }, { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_ordinal", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "string" } }, { "name": "chunks_included", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "epoch_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "string" } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "next_epoch_id", "required": true, "schema": { "type": "string" } }, { "name": "num_receipts", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "num_transactions", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "prev_block_hash", "required": true, "schema": { "type": "string" } }, { "name": "prev_block_height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "protocol_version", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } }, { "name": "total_supply", "required": true, "schema": { "type": "string" } } ] } }, { "name": "block_receipts", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "receipt_id", "block_height", "block_timestamp", "receipt_index", "appear_block_height", "appear_receipt_index", "transaction_hash", "tx_block_height", "tx_block_timestamp", "tx_index", "predecessor_id", "receiver_id", "receipt_type", "priority", "shard_id", "is_success" ], "additionalProperties": false, "properties": [ { "name": "appear_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "appear_receipt_index", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "string" } }, { "name": "is_success", "required": true, "schema": { "type": "boolean" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_index", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "receipt_type", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "transaction_hash", "required": true, "schema": { "type": "string" } }, { "name": "tx_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_block_timestamp", "required": true, "schema": { "type": "string" } }, { "name": "tx_index", "required": true, "schema": { "type": "integer", "format": "uint32" } } ], "refName": "ReceiptTxRow" } } }, { "name": "block_txs", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "transaction_hash", "signer_id", "tx_block_height", "tx_index", "tx_block_hash", "tx_block_timestamp", "last_block_height", "is_completed", "shard_id", "receiver_id", "signer_public_key", "priority_fee", "nonce", "is_relayed", "real_signer_id", "real_receiver_id", "is_success", "gas_burnt", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "gas_burnt", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "is_completed", "required": true, "schema": { "type": "boolean" } }, { "name": "is_relayed", "required": true, "schema": { "type": "boolean" } }, { "name": "is_success", "required": true, "schema": { "type": "boolean" } }, { "name": "last_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "nonce", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "priority_fee", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "real_receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "real_signer_id", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_public_key", "required": true, "schema": { "type": "string" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } }, { "name": "transaction_hash", "required": true, "schema": { "type": "string" } }, { "name": "tx_block_hash", "required": true, "schema": { "type": "string" } }, { "name": "tx_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_block_timestamp", "required": true, "schema": { "type": "string" } }, { "name": "tx_index", "required": true, "schema": { "type": "integer", "format": "uint32" } } ], "refName": "BlockTxRow" } } } ], "refName": "BlockResponse" } ``` --- ## Транзакции API - Диапазон блоков - HTML-маршрут: https://docs.fastnear.com/ru/apis/transactions/v0/blocks - Markdown-маршрут: https://docs.fastnear.com/ru/apis/transactions/v0/blocks.md # Транзакции API - Диапазон блоков Получить список блоков Получите ограниченный список индексированных блоков, отсортированный по возрастанию или убыванию. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/transactions/v0/blocks - https://docs.fastnear.com/ru/apis/transactions/openapi/blocks/get_blocks ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/blocks` - Исходная спецификация: `apis/transactions/v0/blocks.yaml` ## Сети - Mainnet: https://tx.main.fastnear.com/ - Testnet: https://tx.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://tx.main.fastnear.com/v0/blocks - Активный пример: Mainnet ### Тело запроса ```json { "desc": false, "from_block_height": 193916402, "limit": 10, "to_block_height": 193916411 } ``` ## Справка по запросу ### Активный пример ```json { "body": { "desc": false, "from_block_height": 193916402, "limit": 10, "to_block_height": 193916411 }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `desc` (body, boolean): Sort newest-first when true; oldest-first when false or omitted. - `from_block_height` (body, integer): Inclusive lower bound on block height. - `limit` (body, integer): Maximum blocks to return in one page (1–100). - `to_block_height` (body, integer): Exclusive upper bound on block height. ### Схема запроса ```json { "type": "object", "additionalProperties": false, "properties": [ { "name": "desc", "required": false, "schema": { "type": "boolean", "description": "Sort newest-first when true; oldest-first when false or omitted." } }, { "name": "from_block_height", "required": false, "schema": { "type": "integer", "description": "Inclusive lower bound on block height.", "format": "uint64" } }, { "name": "limit", "required": false, "schema": { "type": "integer", "description": "Maximum blocks to return in one page (1–100).", "format": "uint" } }, { "name": "to_block_height", "required": false, "schema": { "type": "integer", "description": "Exclusive upper bound on block height.", "format": "uint64" } } ], "refName": "BlocksInput" } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Строки блоков ### Схема ответа ```json { "type": "object", "required": [ "блоки" ], "additionalProperties": false, "properties": [ { "name": "блоки", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "block_height", "block_hash", "prev_block_hash", "block_timestamp", "epoch_id", "next_epoch_id", "chunks_included", "author_id", "protocol_version", "gas_price", "total_supply", "num_transactions", "num_receipts", "gas_burnt", "tokens_burnt" ], "additionalProperties": false, "properties": [ { "name": "author_id", "required": true, "schema": { "type": "string" } }, { "name": "block_hash", "required": true, "schema": { "type": "string" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_ordinal", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "string" } }, { "name": "chunks_included", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "epoch_id", "required": true, "schema": { "type": "string" } }, { "name": "gas_burnt", "required": true, "schema": { "type": "string" } }, { "name": "gas_price", "required": true, "schema": { "type": "string" } }, { "name": "next_epoch_id", "required": true, "schema": { "type": "string" } }, { "name": "num_receipts", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "num_transactions", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "prev_block_hash", "required": true, "schema": { "type": "string" } }, { "name": "prev_block_height", "required": false, "schema": { "type": "integer", "format": "uint64" } }, { "name": "protocol_version", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "tokens_burnt", "required": true, "schema": { "type": "string" } }, { "name": "total_supply", "required": true, "schema": { "type": "string" } } ], "refName": "BlockRow" } } } ], "refName": "BlocksResponse" } ``` --- ## Транзакции API - Поиск квитанции - HTML-маршрут: https://docs.fastnear.com/ru/apis/transactions/v0/receipt - Markdown-маршрут: https://docs.fastnear.com/ru/apis/transactions/v0/receipt.md # Транзакции API - Поиск квитанции Получить квитанцию по ID Получите квитанцию по ID вместе с транзакцией, её создавшей. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/transactions/v0/receipt - https://docs.fastnear.com/ru/apis/transactions/openapi/receipts/get_receipt ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/receipt` - Исходная спецификация: `apis/transactions/v0/receipt.yaml` ## Сети - Mainnet: https://tx.main.fastnear.com/ - Testnet: https://tx.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://tx.main.fastnear.com/v0/receipt - Активный пример: Mainnet ### Тело запроса ```json { "receipt_id": "gzqDSvd3ZMcVUWzBMP7j9KMWz89iZMkkEvW9g8QZjUP" } ``` ## Справка по запросу ### Активный пример ```json { "body": { "receipt_id": "gzqDSvd3ZMcVUWzBMP7j9KMWz89iZMkkEvW9g8QZjUP" }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `receipt_id` (body, обязательный, string): Base58-encoded receipt ID to look up. ### Схема запроса ```json { "type": "object", "required": [ "receipt_id" ], "additionalProperties": false, "properties": [ { "name": "receipt_id", "required": true, "schema": { "type": "string", "description": "Base58-encoded receipt ID to look up." } } ], "refName": "ReceiptInput" } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Результат поиска квитанции ### Схема ответа ```json { "type": "object", "required": [ "квитанция", "транзакция" ], "additionalProperties": false, "properties": [ { "name": "квитанция", "required": true, "schema": { "type": "object", "required": [ "receipt_id", "block_height", "block_timestamp", "receipt_index", "appear_block_height", "appear_receipt_index", "transaction_hash", "tx_block_height", "tx_block_timestamp", "tx_index", "predecessor_id", "receiver_id", "receipt_type", "priority", "shard_id", "is_success" ], "additionalProperties": false, "properties": [ { "name": "appear_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "appear_receipt_index", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "string" } }, { "name": "is_success", "required": true, "schema": { "type": "boolean" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "priority", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_index", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "receipt_type", "required": true, "schema": { "type": "string" } }, { "name": "receiver_id", "required": true, "schema": { "type": "string" } }, { "name": "shard_id", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "transaction_hash", "required": true, "schema": { "type": "string" } }, { "name": "tx_block_height", "required": true, "schema": { "type": "integer", "format": "uint64" } }, { "name": "tx_block_timestamp", "required": true, "schema": { "type": "string" } }, { "name": "tx_index", "required": true, "schema": { "type": "integer", "format": "uint32" } } ] } }, { "name": "транзакция", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "refName": "ReceiptResponse" } ``` --- ## Транзакции API - Транзакции по хешу - HTML-маршрут: https://docs.fastnear.com/ru/apis/transactions/v0/transactions - Markdown-маршрут: https://docs.fastnear.com/ru/apis/transactions/v0/transactions.md # Транзакции API - Транзакции по хешу Получить транзакции по хешу Получите до 20 индексированных транзакций по хешу в одном запросе. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/transactions/v0/transactions - https://docs.fastnear.com/ru/apis/transactions/openapi/transactions/get_transactions ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/transactions` - Исходная спецификация: `apis/transactions/v0/transactions.yaml` ## Сети - Mainnet: https://tx.main.fastnear.com/ - Testnet: https://tx.test.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://tx.main.fastnear.com/v0/transactions - Активный пример: Mainnet ### Тело запроса ```json { "tx_hashes": [ "FDrh13CdfGPXsmwUpZLfkZCoXWfpQmaFGj4zYWc1qfh", "Eq1a46bynaBAjoSxd2XGWdCxkZdrMvN9jMZVdZfPSjM5" ] } ``` ## Справка по запросу ### Активный пример ```json { "body": { "tx_hashes": [ "FDrh13CdfGPXsmwUpZLfkZCoXWfpQmaFGj4zYWc1qfh", "Eq1a46bynaBAjoSxd2XGWdCxkZdrMvN9jMZVdZfPSjM5" ] }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `tx_hashes` (body, обязательный, array): Up to 20 base58-encoded transaction hashes to fetch in one request. ### Схема запроса ```json { "type": "object", "required": [ "tx_hashes" ], "additionalProperties": false, "properties": [ { "name": "tx_hashes", "required": true, "schema": { "type": "array", "description": "Up to 20 base58-encoded transaction hashes to fetch in one request.", "items": { "type": "string" } } } ], "refName": "TxInput" } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Найденные транзакции ### Схема ответа ```json { "type": "object", "required": [ "транзакции" ], "additionalProperties": false, "properties": [ { "name": "транзакции", "required": true, "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } } ], "refName": "TransactionsResponse" } ``` --- ## API переводов: запрос переводов - HTML-маршрут: https://docs.fastnear.com/ru/apis/transfers/v0/transfers - Markdown-маршрут: https://docs.fastnear.com/ru/apis/transfers/v0/transfers.md # API переводов: запрос переводов Запросить переводы аккаунта Получите строки переводов для одного аккаунта с необязательными фильтрами по направлению, активу, сумме и времени. ## Ссылки на источник - https://docs.fastnear.com/ru/apis/transfers/v0/transfers - https://docs.fastnear.com/ru/apis/transfers/openapi/transfers/get_transfers_by_account ## Операция - Транспорт: http - Метод: POST - Путь: `/v0/transfers` - Исходная спецификация: `apis/transfers/v0/transfers.yaml` ## Сети - Mainnet: https://transfers.main.fastnear.com/ ## Авторизация - Авторизация не требуется ## Текущий запрос - Сеть: Mainnet - Метод: POST - URL: https://transfers.main.fastnear.com/v0/transfers - Активный пример: Недавние входящие переводы NEAR ### Тело запроса ```json { "account_id": "root.near", "desc": true, "limit": 10 } ``` ## Справка по запросу ### Активный пример ```json { "body": { "account_id": "intents.near", "asset_id": "native:near", "desc": true, "direction": "receiver", "limit": 10, "min_amount": "1000000000000000000000000" }, "headers": {}, "path": {}, "query": {} } ``` ### Входные данные - `account_id` (body, обязательный, string): Идентификатор аккаунта NEAR, для которого нужно получить переводы. - `asset_id` (body, string): Необязательный идентификатор актива, например `near` или ID FT-контракта. - `desc` (body, boolean): Если `true`, сначала возвращаются более новые переводы. - `direction` (body, обязательный, string): Какие переводы вернуть: исходящие (`sender`) или входящие (`receiver`). - `from_timestamp_ms` (body, integer): Нижняя граница времени в миллисекундах UNIX. - `ignore_system` (body, boolean): Если `true`, исключает системные переводы. - `limit` (body, integer): Максимальное количество строк в ответе. - `min_amount` (body, string): Минимальная сумма в базовых единицах актива. - `min_human_amount` (body, number): Минимальная сумма в человекочитаемом виде. - `min_usd_amount` (body, number): Минимальная сумма в долларах США. - `resume_token` (body, string): Непрозрачный токен продолжения из предыдущего ответа. - `to_timestamp_ms` (body, integer): Верхняя граница времени в миллисекундах UNIX. ### Схема запроса ```json { "type": "object", "required": [ "account_id", "direction" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string", "description": "NEAR account to query transfers for (the signer or receiver, depending on `direction`)." } }, { "name": "asset_id", "required": false, "schema": { "type": "string", "description": "Asset identifier such as `native:near` for NEAR or `` for fungible tokens." } }, { "name": "desc", "required": false, "schema": { "type": "boolean", "description": "When true, sort newest-first; when false or omitted, sort oldest-first." } }, { "name": "direction", "required": true, "schema": { "type": "string", "description": "Restrict to transfers where the account acts as `sender` or `receiver`; omit for both sides.", "enum": [ "sender", "receiver" ] } }, { "name": "from_timestamp_ms", "required": false, "schema": { "type": "integer", "description": "Inclusive lower bound on block timestamp in milliseconds since the Unix epoch.", "format": "uint64" } }, { "name": "ignore_system", "required": false, "schema": { "type": "boolean", "description": "When true, hide system transfers (validator rewards, implicit account creation, refunds)." } }, { "name": "limit", "required": false, "schema": { "type": "integer", "description": "Maximum number of transfer rows to return in one page (1–100).", "format": "uint" } }, { "name": "min_amount", "required": false, "schema": { "type": "string", "description": "Minimum absolute transfer amount in the asset's base units (e.g. yoctoNEAR), stringified u128.", "default": null } }, { "name": "min_human_amount", "required": false, "schema": { "type": "number", "description": "Minimum transfer amount in human-readable units (decimals already applied).", "format": "double" } }, { "name": "min_usd_amount", "required": false, "schema": { "type": "number", "description": "Minimum transfer amount in USD-equivalent at time of transfer.", "format": "double" } }, { "name": "resume_token", "required": false, "schema": { "type": "string", "description": "Opaque pagination token returned as `resume_token` on a prior page; omit for the first page.", "default": null } }, { "name": "to_timestamp_ms", "required": false, "schema": { "type": "integer", "description": "Exclusive upper bound on block timestamp in milliseconds since the Unix epoch.", "format": "uint64" } } ], "refName": "TransfersInput" } ``` ## Справка по ответу - Статус: 200 - Тип данных: application/json - Краткое описание: Строки переводов для указанного аккаунта. ### Схема ответа ```json { "type": "object", "required": [ "transfers", "resume_token" ], "additionalProperties": false, "properties": [ { "name": "resume_token", "required": true, "schema": { "type": "string" } }, { "name": "transfers", "required": true, "schema": { "type": "array", "items": { "type": "object", "required": [ "block_height", "block_timestamp", "receipt_id", "transfer_index", "signer_id", "predecessor_id", "receipt_account_id", "account_id", "asset_id", "asset_type", "amount", "transfer_type" ], "additionalProperties": false, "properties": [ { "name": "account_id", "required": true, "schema": { "type": "string" } }, { "name": "action_index", "required": false, "schema": { "type": "integer", "format": "uint16" } }, { "name": "amount", "required": true, "schema": { "type": "string" } }, { "name": "asset_id", "required": true, "schema": { "type": "string" } }, { "name": "asset_type", "required": true, "schema": { "type": "string" } }, { "name": "block_height", "required": true, "schema": { "type": "string" } }, { "name": "block_timestamp", "required": true, "schema": { "type": "string" } }, { "name": "end_of_block_balance", "required": false, "schema": { "type": "string" } }, { "name": "human_amount", "required": false, "schema": { "type": "number", "format": "double" } }, { "name": "log_index", "required": false, "schema": { "type": "integer", "format": "uint16" } }, { "name": "method_name", "required": false, "schema": { "type": "string" } }, { "name": "other_account_id", "required": false, "schema": { "type": "string" } }, { "name": "predecessor_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_account_id", "required": true, "schema": { "type": "string" } }, { "name": "receipt_id", "required": true, "schema": { "type": "string" } }, { "name": "signer_id", "required": true, "schema": { "type": "string" } }, { "name": "start_of_block_balance", "required": false, "schema": { "type": "string" } }, { "name": "transaction_id", "required": false, "schema": { "type": "string" } }, { "name": "transfer_index", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "transfer_type", "required": true, "schema": { "type": "string" } }, { "name": "usd_amount", "required": false, "schema": { "type": "number", "format": "double" } } ], "refName": "TransferRow" } } } ], "refName": "TransfersResponse" } ``` --- ## О FastNear - FastNear обрабатывает более 10 млрд запросов в месяц. - FastNear управляет более чем 100 нодами по всему миру. - Один API-ключ FastNear работает и для RPC, и для индексированных API. - Получите API-ключ на [dashboard.fastnear.com](https://dashboard.fastnear.com).