--- outline: [2, 3] --- # Использование Codex Мы можем взаимодействовать с Codex, используя [REST API](/developers/api). В этом документе показаны несколько полезных примеров. Также мы можем использовать [Пользовательский интерфейс приложения Codex](https://app.codex.storage). Интерпретатор командной строки работает немного по-разному на [Linux/macOS](#linux-macos) и [Windows](#windows), поэтому используйте инструкции для вашей ОС. ## Linux/macOS ### Обзор 1. [Отладка](#debug) 2. [Загрузка файла](#upload-a-file) 3. [Скачивание файла](#download-a-file) 4. [Локальные данные](#local-data) 5. [Создание доступности хранилища](#create-storage-availability) 6. [Покупка хранилища](#purchase-storage) 7. [Просмотр статуса покупки](#view-purchase-status) ### Отладка Простой способ проверить, что ваш узел запущен и работает: ```shell curl http://localhost:8080/api/codex/v1/debug/info \ -w '\n' ``` Это вернет JSON-структуру с множеством информации о вашем локальном узле. Она содержит информацию о пирах, которая может быть полезна при устранении проблем с подключением. ### Загрузка файла > [!Warning] > После загрузки файла в Codex другие узлы в сети могут его скачать. Пожалуйста, не загружайте ничего, что вы не хотите, чтобы другие видели, или правильно зашифруйте ваши данные *перед загрузкой*. ```shell curl -X POST \ http://localhost:8080/api/codex/v1/data \ -H 'Content-Type: application/octet-stream' \ -w '\n' \ -T ``` При успешной загрузке вы получите CID. Его можно использовать для скачивания файла с любого узла в сети. > [!TIP] > Вы на [сервере Discord Codex](https://discord.gg/codex-storage)? Опубликуйте ваш CID в канале [# :wireless: | share-cids](https://discord.com/channels/895609329053474826/1278383098102284369), посмотрите, смогут ли другие его скачать. Codex пока не предоставляет метаданные файлов, поэтому если вы хотите, чтобы другие могли открыть ваш файл, скажите им, какое расширение ему дать. ### Скачивание файла Когда у вас есть CID данных, которые вы хотите скачать, вы можете использовать следующие команды: ```shell # вставьте ваш CID из предыдущего шага между кавычками CID="..." ``` ```shell curl "http://localhost:8080/api/codex/v1/data/${CID}/network/stream" \ -o "${CID}.png" ``` Пожалуйста, используйте правильное расширение для скачанного файла, потому что Codex пока не хранит информацию о типе содержимого или расширении. ### Локальные данные Вы можете просмотреть, какие наборы данных в настоящее время хранятся вашим узлом: ```shell curl http://localhost:8080/api/codex/v1/data \ -w '\n' ``` ### Создание доступности хранилища > [!WARNING] > Этот шаг требует, чтобы Codex был запущен с опцией [`prover`](/learn/run#codex-storage-node). Чтобы начать продавать пространство для хранения в сети, вы должны настроить ваш узел с помощью следующей команды. После настройки узел будет отслеживать запросы на хранение в блокчейне и автоматически вступать в контракты, соответствующие этим спецификациям. Для вступления и поддержания контрактов на хранение ваш узел должен предоставлять доказательства хранения с нулевым разглашением. Расчет этих доказательств увеличит использование CPU и RAM Codex. ```shell curl -X POST \ http://localhost:8080/api/codex/v1/sales/availability \ -H 'Content-Type: application/json' \ -w '\n' \ -d '{ "totalSize": "8000000", "duration": "7200", "minPricePerBytePerSecond": "1000", "totalCollateral": "80000000" }' ``` Для описания каждого параметра, пожалуйста, просмотрите [спецификацию](https://api.codex.storage/#tag/Marketplace/operation/offerStorage). ### Покупка хранилища Чтобы купить пространство для хранения в сети, сначала вы должны загрузить ваши данные. После получения CID используйте следующее для создания запроса на хранение. Установите ваш CID: ```shell # вставьте ваш CID из предыдущего шага между кавычками CID="..." echo "CID: ${CID}" ``` Затем вы можете выполнить: ```shell curl -X POST \ "http://localhost:8080/api/codex/v1/storage/request/${CID}" \ -w '\n' \ -d '{ "duration": "3600", "pricePerBytePerSecond": "2000", "proofProbability": "5", "expiry": "1200", "nodes": 5, "tolerance": 2, "collateralPerByte": "1" }' ``` Для описания каждого параметра, пожалуйста, просмотрите [спецификацию](https://api.codex.storage/#tag/Marketplace/operation/createStorageRequest). При успешном выполнении этот запрос вернет Purchase-ID. ### Просмотр статуса покупки Используя Purchase-ID, вы можете проверить статус вашего контракта на хранение: ```shell # вставьте ваш PURCHASE_ID из предыдущего шага между кавычками PURCHASE_ID="..." ``` Затем: ```shell curl "http://localhost:8080/api/codex/v1/storage/purchases/${PURCHASE_ID}" \ -w '\n' ``` Это отобразит информацию о состоянии и ошибках для вашей покупки. | Состояние | Описание | |------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Pending | Запрос ожидает подтверждения в блокчейне. | | Submitted | Запрос находится в блокчейне. Хосты теперь могут попытаться скачать данные. | | Started | Хосты скачали данные и предоставили доказательство хранения. | | Failed | Запрос был начат, но (слишком много) хостов не смогли предоставить доказательство хранения вовремя. Хотя данные все еще могут быть доступны в сети, для целей покупки они считаются утерянными. | | Finished | Запрос был успешно начат, и срок действия истек. | | Expired | (Недостаточно) хостов предоставили доказательство хранения до истечения срока действия запроса. | | Errored | Неудачное состояние. Поле 'error' должно рассказать больше. | ## Windows ### Обзор {#overview-windows} 1. [Отладка](#debug-windows) 2. [Загрузка файла](#upload-a-file-windows) 3. [Скачивание файла](#download-a-file-windows) 4. [Локальные данные](#local-data-windows) 5. [Создание доступности хранилища](#create-storage-availability-windows) 6. [Покупка хранилища](#purchase-storage-windows) 7. [Просмотр статуса покупки](#view-purchase-status-windows) ### Отладка {#debug-windows} Простой способ проверить, что ваш узел запущен и работает: ```batch curl http://localhost:8080/api/codex/v1/debug/info ``` Это вернет JSON-структуру с множеством информации о вашем локальном узле. Она содержит информацию о пирах, которая может быть полезна при устранении проблем с подключением. ### Загрузка файла {#upload-a-file-windows} > [!Warning] > После загрузки файла в Codex другие узлы в сети могут его скачать. Пожалуйста, не загружайте ничего, что вы не хотите, чтобы другие видели, или правильно зашифруйте ваши данные *перед загрузкой*. ```batch curl -X POST ^ http://localhost:8080/api/codex/v1/data ^ -H "Content-Type: application/octet-stream" ^ -T ``` При успешной загрузке вы получите CID. Его можно использовать для скачивания файла с любого узла в сети. > [!TIP] > Вы на [сервере Discord Codex](https://discord.gg/codex-storage)? Опубликуйте ваш CID в канале [# :wireless: | share-cids](https://discord.com/channels/895609329053474826/1278383098102284369), посмотрите, смогут ли другие его скачать. Codex пока не предоставляет метаданные файлов, поэтому если вы хотите, чтобы другие могли открыть ваш файл, скажите им, какое расширение ему дать. ### Скачивание файла {#download-a-file-windows} Когда у вас есть CID данных, которые вы хотите скачать, вы можете использовать следующие команды: ```batch :: вставьте ваш CID из предыдущего шага между кавычками set CID="..." ``` ```batch curl "http://localhost:8080/api/codex/v1/data/%CID%/network/stream" ^ -o "%CID%.png" ``` Пожалуйста, используйте правильное расширение для скачанного файла, потому что Codex пока не хранит информацию о типе содержимого или расширении. ### Локальные данные {#local-data-windows} Вы можете просмотреть, какие наборы данных в настоящее время хранятся вашим узлом: ```batch curl http://localhost:8080/api/codex/v1/data ``` ### Создание доступности хранилища {#create-storage-availability-windows} > [!WARNING] > Этот шаг требует, чтобы Codex был запущен с опцией [`prover`](/learn/run#codex-storage-node). Чтобы начать продавать пространство для хранения в сети, вы должны настроить ваш узел с помощью следующей команды. После настройки узел будет отслеживать запросы на хранение в блокчейне и автоматически вступать в контракты, соответствующие этим спецификациям. Для вступления и поддержания контрактов на хранение ваш узел должен предоставлять доказательства хранения с нулевым разглашением. Расчет этих доказательств увеличит использование CPU и RAM Codex. ```batch curl -X POST ^ http://localhost:8080/api/codex/v1/sales/availability ^ -H "Content-Type: application/json" ^ -d "{""totalSize"": ""8000000"", ""duration"": ""7200"", ""minPricePerBytePerSecond"": ""1000"", ""totalCollateral"": ""80000000""}" ``` Для описания каждого параметра, пожалуйста, просмотрите [спецификацию](https://api.codex.storage/#tag/Marketplace/operation/offerStorage). ### Покупка хранилища {#purchase-storage-windows} Чтобы купить пространство для хранения в сети, сначала вы должны загрузить ваши данные. После получения CID используйте следующее для создания запроса на хранение. Установите ваш CID: ```batch :: вставьте ваш CID из предыдущего шага между кавычками set CID="..." echo CID: %CID% ``` Затем вы можете выполнить: ```batch curl -X POST ^ "http://localhost:8080/api/codex/v1/storage/request/%CID%" ^ -H "Content-Type: application/json" ^ -d "{""duration"": ""3600"",""pricePerBytePerSecond"": ""2000"", ""proofProbability"": ""5"", ""expiry"": ""1200"", ""nodes"": 5, ""tolerance"": 2, ""**collateralPerByte**"": ""1""}" ``` Для описания каждого параметра, пожалуйста, просмотрите [спецификацию](https://api.codex.storage/#tag/Marketplace/operation/createStorageRequest). При успешном выполнении этот запрос вернет Purchase-ID. ### Просмотр статуса покупки {#view-purchase-status-windows} Используя Purchase-ID, вы можете проверить статус вашего контракта на хранение: ```batch :: вставьте ваш PURCHASE_ID из предыдущего шага между кавычками set PURCHASE_ID="..." ``` Затем: ```batch curl "http://localhost:8080/api/codex/v1/storage/purchases/%PURCHASE_ID%" ``` Это отобразит информацию о состоянии и ошибках для вашей покупки. | Состояние | Описание | |------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Pending | Запрос ожидает подтверждения в блокчейне. | | Submitted | Запрос находится в блокчейне. Хосты теперь могут попытаться скачать данные. | | Started | Хосты скачали данные и предоставили доказательство хранения. | | Failed | Запрос был начат, но (слишком много) хостов не смогли предоставить доказательство хранения вовремя. Хотя данные все еще могут быть доступны в сети, для целей покупки они считаются утерянными. | | Finished | Запрос был успешно начат, и срок действия истек. | | Expired | (Недостаточно) хостов предоставили доказательство хранения до истечения срока действия запроса. | | Errored | Неудачное состояние. Поле 'error' должно рассказать больше. | ## Known issues 1. We add a new line to the API calls to get more readable output, please check [[rest] Add line ending on responses #771](https://github.com/codex-storage/nim-codex/issues/771) for more details.