From fba0924270fd87c10dc45e1e3d18f4792e24677e Mon Sep 17 00:00:00 2001 From: Mike Purvis Date: Sat, 18 Apr 2026 11:47:08 -0700 Subject: [PATCH 1/5] Tighten snapshot and transaction guidance --- docs/rpc/transaction/broadcast-tx-commit.mdx | 1 + docs/rpc/transaction/send-tx.mdx | 1 + docs/snapshots/index.mdx | 45 ++---- docs/snapshots/mainnet.mdx | 131 +++--------------- docs/snapshots/testnet.mdx | 79 +++-------- .../rpc/transaction/broadcast-tx-commit.mdx | 1 + .../current/rpc/transaction/send-tx.mdx | 1 + .../current/snapshots/index.mdx | 46 ++---- .../current/snapshots/mainnet.mdx | 131 +++--------------- .../current/snapshots/testnet.mdx | 80 +++-------- 10 files changed, 96 insertions(+), 420 deletions(-) diff --git a/docs/rpc/transaction/broadcast-tx-commit.mdx b/docs/rpc/transaction/broadcast-tx-commit.mdx index 9302612..3fb18d7 100644 --- a/docs/rpc/transaction/broadcast-tx-commit.mdx +++ b/docs/rpc/transaction/broadcast-tx-commit.mdx @@ -12,5 +12,6 @@ import FastnearDirectOperation from '@site/src/components/FastnearDirectOperatio `broadcast_tx_commit` request type +Use a freshly signed base64 transaction for each request. This legacy synchronous send is still documented, but `send_tx` is the preferred path for new integrations, and the sample payload is illustrative only. diff --git a/docs/rpc/transaction/send-tx.mdx b/docs/rpc/transaction/send-tx.mdx index dd66911..aacf060 100644 --- a/docs/rpc/transaction/send-tx.mdx +++ b/docs/rpc/transaction/send-tx.mdx @@ -12,5 +12,6 @@ import FastnearDirectOperation from '@site/src/components/FastnearDirectOperatio `send_tx` request type +Use a freshly signed base64 transaction for each request. The sample payload shown in the interactive docs is illustrative only and will fail if you paste it unchanged. diff --git a/docs/snapshots/index.mdx b/docs/snapshots/index.mdx index d76da71..08eef14 100644 --- a/docs/snapshots/index.mdx +++ b/docs/snapshots/index.mdx @@ -2,7 +2,7 @@ sidebar_position: 2 slug: /snapshots title: Validator snapshots -description: Snapshot download paths for FastNear-backed NEAR node bootstrap and recovery workflows. +description: Current FastNear snapshot status and operator guidance for NEAR node bootstrap and archival snapshot requests. sidebar_label: Snapshots Overview displayed_sidebar: snapshotsSidebars keywords: @@ -21,16 +21,23 @@ import SimpleButton from '@site/src/components/SimpleButton'; This section is for node operators who are bootstrapping or recovering NEAR infrastructure. It is not an application-data surface. If the job is reading balances, history, blocks, or contract state, use the API and RPC docs instead of snapshot workflows. :::warning[Free snapshots are deprecated] -The free nearcore data snapshots have been deprecated. +The free nearcore data snapshots were deprecated on June 1, 2025. The NEAR Infrastructure Committee and Near One recommend Epoch Sync plus decentralized state sync. Use NEAR Nodes for the current operator guidance and recommended bootstrap posture. ::: +## Current status + +- FastNear does not currently publish a working public self-serve snapshot download flow from this docs site. +- For regular RPC nodes and validators, follow NEAR Nodes and use the current Epoch Sync plus decentralized state sync guidance. +- For archival snapshot access, visit fastnear.com/snapshots or email snapshots@fastnear.com. +- The legacy scripts in fastnear/static still exist, but the old public `latest.txt` discovery flow is no longer the supported public path here. + ## Use this section when -- you need to bootstrap a mainnet or testnet node from snapshot data -- you are recovering an RPC or archival node -- you already know you want the FastNear snapshot download path +- you are confirming the current FastNear snapshot posture for mainnet or testnet +- you need the right request path for archival snapshot access +- you are deciding whether to use snapshots or the standard NEAR node bootstrap guidance ## Do not use this section when @@ -40,34 +47,10 @@ The NEAR Infrastructure Committee and Near One recommend Epoch Sync plus decentr In those cases, use [RPC Reference](/rpc), [FastNear API](/api), [Transactions API](/tx), or [NEAR Data API](/neardata). -## Before you download - -- Choose the network first: mainnet or testnet. -- Decide whether you need regular RPC data or archival data. -- Make sure you understand where hot and cold data must live before starting an archival download. -- Install `rclone`, because the download scripts depend on it. - -:::info[Getting `rclone`] -Install `rclone` with: - -```bash -sudo -v ; curl https://rclone.org/install.sh | sudo bash -``` -::: - -## What each path covers - -- **Mainnet** includes optimized `fast-rpc`, standard RPC, and archival hot/cold download paths. -- **Testnet** includes RPC and archival snapshot paths for testnet operators. - -See nearcore for node requirements, and fastnear/static for the snapshot download script source used by these guides. - -## Need a workflow? - -Use [Snapshot Examples](/snapshots/examples) for worked operator examples like choosing between optimized `fast-rpc`, standard RPC recovery, and archival hot/cold snapshot paths. - ## Choose a network +Use the network pages below for the current status and escalation path. They no longer assume a public self-serve download URL. +
Mainnet Snapshots Testnet Snapshots diff --git a/docs/snapshots/mainnet.mdx b/docs/snapshots/mainnet.mdx index 210230b..581394c 100644 --- a/docs/snapshots/mainnet.mdx +++ b/docs/snapshots/mainnet.mdx @@ -1,134 +1,35 @@ --- 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 +:::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 RPC_TYPE=fast-rpc bash -``` +## For regular RPC nodes and validators -## RPC Mainnet Snapshot +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. -This is the standard method to obtain a snapshot without the high performance from the previous section covering optimized snapshots. +## For archival mainnet snapshots -Before running the snapshot download script, you can set the following environment variables: +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. -- `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. +## About the legacy scripts -**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 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. -::: +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. -Before running the download script, you can set the following environment variables: +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. -- `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. - -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` - - -**Run the following commands to download the Archival Mainnet snapshot:** - -1. Download the latest snapshot block height: - -`Latest archival mainnet snapshot block`: - -```bash -LATEST=$(curl -s "https://snapshot.neardata.xyz/mainnet/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=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 you are preparing for an archival request -`Archival Mainnet Snapshot (cold-data) » /mnt/hdds/cold-data`: +- 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. -```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..71b45d5 100644 --- a/docs/snapshots/testnet.mdx +++ b/docs/snapshots/testnet.mdx @@ -1,82 +1,35 @@ --- 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 -::: - -`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 -``` - -## Archival Testnet snapshot - -:::warning -**Time and storage intensive.** - -Be prepared for a large download and the inherent time constraints involved. +:::warning[Free snapshots are deprecated] +The free nearcore data snapshots were deprecated on June 1, 2025. ::: -Before running the 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`) -- `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. +## For regular RPC nodes and validators -By default the script assumes the paths for the data: -- Hot data (has to be on NVME): `/mnt/nvme/data/hot-data` +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. -**Run the following commands to download the Archival Testnet snapshot:** +## For archival testnet snapshots -1. Download the latest snapshot block height: +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. -`Latest archival testnet snapshot block`: +## About the legacy scripts -```bash -LATEST=$(curl -s "https://snapshot.neardata.xyz/testnet/archival/latest.txt") -echo "Latest snapshot block: $LATEST" -``` +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. -2. Download the HOT data from the snapshot. It has to be placed on NVME. +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. -:::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 you are preparing for an archival request -`Archival Testnet Snapshot (hot-data) » ~/.near/data`: +- 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. -```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..874ff2b 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,16 +21,23 @@ import SimpleButton from '@site/src/components/SimpleButton'; Этот раздел — для операторов узлов, которые поднимают или восстанавливают инфраструктуру NEAR. Это не поверхность для прикладных данных. Если задача — читать балансы, историю, блоки или состояние контракта, используйте документацию API и RPC, а не сценарии со снапшотами. :::warning[Бесплатные снапшоты устарели] -Бесплатные снапшоты данных nearcore больше не выпускаются. +Бесплатные снапшоты данных nearcore были прекращены 1 июня 2025 года. Infrastructure Committee и Near One рекомендуют Epoch Sync вместе с децентрализованной синхронизацией состояния. Актуальные рекомендации и режим подъёма смотрите на NEAR Nodes. ::: +## Текущий статус + +- Сейчас FastNear не публикует через этот сайт рабочий публичный путь для самостоятельной загрузки снапшотов. +- Для обычного запуска RPC-узлов и валидаторов используйте NEAR Nodes и актуальную схему Epoch Sync вместе с децентрализованной синхронизацией состояния. +- Для доступа к архивным снапшотам переходите на страницу FastNear о снапшотах или пишите на почту команды FastNear по снапшотам. +- Исторические скрипты из fastnear/static по-прежнему существуют, но прежний публичный поток с `latest.txt` больше не является поддерживаемым публичным сценарием. + ## Используйте этот раздел, когда -- нужно поднять узел mainnet или testnet из данных снапшота -- идёт восстановление RPC- или архивного узла -- уже известно, что нужен путь загрузки снапшота FastNear +- нужно подтвердить текущую позицию FastNear по снапшотам для mainnet или testnet +- нужен правильный путь запроса архивного снапшота +- нужно понять, стоит ли использовать снапшоты или стандартный сценарий запуска узла NEAR ## Не используйте этот раздел, когда @@ -40,35 +47,10 @@ Infrastructure Committee и Near One рекомендуют Epoch Sync вмес В этих случаях используйте [Справочник RPC](/rpc), [FastNear API](/api), [Транзакции API](/tx) или [NEAR Data API](/neardata). -## Перед загрузкой - -- Сначала выберите сеть: mainnet или testnet. -- Решите, нужны обычные данные RPC или архивные. -- Убедитесь, что понимаете, где должны лежать горячие и холодные данные, прежде чем стартовать архивную загрузку. - -- Установите `rclone` — скрипты загрузки от него зависят. - -:::info[Установка `rclone`] -Установите `rclone` командой: - -```bash -sudo -v ; curl https://rclone.org/install.sh | sudo bash -``` -::: - -## Что покрывает каждый путь - -- **Mainnet** включает оптимизированный `fast-rpc`, обычный RPC и архивные пути загрузки для горячих и холодных данных. -- **Testnet** включает RPC и архивные пути снапшотов для операторов testnet. - -Требования к узлам смотрите в nearcore, а исходники скриптов загрузки, которые используются в этих руководствах, — в fastnear/static. - -## Нужен сценарий? - -Используйте [примеры снапшотов](/snapshots/examples) для практических примеров: выбора между оптимизированным `fast-rpc`, стандартным восстановлением RPC и архивными путями с разделением горячих и холодных данных. - ## Выберите сеть +На страницах ниже собран текущий статус и путь эскалации по каждой сети. Они больше не предполагают наличие публичного 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..70728e5 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,35 @@ --- 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` — включает оптимизированный режим +:::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 RPC_TYPE=fast-rpc bash -``` +## Для обычных RPC-узлов и валидаторов -## RPC-снапшот mainnet +Используйте [NEAR Nodes](https://near-nodes.io) и актуальную схему запуска на основе Epoch Sync вместе с децентрализованной синхронизацией состояния. Это публично рекомендуемый путь для обычного запуска и восстановления узлов mainnet. -Это стандартный способ получить снапшот без оптимизированного режима из предыдущего раздела. +## Для архивных снапшотов mainnet -Перед запуском скрипта загрузки снапшота можно задать следующие переменные окружения: +Доступ к архивным снапшотам предоставляется по запросу. Начните со [страницы FastNear о снапшотах](https://fastnear.com/snapshots) или напишите на [почту команды FastNear по снапшотам](mailto:snapshots@fastnear.com), чтобы получить актуальную информацию о доступности, высоте блока и требованиях к хранилищу. -- `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 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 миллиона файлов. -::: +В репозитории [fastnear/static](https://github.com/fastnear/static) по-прежнему лежат исторические скрипты `down_rclone.sh` и `down_rclone_archival.sh`. Мы больше не публикуем для них copy-paste команды в документации, потому что прежние публичные URL обнаружения через `latest.txt` теперь ведут на информационную страницу и не являются поддерживаемым публичным сценарием. -Перед запуском скрипта загрузки можно задать следующие переменные окружения: +Если поддержка FastNear выдаст вам конкретную высоту блока и рабочий путь загрузки, используйте именно те хосты, блок и схему размещения данных, которые вам предоставят, а не старые публичные примеры. -- `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` — высота блока нужного снапшота. Если не указать, будет загружен последний снапшот. - -По умолчанию скрипт ожидает следующие пути для данных: - -- Hot data, которые должны лежать на NVME: `/mnt/nvme/data/hot-data` -- Cold data, которые можно хранить на HDD: `/mnt/nvme/data/cold-data` - -**Выполните следующие команды, чтобы скачать архивный снапшот mainnet:** - -1. Получите высоту блока последнего снапшота: - -`Latest archival mainnet snapshot block`: - -```bash -LATEST=$(curl -s "https://snapshot.neardata.xyz/mainnet/archival/latest.txt") -echo "Latest snapshot block: $LATEST" -``` - -2. Скачайте данные HOT из снапшота. Их нужно разместить на NVME. - -:::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` — указывает блок снапшота -::: +## Если вы готовитесь к запросу архивного снапшота -`Archival Mainnet Snapshot (cold-data) » /mnt/hdds/cold-data`: +- Будьте готовы разнести hot data и cold data, если это потребуется для конкретного пакета снапшота. +- Заранее проверьте схему хранения nearcore до начала переноса данных. +- Устанавливайте `rclone` только если полученный от поддержки сценарий действительно на него опирается. -```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..462327a 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,35 @@ --- 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`: +## Для обычных RPC-узлов и валидаторов -```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 -``` +Используйте [NEAR Nodes](https://near-nodes.io) и актуальную схему запуска на основе Epoch Sync вместе с децентрализованной синхронизацией состояния. Это публично рекомендуемый путь для обычного запуска и восстановления узлов testnet. -## Архивный снапшот testnet - -:::warning -**Требует много времени и места на диске.** - -Подготовьтесь к большому объёму загрузки и длительному времени выполнения. -::: +## Для архивных снапшотов testnet -Перед запуском скрипта загрузки можно задать следующие переменные окружения: +Доступ к архивным снапшотам предоставляется по запросу. Начните со [страницы FastNear о снапшотах](https://fastnear.com/snapshots) или напишите на [почту команды FastNear по снапшотам](mailto:snapshots@fastnear.com), чтобы получить актуальную информацию о доступности, высоте блока и требованиях к хранилищу. -- `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` — высота блока нужного снапшота. Если не указать, будет загружен последний снапшот. +## Что важно знать о старых скриптах -По умолчанию скрипт ожидает следующий путь для данных: +В репозитории [fastnear/static](https://github.com/fastnear/static) по-прежнему лежат исторические скрипты `down_rclone.sh` и `down_rclone_archival.sh`. Мы больше не публикуем для них copy-paste команды в документации, потому что прежние публичные URL обнаружения через `latest.txt` теперь ведут на информационную страницу и не являются поддерживаемым публичным сценарием. -- Hot data, которые должны лежать на NVME: `/mnt/nvme/data/hot-data` +Если поддержка FastNear выдаст вам конкретную высоту блока и рабочий путь загрузки, используйте именно те хосты, блок и схему размещения данных, которые вам предоставят, а не старые публичные примеры. -**Выполните следующие команды, чтобы скачать архивный снапшот testnet:** - -1. Получите высоту блока последнего снапшота: - -`Latest archival testnet snapshot block`: - -```bash -LATEST=$(curl -s "https://snapshot.neardata.xyz/testnet/archival/latest.txt") -echo "Latest snapshot block: $LATEST" -``` - -2. Скачайте данные HOT из снапшота. Их нужно разместить на NVME. - -:::info -Будут заданы следующие переменные окружения: -- `DATA_TYPE=hot-data` — выбирает загрузку Hot data -- `DATA_PATH=~/.near/data` — стандартный путь nearcore -- `CHAIN_ID=testnet` — явно выбирает сеть testnet -- `BLOCK=$LATEST` — указывает блок снапшота -::: +## Если вы готовитесь к запросу архивного снапшота -`Archival Testnet Snapshot (hot-data) » ~/.near/data`: +- Будьте готовы разместить hot data на быстром локальном хранилище, если это потребуется для конкретного пакета снапшота. +- Заранее проверьте схему хранения nearcore до начала переноса данных. +- Устанавливайте `rclone` только если полученный от поддержки сценарий действительно на него опирается. -```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). From b260b0389f7450225bd79d8c6940d2ed5f0c2943 Mon Sep 17 00:00:00 2001 From: Mike Purvis Date: Sat, 18 Apr 2026 11:51:38 -0700 Subject: [PATCH 2/5] Refine snapshot operator guidance --- docs/snapshots/index.mdx | 14 ++++++++++++++ docs/snapshots/mainnet.mdx | 9 +++++++++ docs/snapshots/testnet.mdx | 9 +++++++++ .../current/snapshots/index.mdx | 14 ++++++++++++++ .../current/snapshots/mainnet.mdx | 9 +++++++++ .../current/snapshots/testnet.mdx | 9 +++++++++ 6 files changed, 64 insertions(+) diff --git a/docs/snapshots/index.mdx b/docs/snapshots/index.mdx index 08eef14..0e740f3 100644 --- a/docs/snapshots/index.mdx +++ b/docs/snapshots/index.mdx @@ -33,6 +33,20 @@ The NEAR Infrastructure Committee and Near One recommend Epoch Sync plus decentr - For archival snapshot access, visit fastnear.com/snapshots or email snapshots@fastnear.com. - The legacy scripts in fastnear/static still exist, but the old public `latest.txt` discovery flow is no longer the supported public path here. +## Useful operator references + +- [NEAR Nodes: State Sync](https://near-nodes.io/rpc/state-sync) for the current non-snapshot bootstrap recommendation. +- [NEAR Nodes: Run an Archival Node](https://near-nodes.io/archival/run-archival-node) for archival node configuration and data-directory expectations. +- [NEAR Nodes: Split Storage for NEAR Archival Nodes](https://near-nodes.io/archival/split-storage-archival) if you are planning hot/cold storage for modern archival setups. + +## What to have ready before you request archival access + +- the network: `mainnet` or `testnet` +- the node role: validator, RPC node, or archival node +- whether you expect a single `~/.near/data` restore or a split hot/cold layout +- the target `NEAR_HOME` path and the storage layout you plan to use +- any time sensitivity, bandwidth constraints, or recovery deadline that affects the transfer plan + ## Use this section when - you are confirming the current FastNear snapshot posture for mainnet or testnet diff --git a/docs/snapshots/mainnet.mdx b/docs/snapshots/mainnet.mdx index 581394c..407c97b 100644 --- a/docs/snapshots/mainnet.mdx +++ b/docs/snapshots/mainnet.mdx @@ -32,4 +32,13 @@ If FastNear support gives you a current block height and a supported download pa - Confirm your storage layout with nearcore before you start the transfer. - Install `rclone` only if the support flow you receive actually depends on it. +## If FastNear provides a snapshot package + +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. + 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 71b45d5..8c26726 100644 --- a/docs/snapshots/testnet.mdx +++ b/docs/snapshots/testnet.mdx @@ -32,4 +32,13 @@ If FastNear support gives you a current block height and a supported download pa - Confirm your storage layout with nearcore before you start the transfer. - Install `rclone` only if the support flow you receive actually depends on it. +## If FastNear provides a snapshot package + +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. + 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/snapshots/index.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx index 874ff2b..4bd9d24 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx @@ -33,6 +33,20 @@ Infrastructure Committee и Near One рекомендуют Epoch Sync вмес - Для доступа к архивным снапшотам переходите на страницу FastNear о снапшотах или пишите на почту команды FastNear по снапшотам. - Исторические скрипты из fastnear/static по-прежнему существуют, но прежний публичный поток с `latest.txt` больше не является поддерживаемым публичным сценарием. +## Полезные материалы для операторов + +- [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 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 70728e5..cc3c948 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/mainnet.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/mainnet.mdx @@ -32,4 +32,13 @@ FastNear больше не публикует здесь публичный сц - Заранее проверьте схему хранения 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). 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 462327a..fe15cd2 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/testnet.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/testnet.mdx @@ -32,4 +32,13 @@ FastNear больше не публикует здесь публичный сц - Заранее проверьте схему хранения 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). From d77610f6930ab87a72b0327ad793266195747951 Mon Sep 17 00:00:00 2001 From: Mike Purvis Date: Sat, 18 Apr 2026 12:22:13 -0700 Subject: [PATCH 3/5] Clarify boot node refresh for snapshot bootstrap --- docs/snapshots/index.mdx | 1 + docs/snapshots/mainnet.mdx | 2 ++ docs/snapshots/testnet.mdx | 2 ++ .../docusaurus-plugin-content-docs/current/snapshots/index.mdx | 1 + .../current/snapshots/mainnet.mdx | 2 ++ .../current/snapshots/testnet.mdx | 2 ++ 6 files changed, 10 insertions(+) diff --git a/docs/snapshots/index.mdx b/docs/snapshots/index.mdx index 0e740f3..9238c23 100644 --- a/docs/snapshots/index.mdx +++ b/docs/snapshots/index.mdx @@ -35,6 +35,7 @@ The NEAR Infrastructure Committee and Near One recommend Epoch Sync plus decentr ## Useful operator references +- [NEAR Nodes: Epoch Sync](https://near-nodes.io/intro/node-epoch-sync) for the current boot-node refresh step before first start. - [NEAR Nodes: State Sync](https://near-nodes.io/rpc/state-sync) for the current non-snapshot bootstrap recommendation. - [NEAR Nodes: Run an Archival Node](https://near-nodes.io/archival/run-archival-node) for archival node configuration and data-directory expectations. - [NEAR Nodes: Split Storage for NEAR Archival Nodes](https://near-nodes.io/archival/split-storage-archival) if you are planning hot/cold storage for modern archival setups. diff --git a/docs/snapshots/mainnet.mdx b/docs/snapshots/mainnet.mdx index 407c97b..dc15144 100644 --- a/docs/snapshots/mainnet.mdx +++ b/docs/snapshots/mainnet.mdx @@ -16,6 +16,8 @@ The free nearcore data snapshots were deprecated on June 1, 2025. 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. +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`. + ## 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. diff --git a/docs/snapshots/testnet.mdx b/docs/snapshots/testnet.mdx index 8c26726..6a400e2 100644 --- a/docs/snapshots/testnet.mdx +++ b/docs/snapshots/testnet.mdx @@ -16,6 +16,8 @@ The free nearcore data snapshots were deprecated on June 1, 2025. 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. +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`. + ## For archival testnet 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. 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 4bd9d24..bf9fd2c 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx @@ -35,6 +35,7 @@ Infrastructure Committee и Near One рекомендуют Epoch Sync вмес ## Полезные материалы для операторов +- [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) — если вы планируете современную схему с раздельным горячим и холодным хранилищем. 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 cc3c948..b1a7093 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/mainnet.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/mainnet.mdx @@ -16,6 +16,8 @@ FastNear больше не публикует здесь публичный сц Используйте [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), чтобы получить актуальную информацию о доступности, высоте блока и требованиях к хранилищу. 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 fe15cd2..6cfe284 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/testnet.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/testnet.mdx @@ -16,6 +16,8 @@ FastNear больше не публикует здесь публичный сц Используйте [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), чтобы получить актуальную информацию о доступности, высоте блока и требованиях к хранилищу. From 114bd84c6a89ca0ccae2c538b70d25bd50f30591 Mon Sep 17 00:00:00 2001 From: Mike Purvis Date: Sat, 25 Apr 2026 12:19:37 -0700 Subject: [PATCH 4/5] regen: snapshot ru artifacts + sweep stale main-side regen Snapshot pages reflect the new "Current status / Useful operator references / What to have ready" structure. Other static/ru/* files are regenerator catching up to main's already-authored content (no source changes outside the snapshot/tx commits). Co-Authored-By: Claude Opus 4.7 (1M context) --- static/ru/api/examples.md | 38 +- static/ru/api/examples/index.md | 38 +- static/ru/fastdata/kv/examples.md | 23 +- static/ru/fastdata/kv/examples/index.md | 23 +- static/ru/guides/llms.txt | 6 +- static/ru/llms-full.txt | 471 +++++++----------------- static/ru/llms.txt | 6 +- static/ru/neardata/examples.md | 36 +- static/ru/neardata/examples/index.md | 36 +- static/ru/rpc/examples.md | 41 +-- static/ru/rpc/examples/index.md | 41 +-- static/ru/snapshots.md | 59 ++- static/ru/snapshots/index.md | 59 ++- static/ru/snapshots/mainnet.md | 134 ++----- static/ru/snapshots/mainnet/index.md | 134 ++----- static/ru/snapshots/testnet.md | 83 ++--- static/ru/snapshots/testnet/index.md | 83 ++--- static/ru/transfers/examples.md | 20 +- static/ru/transfers/examples/index.md | 20 +- static/ru/tx/examples.md | 37 +- static/ru/tx/examples/index.md | 37 +- 21 files changed, 381 insertions(+), 1044 deletions(-) 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..57b18d7 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/ Date: Sat, 25 Apr 2026 12:24:30 -0700 Subject: [PATCH 5/5] i18n(ru): backtick boot_nodes config field in snapshot index Russian terminology audit flagged "boot nodes" as suspicious untranslated English. Match the precedent set in mainnet.mdx and testnet.mdx, which refer to the config field as `boot_nodes` (backticked). The link is about updating that field before first start, so the config-field form is the natural reference and passes the i18n gate. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../docusaurus-plugin-content-docs/current/snapshots/index.mdx | 2 +- static/ru/llms-full.txt | 2 +- static/ru/snapshots.md | 2 +- static/ru/snapshots/index.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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 bf9fd2c..39d70ed 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/snapshots/index.mdx @@ -35,7 +35,7 @@ Infrastructure Committee и Near One рекомендуют Epoch Sync вмес ## Полезные материалы для операторов -- [NEAR Nodes: Epoch Sync](https://near-nodes.io/intro/node-epoch-sync) — актуальный шаг для обновления списка boot nodes перед первым запуском. +- [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) — если вы планируете современную схему с раздельным горячим и холодным хранилищем. diff --git a/static/ru/llms-full.txt b/static/ru/llms-full.txt index 57b18d7..0013428 100644 --- a/static/ru/llms-full.txt +++ b/static/ru/llms-full.txt @@ -2415,7 +2415,7 @@ Infrastructure Committee и Near One рекомендуют Epoch Sync вмес ## Полезные материалы для операторов -- [NEAR Nodes: Epoch Sync](https://near-nodes.io/intro/node-epoch-sync) — актуальный шаг для обновления списка boot nodes перед первым запуском. +- [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) — если вы планируете современную схему с раздельным горячим и холодным хранилищем. diff --git a/static/ru/snapshots.md b/static/ru/snapshots.md index 9cfce69..0167460 100644 --- a/static/ru/snapshots.md +++ b/static/ru/snapshots.md @@ -19,7 +19,7 @@ Infrastructure Committee и Near One рекомендуют Epoch Sync вмес ## Полезные материалы для операторов -- [NEAR Nodes: Epoch Sync](https://near-nodes.io/intro/node-epoch-sync) — актуальный шаг для обновления списка boot nodes перед первым запуском. +- [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) — если вы планируете современную схему с раздельным горячим и холодным хранилищем. diff --git a/static/ru/snapshots/index.md b/static/ru/snapshots/index.md index 9cfce69..0167460 100644 --- a/static/ru/snapshots/index.md +++ b/static/ru/snapshots/index.md @@ -19,7 +19,7 @@ Infrastructure Committee и Near One рекомендуют Epoch Sync вмес ## Полезные материалы для операторов -- [NEAR Nodes: Epoch Sync](https://near-nodes.io/intro/node-epoch-sync) — актуальный шаг для обновления списка boot nodes перед первым запуском. +- [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) — если вы планируете современную схему с раздельным горячим и холодным хранилищем.