diff --git a/docs/snapshots/mainnet.mdx b/docs/snapshots/mainnet.mdx
index 210230b..dc15144 100644
--- a/docs/snapshots/mainnet.mdx
+++ b/docs/snapshots/mainnet.mdx
@@ -1,134 +1,46 @@
---
sidebar_label: Mainnet
slug: /snapshots/mainnet
-description: Download mainnet RPC and archival snapshots for FastNear-backed NEAR infrastructure bootstrapping.
+description: Current FastNear mainnet snapshot posture for RPC bootstrap and archival snapshot requests.
---
# Mainnet
-## Optimized Mainnet Snapshot
+FastNear no longer documents a public self-serve mainnet snapshot download flow here.
-This is likely the preferred approach for syncing, as opposed to downloading an archival snapshot, which is significantly larger and more special-purpose.
-
-Nodes with sufficient resources can take advantage of setting the `$RPC_TYPE` flag to `fast-rpc`. (Default is `rpc`)
-
-Before running the snapshot download script, you can set the following environment variables:
-
-- `CHAIN_ID` to either `mainnet` or `testnet`. (default: `mainnet`)
-- `RPC_TYPE` to either `rpc` (default) or `fast-rpc`
-- `THREADS` to the number of threads you want to use for downloading. Use `128` for 10Gbps, and `16` for 1Gbps (default: `128`).
-- `TPSLIMIT` to the maximum number of HTTP new actions per second. (default: `4096`)
-- `BWLIMIT` to the maximum bandwidth to use for download in case you want to limit it. (default: `10G`)
-- `DATA_PATH` to the path where you want to download the snapshot (default: `~/.near/data`)
-- `BLOCK` to the block height of the snapshot you want to download. If not set, it will download the latest snapshot.
-
-**Run this command to download the RPC Mainnet snapshot:**
-
-:::info
-We will set the following environment variables:
-- `DATA_PATH=~/.near/data` - the standard nearcore path
-- `CHAIN_ID=mainnet` - to explicitly specify the mainnet data
-- `RPC_TYPE=fast-rpc` - select optimized approach
-:::
-
-`RPC Mainnet Snapshot » ~/.near/data`:
-
-```bash
-curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/fastnear/static/refs/heads/main/down_rclone.sh | DATA_PATH=~/.near/data CHAIN_ID=mainnet RPC_TYPE=fast-rpc bash
-```
-
-## RPC Mainnet Snapshot
-
-This is the standard method to obtain a snapshot without the high performance from the previous section covering optimized snapshots.
-
-Before running the snapshot download script, you can set the following environment variables:
-
-- `CHAIN_ID` to either `mainnet` or `testnet`. (default: `mainnet`)
-- `RPC_TYPE` to either `rpc` (default) or `fast-rpc`
-- `THREADS` to the number of threads you want to use for downloading. Use `128` for 10Gbps, and `16` for 1Gbps (default: `128`).
-- `TPSLIMIT` to the maximum number of HTTP new actions per second. (default: `4096`)
-- `BWLIMIT` to the maximum bandwidth to use for download in case you want to limit it. (default: `10G`)
-- `DATA_PATH` to the path where you want to download the snapshot (default: `~/.near/data`)
-- `BLOCK` to the block height of the snapshot you want to download. If not set, it will download the latest snapshot.
-
-**Run this command to download the RPC Mainnet snapshot:**
-
-:::info
-We will set the following environment variables:
-- `DATA_PATH=~/.near/data` - the standard nearcore path
-- `CHAIN_ID=mainnet` - to explicitly specify the mainnet data
+:::warning[Free snapshots are deprecated]
+The free nearcore data snapshots were deprecated on June 1, 2025.
:::
-`RPC Mainnet Snapshot » ~/.near/data`:
-
-```bash
-curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/fastnear/static/refs/heads/main/down_rclone.sh | DATA_PATH=~/.near/data CHAIN_ID=mainnet bash
-```
-
-## Archival Mainnet snapshot
-
-:::warning
-**Time and storage intensive.**
-
-Be prepared for a large download and the inherent time constraints involved.
-
-The snapshot size is ~60Tb and contains more than 1M files.
-:::
+## For regular RPC nodes and validators
-Before running the download script, you can set the following environment variables:
+Use [NEAR Nodes](https://near-nodes.io) for the current bootstrap guidance based on Epoch Sync plus decentralized state sync. That is the public recommendation for normal mainnet node bring-up and recovery.
-- `CHAIN_ID` to either `mainnet` or `testnet`. (default: `mainnet`)
-- `THREADS` to the number of threads you want to use for downloading. Use `128` for 10Gbps, and `16` for 1Gbps (default: `128`).
-- `TPSLIMIT` to the maximum number of HTTP new actions per second. (default: `4096`)
-- `DATA_TYPE` to either `hot-data` or `cold-data` (default: `cold-data`)
-- `BWLIMIT` to the maximum bandwidth to use for download in case you want to limit it. (default: `10G`)
-- `DATA_PATH` to the path where you want to download the snapshot (default: `/mnt/nvme/data/$DATA_TYPE`)
-- `BLOCK` to the block height of the snapshot you want to download. If not set, it will download the latest snapshot.
+Before the first `neard run`, refresh `network.boot_nodes` with the current command from [NEAR Nodes: Epoch Sync](https://near-nodes.io/intro/node-epoch-sync). A freshly downloaded `config.json` can still leave `boot_nodes` empty, which can leave the node stuck at `Waiting for peers 0 peers`.
-By default, the script assumes the paths for the data:
-- Hot data (has to be on NVME): `/mnt/nvme/data/hot-data`
-- Cold data (can be on HDDs): `/mnt/nvme/data/cold-data`
+## For archival mainnet snapshots
+Archival snapshot access is request-based. Start from [fastnear.com/snapshots](https://fastnear.com/snapshots) or email [snapshots@fastnear.com](mailto:snapshots@fastnear.com) to get the current availability, block height, and storage expectations.
-**Run the following commands to download the Archival Mainnet snapshot:**
+## About the legacy scripts
-1. Download the latest snapshot block height:
+The [fastnear/static](https://github.com/fastnear/static) repository still contains the historical `down_rclone.sh` and `down_rclone_archival.sh` scripts. These docs no longer publish copy-paste commands for them because the old public `latest.txt` discovery URLs now redirect to the snapshots info page and are not a supported public workflow.
-`Latest archival mainnet snapshot block`:
+If FastNear support gives you a current block height and a supported download path, use the exact host, block, and storage layout they provide instead of the retired public examples.
-```bash
-LATEST=$(curl -s "https://snapshot.neardata.xyz/mainnet/archival/latest.txt")
-echo "Latest snapshot block: $LATEST"
-```
+## If you are preparing for an archival request
-2. Download the HOT data from the snapshot. It has to be placed on NVME.
+- Be ready to separate hot and cold data if the snapshot package requires it.
+- Confirm your storage layout with nearcore before you start the transfer.
+- Install `rclone` only if the support flow you receive actually depends on it.
-:::info
-We will set the following environment variables:
-- `DATA_TYPE=hot-data` - downloads the Hot data
-- `DATA_PATH=~/.near/data` - the standard nearcore path
-- `CHAIN_ID=mainnet` - to explicitly specify the mainnet data
-- `BLOCK=$LATEST` - specify the snapshot block
-:::
-
-`Archival Mainnet Snapshot (hot-data) » ~/.near/data`:
-
-```bash
-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=~/.near/data CHAIN_ID=mainnet BLOCK=$LATEST bash
-```
-
-3. Download the COLD data from the snapshot. It can be placed on HDDs.
-
-:::info
-We will set the following environment variables:
-- `DATA_TYPE=cold-data` - downloads the Hot data
-- `DATA_PATH=/mnt/hdds/cold-data` - the path where to place cold data. **Note**: the nearcore config should point cold data store to the same path.
-- `CHAIN_ID=mainnet` - to explicitly specify the mainnet data
-- `BLOCK=$LATEST` - specify the snapshot block
-:::
+## If FastNear provides a snapshot package
-`Archival Mainnet Snapshot (cold-data) » /mnt/hdds/cold-data`:
+1. Stop `neard` before you replace any snapshot data or edit archival storage settings.
+2. Confirm whether the package is meant for `~/.near/data` or for split `hot-data` and `cold-data` paths.
+3. Verify that your `config.json` matches the intended archival mode before restart.
+ For archival nodes, NEAR Nodes documents `archive: true` and `tracked_shards: [0]` as critical settings.
+4. If the package uses split storage, make sure your configured store paths match the delivered hot/cold layout before you start the node again.
+5. Restart the node and verify that it starts cleanly and resumes syncing instead of silently serving stale local state.
-```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=/mnt/hdds/cold-data CHAIN_ID=mainnet BLOCK=$LATEST bash
-```
+For nearcore storage expectations and operator prerequisites, see [nearcore](https://github.com/near/nearcore?tab=readme-ov-file#about-near).
diff --git a/docs/snapshots/testnet.mdx b/docs/snapshots/testnet.mdx
index 434c3d6..6a400e2 100644
--- a/docs/snapshots/testnet.mdx
+++ b/docs/snapshots/testnet.mdx
@@ -1,82 +1,46 @@
---
sidebar_label: Testnet
slug: /snapshots/testnet
-description: Download testnet RPC and archival snapshots for FastNear-backed NEAR infrastructure bootstrapping.
+description: Current FastNear testnet snapshot posture for RPC bootstrap and archival snapshot requests.
---
# Testnet
-## RPC Testnet Snapshot
+FastNear no longer documents a public self-serve testnet snapshot download flow here.
-This is likely the preferred approach for syncing, as opposed to downloading an archival snapshot, which is significantly larger and more special-purpose.
-
-Before running the snapshot download script, you can set the following environment variables:
-
-- `CHAIN_ID` to either `mainnet` or `testnet`. (default: `mainnet`)
-- `THREADS` to the number of threads you want to use for downloading. Use `128` for 10Gbps, and `16` for 1Gbps (default: `128`).
-- `TPSLIMIT` to the maximum number of HTTP new actions per second. (default: `4096`)
-- `BWLIMIT` to the maximum bandwidth to use for download in case you want to limit it. (default: `10G`)
-- `DATA_PATH` to the path where you want to download the snapshot (default: `~/.near/data`)
-- `BLOCK` to the block height of the snapshot you want to download. If not set, it will download the latest snapshot.
-
-**Run this command to download the RPC Testnet snapshot:**
-
-:::info
-We will set the following environment variables:
-- `DATA_PATH=~/.near/data` - the standard nearcore path
-- `CHAIN_ID=testnet` - to explicitly specify the testnet data
+:::warning[Free snapshots are deprecated]
+The free nearcore data snapshots were deprecated on June 1, 2025.
:::
-`RPC Testnet Snapshot » ~/.near/data`:
+## For regular RPC nodes and validators
-```bash
-curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/fastnear/static/refs/heads/main/down_rclone.sh | DATA_PATH=~/.near/data CHAIN_ID=testnet bash
-```
+Use [NEAR Nodes](https://near-nodes.io) for the current bootstrap guidance based on Epoch Sync plus decentralized state sync. That is the public recommendation for normal testnet node bring-up and recovery.
-## Archival Testnet snapshot
+Before the first `neard run`, refresh `network.boot_nodes` with the current command from [NEAR Nodes: Epoch Sync](https://near-nodes.io/intro/node-epoch-sync). A freshly downloaded `config.json` can still leave `boot_nodes` empty, which can leave the node stuck at `Waiting for peers 0 peers`.
-:::warning
-**Time and storage intensive.**
+## For archival testnet snapshots
-Be prepared for a large download and the inherent time constraints involved.
-:::
+Archival snapshot access is request-based. Start from [fastnear.com/snapshots](https://fastnear.com/snapshots) or email [snapshots@fastnear.com](mailto:snapshots@fastnear.com) to get the current availability, block height, and storage expectations.
-Before running the download script, you can set the following environment variables:
+## About the legacy scripts
-- `CHAIN_ID` to either `mainnet` or `testnet`. (default: `mainnet`)
-- `THREADS` to the number of threads you want to use for downloading. Use `128` for 10Gbps, and `16` for 1Gbps (default: `128`).
-- `TPSLIMIT` to the maximum number of HTTP new actions per second. (default: `4096`)
-- `DATA_TYPE` to either `hot-data` or `cold-data` (default: `cold-data`)
-- `BWLIMIT` to the maximum bandwidth to use for download in case you want to limit it. (default: `10G`)
-- `DATA_PATH` to the path where you want to download the snapshot (default: `/mnt/nvme/data/$DATA_TYPE`)
-- `BLOCK` to the block height of the snapshot you want to download. If not set, it will download the latest snapshot.
+The [fastnear/static](https://github.com/fastnear/static) repository still contains the historical `down_rclone.sh` and `down_rclone_archival.sh` scripts. These docs no longer publish copy-paste commands for them because the old public `latest.txt` discovery URLs now redirect to the snapshots info page and are not a supported public workflow.
-By default the script assumes the paths for the data:
-- Hot data (has to be on NVME): `/mnt/nvme/data/hot-data`
+If FastNear support gives you a current block height and a supported download path, use the exact host, block, and storage layout they provide instead of the retired public examples.
-**Run the following commands to download the Archival Testnet snapshot:**
+## If you are preparing for an archival request
-1. Download the latest snapshot block height:
+- Be ready to place hot data on fast local storage if the snapshot package requires it.
+- Confirm your storage layout with nearcore before you start the transfer.
+- Install `rclone` only if the support flow you receive actually depends on it.
-`Latest archival testnet snapshot block`:
-
-```bash
-LATEST=$(curl -s "https://snapshot.neardata.xyz/testnet/archival/latest.txt")
-echo "Latest snapshot block: $LATEST"
-```
-
-2. Download the HOT data from the snapshot. It has to be placed on NVME.
-
-:::info
-We will set the following environment variables:
-- `DATA_TYPE=hot-data` - downloads the Hot data
-- `DATA_PATH=~/.near/data` - the standard nearcore path
-- `CHAIN_ID=testnet` - set to testnet network
-- `BLOCK=$LATEST` - specify the snapshot block
-:::
+## If FastNear provides a snapshot package
-`Archival Testnet Snapshot (hot-data) » ~/.near/data`:
+1. Stop `neard` before you replace any snapshot data or edit archival storage settings.
+2. Confirm whether the package is meant for `~/.near/data` or for split `hot-data` and `cold-data` paths.
+3. Verify that your `config.json` matches the intended archival mode before restart.
+ For archival nodes, NEAR Nodes documents `archive: true` and `tracked_shards: [0]` as critical settings.
+4. If the package uses split storage, make sure your configured store paths match the delivered hot/cold layout before you start the node again.
+5. Restart the node and verify that it starts cleanly and resumes syncing instead of silently serving stale local state.
-```bash
-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=~/.near/data CHAIN_ID=testnet BLOCK=$LATEST bash
-```
+For nearcore storage expectations and operator prerequisites, see [nearcore](https://github.com/near/nearcore?tab=readme-ov-file#about-near).
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/rpc/transaction/broadcast-tx-commit.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/rpc/transaction/broadcast-tx-commit.mdx
index 252eae1..2f939c4 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/rpc/transaction/broadcast-tx-commit.mdx
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/rpc/transaction/broadcast-tx-commit.mdx
@@ -12,5 +12,6 @@ import FastnearDirectOperation from '@site/src/components/FastnearDirectOperatio
`broadcast_tx_commit` — тип запроса.
+Для каждого запроса нужна свежеподписанная транзакция в формате base64. Этот устаревший синхронный способ по-прежнему задокументирован, но для новых интеграций предпочтителен `send_tx`, а показанный пример полезной нагрузки носит лишь иллюстративный характер.
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/rpc/transaction/send-tx.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/rpc/transaction/send-tx.mdx
index 4cc7bf8..55b7073 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/rpc/transaction/send-tx.mdx
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/rpc/transaction/send-tx.mdx
@@ -12,5 +12,6 @@ import FastnearDirectOperation from '@site/src/components/FastnearDirectOperatio
`send_tx` — тип запроса.
+Для каждого запроса нужна свежеподписанная транзакция в формате base64. Пример полезной нагрузки в интерактивной документации показан только для ориентира и не сработает, если вставить его без изменений.
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx
index c73d680..39d70ed 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx
@@ -2,7 +2,7 @@
sidebar_position: 2
slug: /snapshots
title: "Снапшоты для валидаторов"
-description: "Пути загрузки снапшотов FastNear для подъёма и восстановления узлов NEAR."
+description: "Текущий статус снапшотов FastNear и рекомендации для подъёма узлов NEAR и запросов архивных снапшотов."
sidebar_label: "Обзор снапшотов"
displayed_sidebar: snapshotsSidebars
keywords:
@@ -21,54 +21,51 @@ import SimpleButton from '@site/src/components/SimpleButton';
Этот раздел — для операторов узлов, которые поднимают или восстанавливают инфраструктуру NEAR. Это не поверхность для прикладных данных. Если задача — читать балансы, историю, блоки или состояние контракта, используйте документацию API и RPC, а не сценарии со снапшотами.
:::warning[Бесплатные снапшоты устарели]
-Бесплатные снапшоты данных nearcore больше не выпускаются.
+Бесплатные снапшоты данных nearcore были прекращены 1 июня 2025 года.
Infrastructure Committee и Near One рекомендуют Epoch Sync вместе с децентрализованной синхронизацией состояния. Актуальные рекомендации и режим подъёма смотрите на
NEAR Nodes.
:::
-## Используйте этот раздел, когда
-
-- нужно поднять узел mainnet или testnet из данных снапшота
-- идёт восстановление RPC- или архивного узла
-- уже известно, что нужен путь загрузки снапшота FastNear
-
-## Не используйте этот раздел, когда
-
-- идёт запрос данных цепочки для приложения
-- нужны свежие блоки, балансы, история или состояние контракта
-- нужны общие рекомендации по продуктовому API, а не настройка оператором
-
-В этих случаях используйте [Справочник RPC](/rpc), [FastNear API](/api), [Транзакции API](/tx) или [NEAR Data API](/neardata).
+## Текущий статус
-## Перед загрузкой
+- Сейчас FastNear не публикует через этот сайт рабочий публичный путь для самостоятельной загрузки снапшотов.
+- Для обычного запуска RPC-узлов и валидаторов используйте
NEAR Nodes и актуальную схему Epoch Sync вместе с децентрализованной синхронизацией состояния.
+- Для доступа к архивным снапшотам переходите на
fastnear/static по-прежнему существуют, но прежний публичный поток с `latest.txt` больше не является поддерживаемым публичным сценарием.
-- Сначала выберите сеть: mainnet или testnet.
-- Решите, нужны обычные данные RPC или архивные.
-- Убедитесь, что понимаете, где должны лежать горячие и холодные данные, прежде чем стартовать архивную загрузку.
+## Полезные материалы для операторов
-- Установите `rclone` — скрипты загрузки от него зависят.
+- [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) — если вы планируете современную схему с раздельным горячим и холодным хранилищем.
-:::info[Установка `rclone`]
-Установите `rclone` командой:
+## Что стоит подготовить до запроса архивного снапшота
-```bash
-sudo -v ; curl https://rclone.org/install.sh | sudo bash
-```
-:::
+- сеть: `mainnet` или `testnet`
+- роль узла: валидатор, RPC-узел или архивный узел
+- ожидаете ли вы восстановление в единый каталог `~/.near/data` или в раздельную схему с горячим и холодным хранилищем
+- целевой путь `NEAR_HOME` и схему хранилища, которую вы собираетесь использовать
+- срочность, ограничения по пропускной способности или сроки восстановления, которые влияют на план передачи данных
-## Что покрывает каждый путь
+## Используйте этот раздел, когда
-- **Mainnet** включает оптимизированный `fast-rpc`, обычный RPC и архивные пути загрузки для горячих и холодных данных.
-- **Testnet** включает RPC и архивные пути снапшотов для операторов testnet.
+- нужно подтвердить текущую позицию FastNear по снапшотам для mainnet или testnet
+- нужен правильный путь запроса архивного снапшота
+- нужно понять, стоит ли использовать снапшоты или стандартный сценарий запуска узла NEAR
-Требования к узлам смотрите в
nearcore, а исходники скриптов загрузки, которые используются в этих руководствах, — в
fastnear/static.
+## Не используйте этот раздел, когда
-## Нужен сценарий?
+- идёт запрос данных цепочки для приложения
+- нужны свежие блоки, балансы, история или состояние контракта
+- нужны общие рекомендации по продуктовому API, а не настройка оператором
-Используйте [примеры снапшотов](/snapshots/examples) для практических примеров: выбора между оптимизированным `fast-rpc`, стандартным восстановлением RPC и архивными путями с разделением горячих и холодных данных.
+В этих случаях используйте [Справочник RPC](/rpc), [FastNear API](/api), [Транзакции API](/tx) или [NEAR Data API](/neardata).
## Выберите сеть
+На страницах ниже собран текущий статус и путь эскалации по каждой сети. Они больше не предполагают наличие публичного URL для самостоятельной загрузки.
+
Снапшоты mainnet
Снапшоты testnet
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/mainnet.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/mainnet.mdx
index bdac1c4..b1a7093 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/mainnet.mdx
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/mainnet.mdx
@@ -1,134 +1,46 @@
---
sidebar_label: "Mainnet"
slug: /snapshots/mainnet
-description: "Скачайте RPC- и архивные снапшоты mainnet для быстрого развёртывания NEAR-инфраструктуры на базе FastNear."
+description: "Текущая позиция FastNear по снапшотам mainnet для RPC-подъёма и запросов архивных снапшотов."
---
# Mainnet
-## Оптимизированный снапшот mainnet
+FastNear больше не публикует здесь публичный сценарий самостоятельной загрузки снапшота mainnet.
-Обычно это предпочтительный способ синхронизации. Архивный снапшот заметно больше и подходит для более узких задач.
-
-Узлы с достаточными ресурсами могут использовать значение `$RPC_TYPE=fast-rpc`. По умолчанию используется `rpc`.
-
-Перед запуском скрипта загрузки снапшота можно задать следующие переменные окружения:
-
-- `CHAIN_ID` — `mainnet` или `testnet` (по умолчанию: `mainnet`)
-- `RPC_TYPE` — `rpc` (по умолчанию) или `fast-rpc`
-- `THREADS` — число потоков для загрузки. Используйте `128` для 10Gbps и `16` для 1Gbps (по умолчанию: `128`)
-- `TPSLIMIT` — максимальное число новых HTTP-действий в секунду (по умолчанию: `4096`)
-- `BWLIMIT` — максимальная пропускная способность для загрузки, если её нужно ограничить (по умолчанию: `10G`)
-- `DATA_PATH` — путь, куда будет загружен снапшот (по умолчанию: `~/.near/data`)
-- `BLOCK` — высота блока нужного снапшота. Если не указать, будет загружен последний снапшот.
-
-**Выполните эту команду, чтобы скачать RPC-снапшот mainnet:**
-
-:::info
-Будут заданы следующие переменные окружения:
-- `DATA_PATH=~/.near/data` — стандартный путь nearcore
-- `CHAIN_ID=mainnet` — явно выбирает данные mainnet
-- `RPC_TYPE=fast-rpc` — включает оптимизированный режим
-:::
-
-`RPC Mainnet Snapshot » ~/.near/data`:
-
-```bash
-curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/fastnear/static/refs/heads/main/down_rclone.sh | DATA_PATH=~/.near/data CHAIN_ID=mainnet RPC_TYPE=fast-rpc bash
-```
-
-## RPC-снапшот mainnet
-
-Это стандартный способ получить снапшот без оптимизированного режима из предыдущего раздела.
-
-Перед запуском скрипта загрузки снапшота можно задать следующие переменные окружения:
-
-- `CHAIN_ID` — `mainnet` или `testnet` (по умолчанию: `mainnet`)
-- `RPC_TYPE` — `rpc` (по умолчанию) или `fast-rpc`
-- `THREADS` — число потоков для загрузки. Используйте `128` для 10Gbps и `16` для 1Gbps (по умолчанию: `128`)
-- `TPSLIMIT` — максимальное число новых HTTP-действий в секунду (по умолчанию: `4096`)
-- `BWLIMIT` — максимальная пропускная способность для загрузки, если её нужно ограничить (по умолчанию: `10G`)
-- `DATA_PATH` — путь, куда будет загружен снапшот (по умолчанию: `~/.near/data`)
-- `BLOCK` — высота блока нужного снапшота. Если не указать, будет загружен последний снапшот.
-
-**Выполните эту команду, чтобы скачать RPC-снапшот mainnet:**
-
-:::info
-Будут заданы следующие переменные окружения:
-- `DATA_PATH=~/.near/data` — стандартный путь nearcore
-- `CHAIN_ID=mainnet` — явно выбирает данные mainnet
+:::warning[Бесплатные снапшоты устарели]
+Бесплатные снапшоты данных nearcore были прекращены 1 июня 2025 года.
:::
-`RPC Mainnet Snapshot » ~/.near/data`:
-
-```bash
-curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/fastnear/static/refs/heads/main/down_rclone.sh | DATA_PATH=~/.near/data CHAIN_ID=mainnet bash
-```
-
-## Архивный снапшот mainnet
-
-:::warning
-**Требует много времени и места на диске.**
-
-Подготовьтесь к очень большому объёму загрузки и длительному времени выполнения.
-
-Размер снапшота составляет около 60 ТБ, и он содержит более 1 миллиона файлов.
-:::
+## Для обычных RPC-узлов и валидаторов
-Перед запуском скрипта загрузки можно задать следующие переменные окружения:
+Используйте [NEAR Nodes](https://near-nodes.io) и актуальную схему запуска на основе Epoch Sync вместе с децентрализованной синхронизацией состояния. Это публично рекомендуемый путь для обычного запуска и восстановления узлов mainnet.
-- `CHAIN_ID` — `mainnet` или `testnet` (по умолчанию: `mainnet`)
-- `THREADS` — число потоков для загрузки. Используйте `128` для 10Gbps и `16` для 1Gbps (по умолчанию: `128`)
-- `TPSLIMIT` — максимальное число новых HTTP-действий в секунду (по умолчанию: `4096`)
-- `DATA_TYPE` — `hot-data` или `cold-data` (по умолчанию: `cold-data`)
-- `BWLIMIT` — максимальная пропускная способность для загрузки, если её нужно ограничить (по умолчанию: `10G`)
-- `DATA_PATH` — путь, куда будет загружен снапшот (по умолчанию: `/mnt/nvme/data/$DATA_TYPE`)
-- `BLOCK` — высота блока нужного снапшота. Если не указать, будет загружен последний снапшот.
+Перед первым `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
-- Hot data, которые должны лежать на NVME: `/mnt/nvme/data/hot-data`
-- Cold data, которые можно хранить на HDD: `/mnt/nvme/data/cold-data`
+Доступ к архивным снапшотам предоставляется по запросу. Начните со [страницы FastNear о снапшотах](https://fastnear.com/snapshots) или напишите на [почту команды FastNear по снапшотам](mailto:snapshots@fastnear.com), чтобы получить актуальную информацию о доступности, высоте блока и требованиях к хранилищу.
-**Выполните следующие команды, чтобы скачать архивный снапшот mainnet:**
+## Что важно знать о старых скриптах
-1. Получите высоту блока последнего снапшота:
+В репозитории [fastnear/static](https://github.com/fastnear/static) по-прежнему лежат исторические скрипты `down_rclone.sh` и `down_rclone_archival.sh`. Мы больше не публикуем для них copy-paste команды в документации, потому что прежние публичные URL обнаружения через `latest.txt` теперь ведут на информационную страницу и не являются поддерживаемым публичным сценарием.
-`Latest archival mainnet snapshot block`:
+Если поддержка FastNear выдаст вам конкретную высоту блока и рабочий путь загрузки, используйте именно те хосты, блок и схему размещения данных, которые вам предоставят, а не старые публичные примеры.
-```bash
-LATEST=$(curl -s "https://snapshot.neardata.xyz/mainnet/archival/latest.txt")
-echo "Latest snapshot block: $LATEST"
-```
+## Если вы готовитесь к запросу архивного снапшота
-2. Скачайте данные HOT из снапшота. Их нужно разместить на NVME.
+- Будьте готовы разнести hot data и cold data, если это потребуется для конкретного пакета снапшота.
+- Заранее проверьте схему хранения nearcore до начала переноса данных.
+- Устанавливайте `rclone` только если полученный от поддержки сценарий действительно на него опирается.
-:::info
-Будут заданы следующие переменные окружения:
-- `DATA_TYPE=hot-data` — выбирает загрузку Hot data
-- `DATA_PATH=~/.near/data` — стандартный путь nearcore
-- `CHAIN_ID=mainnet` — явно выбирает данные mainnet
-- `BLOCK=$LATEST` — указывает блок снапшота
-:::
-
-`Archival Mainnet Snapshot (hot-data) » ~/.near/data`:
-
-```bash
-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=~/.near/data CHAIN_ID=mainnet BLOCK=$LATEST bash
-```
-
-3. Скачайте данные COLD из снапшота. Их можно разместить на HDD.
-
-:::info
-Будут заданы следующие переменные окружения:
-- `DATA_TYPE=cold-data` — выбирает загрузку Cold data
-- `DATA_PATH=/mnt/hdds/cold-data` — путь для размещения cold data. **Обратите внимание:** конфигурация nearcore должна указывать на тот же путь для cold data.
-- `CHAIN_ID=mainnet` — явно выбирает данные mainnet
-- `BLOCK=$LATEST` — указывает блок снапшота
-:::
+## Если FastNear передаст вам пакет снапшота
-`Archival Mainnet Snapshot (cold-data) » /mnt/hdds/cold-data`:
+1. Остановите `neard`, прежде чем заменять данные снапшота или менять настройки архивного хранилища.
+2. Уточните, рассчитан ли пакет на `~/.near/data` или на раздельные пути `hot-data` и `cold-data`.
+3. До перезапуска проверьте, что `config.json` соответствует нужному режиму архивного узла.
+ Для архивных узлов NEAR Nodes считает критичными параметры `archive: true` и `tracked_shards: [0]`.
+4. Если пакет использует раздельное хранилище, убедитесь, что пути в конфигурации совпадают с полученной схемой hot/cold, и только потом запускайте узел.
+5. Перезапустите узел и проверьте, что он стартует без ошибок и продолжает синхронизацию, а не остаётся на устаревшем локальном состоянии.
-```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=/mnt/hdds/cold-data CHAIN_ID=mainnet BLOCK=$LATEST bash
-```
+Требования к хранилищу nearcore и общие операторские предпосылки смотрите в [nearcore](https://github.com/near/nearcore?tab=readme-ov-file#about-near).
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/testnet.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/testnet.mdx
index c1a3175..6cfe284 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/testnet.mdx
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/testnet.mdx
@@ -1,83 +1,46 @@
---
sidebar_label: "Testnet"
slug: /snapshots/testnet
-description: "Скачайте RPC- и архивные снапшоты testnet для быстрого развёртывания NEAR-инфраструктуры на базе FastNear."
+description: "Текущая позиция FastNear по снапшотам testnet для RPC-подъёма и запросов архивных снапшотов."
---
# Testnet
-## RPC-снапшот testnet
+FastNear больше не публикует здесь публичный сценарий самостоятельной загрузки снапшота testnet.
-Обычно это предпочтительный способ синхронизации. Архивный снапшот заметно больше и нужен для более узких задач.
-
-Перед запуском скрипта загрузки снапшота можно задать следующие переменные окружения:
-
-- `CHAIN_ID` — `mainnet` или `testnet` (по умолчанию: `mainnet`)
-- `THREADS` — число потоков для загрузки. Используйте `128` для 10Gbps и `16` для 1Gbps (по умолчанию: `128`)
-- `TPSLIMIT` — максимальное число новых HTTP-действий в секунду (по умолчанию: `4096`)
-- `BWLIMIT` — максимальная пропускная способность для загрузки, если её нужно ограничить (по умолчанию: `10G`)
-- `DATA_PATH` — путь, куда будет загружен снапшот (по умолчанию: `~/.near/data`)
-- `BLOCK` — высота блока нужного снапшота. Если не указать, будет загружен последний снапшот.
-
-**Выполните эту команду, чтобы скачать RPC-снапшот testnet:**
-
-:::info
-Будут заданы следующие переменные окружения:
-- `DATA_PATH=~/.near/data` — стандартный путь nearcore
-- `CHAIN_ID=testnet` — явно выбирает данные testnet
+:::warning[Бесплатные снапшоты устарели]
+Бесплатные снапшоты данных nearcore были прекращены 1 июня 2025 года.
:::
-`RPC Testnet Snapshot » ~/.near/data`:
-
-```bash
-curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/fastnear/static/refs/heads/main/down_rclone.sh | DATA_PATH=~/.near/data CHAIN_ID=testnet bash
-```
+## Для обычных RPC-узлов и валидаторов
-## Архивный снапшот testnet
+Используйте [NEAR Nodes](https://near-nodes.io) и актуальную схему запуска на основе Epoch Sync вместе с децентрализованной синхронизацией состояния. Это публично рекомендуемый путь для обычного запуска и восстановления узлов testnet.
-:::warning
-**Требует много времени и места на диске.**
+Перед первым `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`.
-Подготовьтесь к большому объёму загрузки и длительному времени выполнения.
-:::
-
-Перед запуском скрипта загрузки можно задать следующие переменные окружения:
-
-- `CHAIN_ID` — `mainnet` или `testnet` (по умолчанию: `mainnet`)
-- `THREADS` — число потоков для загрузки. Используйте `128` для 10Gbps и `16` для 1Gbps (по умолчанию: `128`)
-- `TPSLIMIT` — максимальное число новых HTTP-действий в секунду (по умолчанию: `4096`)
-- `DATA_TYPE` — `hot-data` или `cold-data` (по умолчанию: `cold-data`)
-- `BWLIMIT` — максимальная пропускная способность для загрузки, если её нужно ограничить (по умолчанию: `10G`)
-- `DATA_PATH` — путь, куда будет загружен снапшот (по умолчанию: `/mnt/nvme/data/$DATA_TYPE`)
-- `BLOCK` — высота блока нужного снапшота. Если не указать, будет загружен последний снапшот.
+## Для архивных снапшотов testnet
-По умолчанию скрипт ожидает следующий путь для данных:
+Доступ к архивным снапшотам предоставляется по запросу. Начните со [страницы FastNear о снапшотах](https://fastnear.com/snapshots) или напишите на [почту команды FastNear по снапшотам](mailto:snapshots@fastnear.com), чтобы получить актуальную информацию о доступности, высоте блока и требованиях к хранилищу.
-- Hot data, которые должны лежать на NVME: `/mnt/nvme/data/hot-data`
+## Что важно знать о старых скриптах
-**Выполните следующие команды, чтобы скачать архивный снапшот testnet:**
+В репозитории [fastnear/static](https://github.com/fastnear/static) по-прежнему лежат исторические скрипты `down_rclone.sh` и `down_rclone_archival.sh`. Мы больше не публикуем для них copy-paste команды в документации, потому что прежние публичные URL обнаружения через `latest.txt` теперь ведут на информационную страницу и не являются поддерживаемым публичным сценарием.
-1. Получите высоту блока последнего снапшота:
+Если поддержка FastNear выдаст вам конкретную высоту блока и рабочий путь загрузки, используйте именно те хосты, блок и схему размещения данных, которые вам предоставят, а не старые публичные примеры.
-`Latest archival testnet snapshot block`:
+## Если вы готовитесь к запросу архивного снапшота
-```bash
-LATEST=$(curl -s "https://snapshot.neardata.xyz/testnet/archival/latest.txt")
-echo "Latest snapshot block: $LATEST"
-```
+- Будьте готовы разместить hot data на быстром локальном хранилище, если это потребуется для конкретного пакета снапшота.
+- Заранее проверьте схему хранения nearcore до начала переноса данных.
+- Устанавливайте `rclone` только если полученный от поддержки сценарий действительно на него опирается.
-2. Скачайте данные HOT из снапшота. Их нужно разместить на NVME.
-
-:::info
-Будут заданы следующие переменные окружения:
-- `DATA_TYPE=hot-data` — выбирает загрузку Hot data
-- `DATA_PATH=~/.near/data` — стандартный путь nearcore
-- `CHAIN_ID=testnet` — явно выбирает сеть testnet
-- `BLOCK=$LATEST` — указывает блок снапшота
-:::
+## Если FastNear передаст вам пакет снапшота
-`Archival Testnet Snapshot (hot-data) » ~/.near/data`:
+1. Остановите `neard`, прежде чем заменять данные снапшота или менять настройки архивного хранилища.
+2. Уточните, рассчитан ли пакет на `~/.near/data` или на раздельные пути `hot-data` и `cold-data`.
+3. До перезапуска проверьте, что `config.json` соответствует нужному режиму архивного узла.
+ Для архивных узлов NEAR Nodes считает критичными параметры `archive: true` и `tracked_shards: [0]`.
+4. Если пакет использует раздельное хранилище, убедитесь, что пути в конфигурации совпадают с полученной схемой hot/cold, и только потом запускайте узел.
+5. Перезапустите узел и проверьте, что он стартует без ошибок и продолжает синхронизацию, а не остаётся на устаревшем локальном состоянии.
-```bash
-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=~/.near/data CHAIN_ID=testnet BLOCK=$LATEST bash
-```
+Требования к хранилищу nearcore и общие операторские предпосылки смотрите в [nearcore](https://github.com/near/nearcore?tab=readme-ov-file#about-near).
diff --git a/static/ru/api/examples.md b/static/ru/api/examples.md
index 9d35825..d45e47a 100644
--- a/static/ru/api/examples.md
+++ b/static/ru/api/examples.md
@@ -2,7 +2,7 @@
## Примеры
-Все shell-примеры ниже работают на публичных FastNear API-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.
+Все shell-примеры ниже работают на публичных FastNear API-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке.
### Свести один аккаунт за один вызов
@@ -10,11 +10,8 @@
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
- "${AUTH_HEADER[@]}" \
+curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full?apiKey=${FASTNEAR_API_KEY:-}" \
| jq '{
account_id,
near_balance_yocto: .state.balance,
@@ -32,18 +29,14 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
```bash
PUBLIC_KEY='ed25519:CCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT'
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-LOOKUP="$(curl -s "https://api.fastnear.com/v1/public_key/$(jq -rn --arg k "$PUBLIC_KEY" '$k | @uri')" \
- "${AUTH_HEADER[@]}")"
+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" \
- "${AUTH_HEADER[@]}" \
+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)}'
```
@@ -55,11 +48,8 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
- "${AUTH_HEADER[@]}" \
+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
@@ -89,11 +79,8 @@ jq считает в IEEE-754 double, поэтому NEAR-значения вы
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
- "${AUTH_HEADER[@]}" \
+curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full?apiKey=${FASTNEAR_API_KEY:-}" \
| jq '
[
(.tokens // [])[].last_update_block_height,
@@ -121,11 +108,8 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
```bash
ACCOUNT_ID=root.near
PUBLISHER=sharddog.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/nft" \
- "${AUTH_HEADER[@]}" \
+curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/nft?apiKey=${FASTNEAR_API_KEY:-}" \
| jq --arg publisher "$PUBLISHER" '
("." + $publisher) as $suffix
| {
@@ -154,13 +138,9 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/nft" \
```bash
ACCOUNT_ID=root.near
LIQUID_PROVIDERS_JSON='["meta-pool.near","lst.rhealab.near","linear-protocol.near"]'
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-STAKING="$(curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/staking" \
- "${AUTH_HEADER[@]}")"
-FT="$(curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/ft" \
- "${AUTH_HEADER[@]}")"
+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" \
diff --git a/static/ru/api/examples/index.md b/static/ru/api/examples/index.md
index 9d35825..d45e47a 100644
--- a/static/ru/api/examples/index.md
+++ b/static/ru/api/examples/index.md
@@ -2,7 +2,7 @@
## Примеры
-Все shell-примеры ниже работают на публичных FastNear API-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.
+Все shell-примеры ниже работают на публичных FastNear API-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке.
### Свести один аккаунт за один вызов
@@ -10,11 +10,8 @@
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
- "${AUTH_HEADER[@]}" \
+curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full?apiKey=${FASTNEAR_API_KEY:-}" \
| jq '{
account_id,
near_balance_yocto: .state.balance,
@@ -32,18 +29,14 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
```bash
PUBLIC_KEY='ed25519:CCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT'
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-LOOKUP="$(curl -s "https://api.fastnear.com/v1/public_key/$(jq -rn --arg k "$PUBLIC_KEY" '$k | @uri')" \
- "${AUTH_HEADER[@]}")"
+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" \
- "${AUTH_HEADER[@]}" \
+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)}'
```
@@ -55,11 +48,8 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
- "${AUTH_HEADER[@]}" \
+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
@@ -89,11 +79,8 @@ jq считает в IEEE-754 double, поэтому NEAR-значения вы
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
- "${AUTH_HEADER[@]}" \
+curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full?apiKey=${FASTNEAR_API_KEY:-}" \
| jq '
[
(.tokens // [])[].last_update_block_height,
@@ -121,11 +108,8 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
```bash
ACCOUNT_ID=root.near
PUBLISHER=sharddog.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/nft" \
- "${AUTH_HEADER[@]}" \
+curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/nft?apiKey=${FASTNEAR_API_KEY:-}" \
| jq --arg publisher "$PUBLISHER" '
("." + $publisher) as $suffix
| {
@@ -154,13 +138,9 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/nft" \
```bash
ACCOUNT_ID=root.near
LIQUID_PROVIDERS_JSON='["meta-pool.near","lst.rhealab.near","linear-protocol.near"]'
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-STAKING="$(curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/staking" \
- "${AUTH_HEADER[@]}")"
-FT="$(curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/ft" \
- "${AUTH_HEADER[@]}")"
+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" \
diff --git a/static/ru/fastdata/kv/examples.md b/static/ru/fastdata/kv/examples.md
index 269d82d..9279051 100644
--- a/static/ru/fastdata/kv/examples.md
+++ b/static/ru/fastdata/kv/examples.md
@@ -2,7 +2,7 @@
## Примеры
-Все shell-примеры ниже работают на публичных KV FastData-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.
+Все shell-примеры ниже работают на публичных KV FastData-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке.
### Проверить один точный ключ и сразу посмотреть его историю
@@ -12,13 +12,10 @@
CURRENT_ACCOUNT_ID=social.near
PREDECESSOR_ID=james.near
KEY='graph/follow/sleet.near'
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
ENCODED_KEY="$(jq -rn --arg key "$KEY" '$key | @uri')"
-LATEST="$(curl -s "https://kv.main.fastnear.com/v0/latest/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
- "${AUTH_HEADER[@]}")"
+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: (
@@ -33,8 +30,7 @@ echo "$LATEST" | jq '{
)
}'
-curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
- "${AUTH_HEADER[@]}" \
+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}]}'
```
@@ -46,11 +42,8 @@ curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSO
```bash
PREDECESSOR_ID=jemartel.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-FIRST="$(curl -s "https://kv.main.fastnear.com/v0/all/$PREDECESSOR_ID" \
- "${AUTH_HEADER[@]}" \
+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}')"
@@ -66,10 +59,7 @@ echo "$FIRST" | jq '{
```bash
PREDECESSOR_ID=jemartel.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-FIRST="$(curl -s "https://kv.main.fastnear.com/v0/all/$PREDECESSOR_ID" \
- "${AUTH_HEADER[@]}" \
+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}')"
@@ -77,8 +67,7 @@ CURRENT_ACCOUNT_ID="$(echo "$FIRST" | jq -r '.entries[0].current_account_id')"
EXACT_KEY="$(echo "$FIRST" | jq -r '.entries[0].key')"
ENCODED_KEY="$(jq -rn --arg key "$EXACT_KEY" '$key | @uri')"
-curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
- "${AUTH_HEADER[@]}" \
+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}]}'
```
diff --git a/static/ru/fastdata/kv/examples/index.md b/static/ru/fastdata/kv/examples/index.md
index 269d82d..9279051 100644
--- a/static/ru/fastdata/kv/examples/index.md
+++ b/static/ru/fastdata/kv/examples/index.md
@@ -2,7 +2,7 @@
## Примеры
-Все shell-примеры ниже работают на публичных KV FastData-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.
+Все shell-примеры ниже работают на публичных KV FastData-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке.
### Проверить один точный ключ и сразу посмотреть его историю
@@ -12,13 +12,10 @@
CURRENT_ACCOUNT_ID=social.near
PREDECESSOR_ID=james.near
KEY='graph/follow/sleet.near'
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
ENCODED_KEY="$(jq -rn --arg key "$KEY" '$key | @uri')"
-LATEST="$(curl -s "https://kv.main.fastnear.com/v0/latest/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
- "${AUTH_HEADER[@]}")"
+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: (
@@ -33,8 +30,7 @@ echo "$LATEST" | jq '{
)
}'
-curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
- "${AUTH_HEADER[@]}" \
+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}]}'
```
@@ -46,11 +42,8 @@ curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSO
```bash
PREDECESSOR_ID=jemartel.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-FIRST="$(curl -s "https://kv.main.fastnear.com/v0/all/$PREDECESSOR_ID" \
- "${AUTH_HEADER[@]}" \
+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}')"
@@ -66,10 +59,7 @@ echo "$FIRST" | jq '{
```bash
PREDECESSOR_ID=jemartel.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-FIRST="$(curl -s "https://kv.main.fastnear.com/v0/all/$PREDECESSOR_ID" \
- "${AUTH_HEADER[@]}" \
+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}')"
@@ -77,8 +67,7 @@ CURRENT_ACCOUNT_ID="$(echo "$FIRST" | jq -r '.entries[0].current_account_id')"
EXACT_KEY="$(echo "$FIRST" | jq -r '.entries[0].key')"
ENCODED_KEY="$(jq -rn --arg key "$EXACT_KEY" '$key | @uri')"
-curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
- "${AUTH_HEADER[@]}" \
+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}]}'
```
diff --git a/static/ru/guides/llms.txt b/static/ru/guides/llms.txt
index c330148..bdacb3b 100644
--- a/static/ru/guides/llms.txt
+++ b/static/ru/guides/llms.txt
@@ -40,7 +40,7 @@
## Снапшоты
-- [Снапшоты для валидаторов](https://docs.fastnear.com/ru/snapshots.md): Пути загрузки снапшотов FastNear для подъёма и восстановления узлов NEAR.
+- [Снапшоты для валидаторов](https://docs.fastnear.com/ru/snapshots.md): Текущий статус снапшотов FastNear и рекомендации для подъёма узлов NEAR и запросов архивных снапшотов.
- [Примеры snapshot](https://docs.fastnear.com/ru/snapshots/examples.md): Практические примеры восстановления узла: optimized, standard и archival.
-- [mainnet](https://docs.fastnear.com/ru/snapshots/mainnet.md): Скачайте RPC- и архивные снапшоты mainnet для быстрого развёртывания NEAR-инфраструктуры на базе FastNear.
-- [testnet](https://docs.fastnear.com/ru/snapshots/testnet.md): Скачайте RPC- и архивные снапшоты testnet для быстрого развёртывания NEAR-инфраструктуры на базе FastNear.
+- [mainnet](https://docs.fastnear.com/ru/snapshots/mainnet.md): Текущая позиция FastNear по снапшотам mainnet для RPC-подъёма и запросов архивных снапшотов.
+- [testnet](https://docs.fastnear.com/ru/snapshots/testnet.md): Текущая позиция FastNear по снапшотам testnet для RPC-подъёма и запросов архивных снапшотов.
diff --git a/static/ru/llms-full.txt b/static/ru/llms-full.txt
index 42962f5..0013428 100644
--- a/static/ru/llms-full.txt
+++ b/static/ru/llms-full.txt
@@ -1001,7 +1001,7 @@ https://test.api.fastnear.com
## Примеры
-Все shell-примеры ниже работают на публичных FastNear API-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.
+Все shell-примеры ниже работают на публичных FastNear API-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке.
### Свести один аккаунт за один вызов
@@ -1009,11 +1009,8 @@ https://test.api.fastnear.com
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
- "${AUTH_HEADER[@]}" \
+curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full?apiKey=${FASTNEAR_API_KEY:-}" \
| jq '{
account_id,
near_balance_yocto: .state.balance,
@@ -1031,18 +1028,14 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
```bash
PUBLIC_KEY='ed25519:CCaThr3uokqnUs6Z5vVnaDcJdrfuTpYJHJWcAGubDjT'
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-LOOKUP="$(curl -s "https://api.fastnear.com/v1/public_key/$(jq -rn --arg k "$PUBLIC_KEY" '$k | @uri')" \
- "${AUTH_HEADER[@]}")"
+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" \
- "${AUTH_HEADER[@]}" \
+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)}'
```
@@ -1054,11 +1047,8 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
- "${AUTH_HEADER[@]}" \
+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
@@ -1088,11 +1078,8 @@ jq считает в IEEE-754 double, поэтому NEAR-значения вы
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
- "${AUTH_HEADER[@]}" \
+curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full?apiKey=${FASTNEAR_API_KEY:-}" \
| jq '
[
(.tokens // [])[].last_update_block_height,
@@ -1120,11 +1107,8 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/full" \
```bash
ACCOUNT_ID=root.near
PUBLISHER=sharddog.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/nft" \
- "${AUTH_HEADER[@]}" \
+curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/nft?apiKey=${FASTNEAR_API_KEY:-}" \
| jq --arg publisher "$PUBLISHER" '
("." + $publisher) as $suffix
| {
@@ -1153,13 +1137,9 @@ curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/nft" \
```bash
ACCOUNT_ID=root.near
LIQUID_PROVIDERS_JSON='["meta-pool.near","lst.rhealab.near","linear-protocol.near"]'
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-STAKING="$(curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/staking" \
- "${AUTH_HEADER[@]}")"
-FT="$(curl -s "https://api.fastnear.com/v1/account/$ACCOUNT_ID/ft" \
- "${AUTH_HEADER[@]}")"
+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" \
@@ -1424,7 +1404,7 @@ curl -s "https://kv.main.fastnear.com/v0/latest/$CURRENT_ACCOUNT_ID/$PREDECESSOR
## Примеры
-Все shell-примеры ниже работают на публичных KV FastData-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.
+Все shell-примеры ниже работают на публичных KV FastData-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке.
### Проверить один точный ключ и сразу посмотреть его историю
@@ -1434,13 +1414,10 @@ curl -s "https://kv.main.fastnear.com/v0/latest/$CURRENT_ACCOUNT_ID/$PREDECESSOR
CURRENT_ACCOUNT_ID=social.near
PREDECESSOR_ID=james.near
KEY='graph/follow/sleet.near'
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
ENCODED_KEY="$(jq -rn --arg key "$KEY" '$key | @uri')"
-LATEST="$(curl -s "https://kv.main.fastnear.com/v0/latest/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
- "${AUTH_HEADER[@]}")"
+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: (
@@ -1455,8 +1432,7 @@ echo "$LATEST" | jq '{
)
}'
-curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
- "${AUTH_HEADER[@]}" \
+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}]}'
```
@@ -1468,11 +1444,8 @@ curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSO
```bash
PREDECESSOR_ID=jemartel.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-FIRST="$(curl -s "https://kv.main.fastnear.com/v0/all/$PREDECESSOR_ID" \
- "${AUTH_HEADER[@]}" \
+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}')"
@@ -1488,10 +1461,7 @@ echo "$FIRST" | jq '{
```bash
PREDECESSOR_ID=jemartel.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-FIRST="$(curl -s "https://kv.main.fastnear.com/v0/all/$PREDECESSOR_ID" \
- "${AUTH_HEADER[@]}" \
+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}')"
@@ -1499,8 +1469,7 @@ CURRENT_ACCOUNT_ID="$(echo "$FIRST" | jq -r '.entries[0].current_account_id')"
EXACT_KEY="$(echo "$FIRST" | jq -r '.entries[0].key')"
ENCODED_KEY="$(jq -rn --arg key "$EXACT_KEY" '$key | @uri')"
-curl -s "https://kv.main.fastnear.com/v0/history/$CURRENT_ACCOUNT_ID/$PREDECESSOR_ID/$ENCODED_KEY" \
- "${AUTH_HEADER[@]}" \
+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}]}'
```
@@ -1862,18 +1831,15 @@ https://testnet.neardata.xyz
NEAR Data возвращает каждый блок полностью гидратированным одним JSON-документом — header плюс per-shard chunks, receipts, результаты исполнения и state changes, — так что один `curl` уже даёт всё необходимое, чтобы отфильтровать нужный контракт без второго запроса.
-Все shell-примеры ниже работают на публичных NEAR Data-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.
+Все shell-примеры ниже работают на публичных NEAR Data-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке.
### На каком блоке NEAR сейчас?
`/v0/last_block/final` отдаёт 302-редирект на текущий финализированный блок. Прежде чем фильтровать по конкретному контракту, полезно увидеть, как выглядит один блок на уровне протокола: транзакции приходят с разбивкой по shard, поэтому общее число транзакций в блоке — это сумма по shards, а не одно поле верхнего уровня.
```bash
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -sL "https://mainnet.neardata.xyz/v0/last_block/final" \
- "${AUTH_HEADER[@]}" \
+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,
@@ -1890,11 +1856,8 @@ curl -sL "https://mainnet.neardata.xyz/v0/last_block/final" \
```bash
TARGET_CONTRACT=intents.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -sL "https://mainnet.neardata.xyz/v0/last_block/final" \
- "${AUTH_HEADER[@]}" \
+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,
@@ -1916,8 +1879,6 @@ Optimistic-блоки ходят по `/v0/block_opt/{height}` примерно
```bash
TARGET_CONTRACT=intents.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
count_touches() {
jq --arg contract "$1" '
@@ -1928,15 +1889,14 @@ count_touches() {
}
OPT_LOCATION="$(
- curl -s -D - -o /dev/null "${AUTH_HEADER[@]}" "https://mainnet.neardata.xyz/v0/last_block/optimistic" \
+ 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_HEIGHT="${OPT_LOCATION##*/}"
+OPT_PATH="${OPT_LOCATION%%\?*}"
+OPT_HEIGHT="${OPT_PATH##*/}"
-echo "optimistic @ $OPT_HEIGHT: $(curl -s "https://mainnet.neardata.xyz$OPT_LOCATION" \
- "${AUTH_HEADER[@]}" | count_touches "$TARGET_CONTRACT") touches"
-FINAL="$(curl -s "https://mainnet.neardata.xyz/v0/block/$OPT_HEIGHT" \
- "${AUTH_HEADER[@]}")"
+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
@@ -1952,18 +1912,14 @@ fi
```bash
TARGET_CONTRACT=intents.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-HEAD="$(curl -sL "https://mainnet.neardata.xyz/v0/last_block/final" \
- "${AUTH_HEADER[@]}" | jq '.block.header.height')"
+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" \
- "${AUTH_HEADER[@]}" \
+ 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)
@@ -1978,8 +1934,7 @@ 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" \
- "${AUTH_HEADER[@]}" \
+ 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,
@@ -2158,7 +2113,7 @@ https://archival-rpc.testnet.fastnear.com
Начинайте с RPC-метода, который отвечает на вопрос. Используйте `tx`, чтобы отследить включение и финальность по хешу транзакции, и расширяйте поверхность только когда нужны дерево receipts, сырой state или трассировка на уровне shard.
-Все shell-примеры ниже работают на публичных RPC-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.
+Все shell-примеры ниже работают на публичных RPC-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке.
## Состояние аккаунта
@@ -2168,11 +2123,8 @@ https://archival-rpc.testnet.fastnear.com
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://rpc.mainnet.fastnear.com" \
- "${AUTH_HEADER[@]}" \
+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",
@@ -2192,11 +2144,8 @@ curl -s "https://rpc.mainnet.fastnear.com" \
```bash
TX_HASH=CVyG2xLJ6fuKCtULAxMnWTh2GL5ey2UUiTcgYT3M6Pow
SIGNER_ACCOUNT_ID=mike.testnet
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://archival-rpc.testnet.fastnear.com" \
- "${AUTH_HEADER[@]}" \
+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",
@@ -2225,14 +2174,12 @@ curl -s "https://archival-rpc.testnet.fastnear.com" \
```bash
EMPTY_TX_ROOT=11111111111111111111111111111111
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-BLOCK_HASH="$(curl -s "https://rpc.mainnet.fastnear.com" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+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" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+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}
}')" \
@@ -2242,7 +2189,7 @@ CHUNK_HASH="$(curl -s "https://rpc.mainnet.fastnear.com" "${AUTH_HEADER[@]}" -H
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" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+ 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}
}')" \
@@ -2282,11 +2229,8 @@ fi
```bash
ACCOUNT_ID=root.near
RECEIVER_ID=social.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://rpc.mainnet.fastnear.com" \
- "${AUTH_HEADER[@]}" \
+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",
@@ -2324,10 +2268,8 @@ View-метод вроде `get_num` всё равно заставляет уз
```bash
CONTRACT_ID=counter.near-examples.testnet
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-RAW_B64="$(curl -s "https://rpc.testnet.fastnear.com" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+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"}
@@ -2354,12 +2296,10 @@ jq -n --arg raw "$RAW_B64" --argjson val "$DECODED_I8" '{raw_bytes_base64: $raw,
```bash
ACCOUNT_ID=root.near # account you're writing under
SIGNER_ACCOUNT_ID=root.near # account signing the transaction
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
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" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+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"}
@@ -2370,7 +2310,7 @@ 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" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+ 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"}
@@ -2397,15 +2337,13 @@ SocialDB хранит BOS-виджеты как ключи `
/widget/ 0)
@@ -120,8 +107,7 @@ 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" \
- "${AUTH_HEADER[@]}" \
+ 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,
diff --git a/static/ru/neardata/examples/index.md b/static/ru/neardata/examples/index.md
index 3639e91..1d1ff1a 100644
--- a/static/ru/neardata/examples/index.md
+++ b/static/ru/neardata/examples/index.md
@@ -4,18 +4,15 @@
NEAR Data возвращает каждый блок полностью гидратированным одним JSON-документом — header плюс per-shard chunks, receipts, результаты исполнения и state changes, — так что один `curl` уже даёт всё необходимое, чтобы отфильтровать нужный контракт без второго запроса.
-Все shell-примеры ниже работают на публичных NEAR Data-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.
+Все shell-примеры ниже работают на публичных NEAR Data-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке.
### На каком блоке NEAR сейчас?
`/v0/last_block/final` отдаёт 302-редирект на текущий финализированный блок. Прежде чем фильтровать по конкретному контракту, полезно увидеть, как выглядит один блок на уровне протокола: транзакции приходят с разбивкой по shard, поэтому общее число транзакций в блоке — это сумма по shards, а не одно поле верхнего уровня.
```bash
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -sL "https://mainnet.neardata.xyz/v0/last_block/final" \
- "${AUTH_HEADER[@]}" \
+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,
@@ -32,11 +29,8 @@ curl -sL "https://mainnet.neardata.xyz/v0/last_block/final" \
```bash
TARGET_CONTRACT=intents.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -sL "https://mainnet.neardata.xyz/v0/last_block/final" \
- "${AUTH_HEADER[@]}" \
+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,
@@ -58,8 +52,6 @@ Optimistic-блоки ходят по `/v0/block_opt/{height}` примерно
```bash
TARGET_CONTRACT=intents.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
count_touches() {
jq --arg contract "$1" '
@@ -70,15 +62,14 @@ count_touches() {
}
OPT_LOCATION="$(
- curl -s -D - -o /dev/null "${AUTH_HEADER[@]}" "https://mainnet.neardata.xyz/v0/last_block/optimistic" \
+ 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_HEIGHT="${OPT_LOCATION##*/}"
+OPT_PATH="${OPT_LOCATION%%\?*}"
+OPT_HEIGHT="${OPT_PATH##*/}"
-echo "optimistic @ $OPT_HEIGHT: $(curl -s "https://mainnet.neardata.xyz$OPT_LOCATION" \
- "${AUTH_HEADER[@]}" | count_touches "$TARGET_CONTRACT") touches"
-FINAL="$(curl -s "https://mainnet.neardata.xyz/v0/block/$OPT_HEIGHT" \
- "${AUTH_HEADER[@]}")"
+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
@@ -94,18 +85,14 @@ fi
```bash
TARGET_CONTRACT=intents.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-HEAD="$(curl -sL "https://mainnet.neardata.xyz/v0/last_block/final" \
- "${AUTH_HEADER[@]}" | jq '.block.header.height')"
+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" \
- "${AUTH_HEADER[@]}" \
+ 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)
@@ -120,8 +107,7 @@ 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" \
- "${AUTH_HEADER[@]}" \
+ 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,
diff --git a/static/ru/rpc/examples.md b/static/ru/rpc/examples.md
index 7d6cbcd..8daf432 100644
--- a/static/ru/rpc/examples.md
+++ b/static/ru/rpc/examples.md
@@ -4,7 +4,7 @@
Начинайте с RPC-метода, который отвечает на вопрос. Используйте `tx`, чтобы отследить включение и финальность по хешу транзакции, и расширяйте поверхность только когда нужны дерево receipts, сырой state или трассировка на уровне shard.
-Все shell-примеры ниже работают на публичных RPC-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически добавляют bearer header; если переменная не задана, они переходят на публичный неаутентифицированный путь.
+Все shell-примеры ниже работают на публичных RPC-хостах как есть. Если в shell задан `FASTNEAR_API_KEY`, они автоматически передают его как query-параметр `apiKey`; если переменная не задана, они переходят на публичный неаутентифицированный путь. Также поддерживается bearer-аутентификация через `Authorization: Bearer ${FASTNEAR_API_KEY}`, если вашему клиенту удобнее передавать ключ в заголовке.
## Состояние аккаунта
@@ -14,11 +14,8 @@
```bash
ACCOUNT_ID=root.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://rpc.mainnet.fastnear.com" \
- "${AUTH_HEADER[@]}" \
+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",
@@ -38,11 +35,8 @@ curl -s "https://rpc.mainnet.fastnear.com" \
```bash
TX_HASH=CVyG2xLJ6fuKCtULAxMnWTh2GL5ey2UUiTcgYT3M6Pow
SIGNER_ACCOUNT_ID=mike.testnet
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://archival-rpc.testnet.fastnear.com" \
- "${AUTH_HEADER[@]}" \
+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",
@@ -71,14 +65,12 @@ curl -s "https://archival-rpc.testnet.fastnear.com" \
```bash
EMPTY_TX_ROOT=11111111111111111111111111111111
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-BLOCK_HASH="$(curl -s "https://rpc.mainnet.fastnear.com" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+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" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+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}
}')" \
@@ -88,7 +80,7 @@ CHUNK_HASH="$(curl -s "https://rpc.mainnet.fastnear.com" "${AUTH_HEADER[@]}" -H
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" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+ 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}
}')" \
@@ -128,11 +120,8 @@ fi
```bash
ACCOUNT_ID=root.near
RECEIVER_ID=social.near
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-curl -s "https://rpc.mainnet.fastnear.com" \
- "${AUTH_HEADER[@]}" \
+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",
@@ -170,10 +159,8 @@ View-метод вроде `get_num` всё равно заставляет уз
```bash
CONTRACT_ID=counter.near-examples.testnet
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
-RAW_B64="$(curl -s "https://rpc.testnet.fastnear.com" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+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"}
@@ -200,12 +187,10 @@ jq -n --arg raw "$RAW_B64" --argjson val "$DECODED_I8" '{raw_bytes_base64: $raw,
```bash
ACCOUNT_ID=root.near # account you're writing under
SIGNER_ACCOUNT_ID=root.near # account signing the transaction
-AUTH_HEADER=()
-if [ -n "${FASTNEAR_API_KEY:-}" ]; then AUTH_HEADER=(-H "Authorization: Bearer $FASTNEAR_API_KEY"); fi
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" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+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"}
@@ -216,7 +201,7 @@ 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" "${AUTH_HEADER[@]}" -H 'content-type: application/json' \
+ 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"}
@@ -243,15 +228,13 @@ SocialDB хранит BOS-виджеты как ключи `/widget//widget/