Оплата через Gamma
Покупайте UR Pro и пакеты данных за gamma SN25 полностью через API URnetwork. Единственный шаг вне API — выпуск gamma, который вы подписываете своим coldkey.
Что такое Gamma
Gamma — это функция блокчейна Bittensor, а не приложение и не кошелёк, который нужно устанавливать. У каждой подсети своя gamma, и одна gamma стоит один доллар США. Вы выпускаете gamma SN25 своим coldkey на депозит, привязанный к hotkey, и URnetwork списывает с этого депозита цену того, что вы покупаете.
При выпуске на ваши TAO покупается alpha SN25, которая затем сжигается. URnetwork принимает только gamma SN25.
Все остальные шаги — вызовы API, поэтому всё может сделать скрипт или агент: прочитать условия, начать покупку, проверить её статус и выбрать автоматические списания.
Что понадобится
- Аккаунт URnetwork и bearer-токен для него (шаг 1).
- Coldkey Bittensor, на котором достаточно TAO для цены и комиссии за транзакцию.
btcli, который входит в Python-пакетbittensorначиная с версии 11.3.2:pip install "bittensor>=11.3.2"
Шаг за шагом
Все вызовы идут на https://api.bringyour.com. Все поля и ошибки описаны здесь: Справочник API.
Получите bearer-токен
Вызовы, которым нужен токен, передают его как
Authorization: Bearer <token>. Токен — это JWT сети или API-ключ.При входе вы получаете JWT сети в
network.by_jwt. Например, с паролем:curl -X POST https://api.bringyour.com/auth/login-with-password \ -H "Content-Type: application/json" \ -d '{"user_auth":"me@example.com","password":"<password>"}'API-ключ действует, пока вы его не удалите. Создайте его с помощью JWT: он начинается с
urn_, и этот ответ — единственный раз, когда вы его видите.curl -X POST https://api.bringyour.com/account/api-key \ -H "Authorization: Bearer <network_jwt>" \ -H "Content-Type: application/json" \ -d '{"name":"gamma"}'{ "id": "…", "api_key": "urn_…", "name": "gamma" }Настройки на шаге 6 принимают JWT сети или API-ключ и отклоняют JWT клиента из
POST /network/auth-client.Прочитайте условия
Для условий токен не нужен. В них указаны подсеть, сервисный hotkey и расходный аккаунт URnetwork, каждый тариф и пакет данных с ценой в gamma и дневным лимитом, который для него нужен депозиту, а также работает ли выпуск прямо сейчас.
curl https://api.bringyour.com/pay/gamma/terms{ "available": true, "mint_available": true, "netuid": 25, "service_hotkey": "5CyQFykVpfa9xgZVGgBsiNUpjbo1EihBTSkPvDC1FZbL1wxG", "spender": "5EUQU938kFzJsVBjn9ch5RNNG4191j7mSz5Djf5vghrmWgUC", "max_price_age_blocks": 300, "min_mint_gamma": "0.1", "items": [ { "plan": "monthly", "price_gamma": "5", "min_daily_cap_gamma": "5", "renews": true, "indicative_tao": "0.023645" }, { "plan": "yearly", "price_gamma": "40", "min_daily_cap_gamma": "40", "renews": true, "indicative_tao": "0.189165" }, { "item_id": "data_1tib", "price_gamma": "3", "min_daily_cap_gamma": "3", "renews": false, "indicative_tao": "0.014187" }, { "item_id": "data_10tib", "price_gamma": "20", "min_daily_cap_gamma": "20", "renews": false, "indicative_tao": "0.094583" }, { "item_id": "data_256gib", "price_gamma": "0.75", "min_daily_cap_gamma": "0.75", "renews": false, "indicative_tao": "0.003547" } ], "auto_min_daily_cap_gamma": "40", … }availableравноfalse, пока покупки выключены, аunavailable_reasonобъясняет почему.mint_availableравноfalse, пока выпуск выключен, аmint_unavailable_reasonобъясняет почему:gamma_disabled,subnet_gamma_disabledилиprice_stale. Депозит, на котором уже есть сумма цены, всё равно может оплатить.indicative_tao— примерно столько TAO нужно для выпуска на сумму цены: собственная симуляция выпуска в блокчейне плюс 3%.
Начните покупку
Отправьте нужный
plan:monthly,yearlyилиyearly_onboardingдля приветственного предложения, пока его можно активировать. Для пакета данных вместо этого отправьтеitem_id:data_1tib,data_10tibилиdata_256gib(256 GiB за $0.75, продаётся только за Gamma и через x402).curl -X POST https://api.bringyour.com/pay/gamma/intent \ -H "Authorization: Bearer urn_..." \ -H "Content-Type: application/json" \ -d '{"plan":"yearly"}'Чтобы получить пакет данных в виде кода баланса, добавьте
"delivery":"code". Сemailмы также отправим код на почту.curl -X POST https://api.bringyour.com/pay/gamma/intent \ -H "Authorization: Bearer urn_..." \ -H "Content-Type: application/json" \ -d '{"item_id":"data_1tib","delivery":"code","email":"me@example.com"}'Ответ, например:
{ "intent_id": "0b6f2f7e-4f1c-4a8e-9d1a-1f6a2b3c4d5e", "status_token": "<status_token>", "plan": "yearly", "amount_gamma": "40", "reference": "0x5d0c6b9e3e3c5c0a5b8f2a0f1d4a3e9b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f", "netuid": 25, "deposit_hotkey": "<deposit_hotkey>", "service_hotkey": "5CyQFykVpfa9xgZVGgBsiNUpjbo1EihBTSkPvDC1FZbL1wxG", "min_daily_cap_gamma": "40", "auto_min_daily_cap_gamma": "40", "min_mint_gamma": "0.1", "indicative_tao": "0.189165", "mint_available": true, "mint_dry_run_command": "btcli tx mint-gamma --netuid 25 --hotkey <deposit_hotkey> … --dry-run", "mint_command": "btcli tx mint-gamma --netuid 25 --hotkey <deposit_hotkey> … -w <your_coldkey>", "expires_at": "2026-11-12T12:00:00Z", … }deposit_hotkey— hotkey, который URnetwork назначил вашему аккаунту в подсети 25. Вы выпускаете gamma на него, и он служит и для всех последующих покупок. Это не адрес для оплаты: никогда не отправляйте на него TAO.amount_gamma— цена в gamma, ровно столько забирает наше списание.reference— собственный 32-байтовый идентификатор этой покупки, который наше списание несёт в блокчейне.min_daily_cap_gamma— наименьший дневной лимит расходов, при котором проходит списание за эту покупку, аauto_min_daily_cap_gamma— наименьший, при котором проходит любое автоматическое списание.status_tokenпозволяет читать статус этой покупки. Храните его в секрете, не передавайте в URL и не пишите в логи.- Если выпуск завершается ошибкой
NonAssociatedColdKey, депозит на этом hotkey уже принадлежит другому coldkey. Запросите снова сcoldkey— SS58-адресом coldkey, которым вы выпускаете, — и получите hotkey, который он может использовать. - Покупка остаётся открытой до
expires_at. Повторный запрос того же товара возвращает открытую покупку с новымstatus_token.
Выпустите gamma на депозит
Перед выпуском прочитайте предупреждения ниже.
Это единственный шаг вне API и единственная подпись. Сначала посмотрите выпуск заранее: с
--dry-runbtcli показывает, что вы получите, и ничего не отправляет.btcli tx mint-gamma --netuid 25 --hotkey <deposit_hotkey> --amount-tao <TAO> \ --service-hotkey 5CyQFykVpfa9xgZVGgBsiNUpjbo1EihBTSkPvDC1FZbL1wxG --dry-runЗатем выпустите gamma, подписав своим coldkey: та же команда с
-w <your_coldkey>вместо--dry-run. Покупка даёт обе команды с вашим hotkey и уже подставленной суммой —mint_dry_run_commandиmint_command.btcli tx mint-gamma --netuid 25 --hotkey <deposit_hotkey> --amount-tao <TAO> \ --service-hotkey 5CyQFykVpfa9xgZVGgBsiNUpjbo1EihBTSkPvDC1FZbL1wxG -w <your_coldkey>С
--service-hotkeyновый депозит указывает расходный аккаунт URnetwork, а депозит, где указан другой, отклоняется. Выпустите не меньше цены, примерноindicative_taoTAO; выпуск меньшеmin_mint_gammagamma не пройдёт.Можно также открыть депозит с дневным лимитом расходов —
--daily-spend-cap-gamma <gamma>. Сделайте его не меньшеmin_daily_cap_gammaи не меньшеauto_min_daily_cap_gamma, если оставляете автоматические списания. Чтобы позже изменить лимит:btcli gamma set-cap --netuid 25 --hotkey <deposit_hotkey> \ --daily-spend-cap-gamma <gamma> -w <your_coldkey>Из Python SDK
bittensorзаранее показывает тот же выпуск и выполняет его:import asyncio import bittensor as bt async def main(): wallet = bt.Wallet(name="<your_coldkey>") mint = bt.MintGamma( netuid=25, hotkey_ss58="<deposit_hotkey>", amount_tao="<TAO>", service_hotkey_ss58="5CyQFykVpfa9xgZVGgBsiNUpjbo1EihBTSkPvDC1FZbL1wxG", ) async with bt.Subtensor() as client: plan = await client.plan(mint, wallet) # the dry run: submits nothing print(plan.preview) await client.execute(mint, wallet) asyncio.run(main())Проверьте статус
Запрашивайте статус покупки по её
status_token; этому вызову bearer-токен не нужен. Мы зачисляем покупку только тогда, когда наше собственное списание с еёreferenceфинализировано в блокчейне, и никогда — только по выпуску.curl -X POST https://api.bringyour.com/pay/gamma/status \ -H "Content-Type: application/json" \ -d '{"intent_id":"<intent_id>","status_token":"<status_token>"}'{ "intent_id": "0b6f2f7e-4f1c-4a8e-9d1a-1f6a2b3c4d5e", "status": "paid", "amount_gamma": "40", "deposit_balance_gamma": "10", "remaining_gamma": "0", "spent_block": 9479641, "credited_at": "2026-11-11T12:01:12Z", … }pending- На
deposit_hotkeyпока нет gamma. seen- На депозите есть gamma, но оплатить пока нельзя:
remaining_gamma— сколько ещё нужно выпустить, илиerror.codeобъясняет, что мешает списанию. confirming- Депозит покрывает цену. Наше списание в пути или уже прошло, и зачисление записывается.
paid- Зачислено по нашему финализированному списанию в блоке
spent_block. Код баланса — вbalance_code. expired- До
expires_atничего не было списано. Неизрасходованная gamma остаётся на депозите для следующей покупки. review- Этим занимается кто-то из нашей команды;
review_reasonобъясняет почему. unknown- Такой покупки нет, или токен не совпадает.
Когда депозит не может оплатить или блокчейн пропускает наше списание,
error.codeобъясняет почему:insufficient_gamma- На депозите было меньше цены. Выпустите ещё.
daily_cap_too_low- Дневной лимит депозита ниже цены. Поднимите его хотя бы до
min_daily_cap_gamma. daily_cap_exceeded- Сегодняшние списания превысили бы дневной лимит депозита. Поднимите лимит.
wrong_spender- В депозите указан другой расходный аккаунт. Верните аккаунт URnetwork командой ниже.
btcli gamma set-spender --netuid 25 --hotkey <deposit_hotkey> \ --service-hotkey 5CyQFykVpfa9xgZVGgBsiNUpjbo1EihBTSkPvDC1FZbL1wxG \ -w <your_coldkey> no_deposit- На этом hotkey нет депозита. Выпустите gamma на
deposit_hotkey.
Пропущенное списание ничего не забирает и ничего не покупает. Мы повторяем его только после того, как ваш депозит изменится: когда вы выпустите ещё, поднимете лимит или исправите расходный аккаунт.
Выберите автоматические списания
Оплата через Gamma включает для вашего аккаунта автоматическое продление и пополнение. Читайте и меняйте их с JWT сети или API-ключом; поле, которое вы не указали, остаётся как есть.
curl https://api.bringyour.com/pay/gamma/settings \ -H "Authorization: Bearer urn_..." curl -X POST https://api.bringyour.com/pay/gamma/settings \ -H "Authorization: Bearer urn_..." \ -H "Content-Type: application/json" \ -d '{"auto_renew":false,"monthly_limit_gamma":"20"}'auto_renew- В конце каждого срока тарифа, оплаченного Gamma, списывать цену тарифа с депозита, если только вы не оплачиваете Pro другим способом после этого срока. Год по приветственному предложению продлевается по годовой цене. Включено по умолчанию.
auto_topup- Когда у вас заканчиваются данные, покупать
topup_item_id, не чаще раза в час. Когда бесплатный аккаунт достигает лимита клиентов, покупать Pro, не чаще раза в день; автоматическое повышение тарифа никогда не меняет то, как ваша сеть предоставляет пропускную способность. Включено по умолчанию. topup_item_iddata_1tib(по умолчанию),data_10tibилиdata_256gib.monthly_limit_gamma- Максимум, который автоматические списания забирают за календарный месяц, по UTC.
""или"0"снимает лимит.
У каждого автоматического списания свой идентификатор, и по каждому приходит квитанция на почту. Если блокчейн его пропускает, вы получаете одно уведомление, а повтор будет только после изменения депозита.
Перед выпуском
Gamma нельзя вернуть или перевести. Мы взимаем только цену того, что вы покупаете. Неизрасходованная Gamma остаётся на вашем депозите и работает только в SN25.
Ликвидация подсети уничтожает её gamma.
Если вы их не отключите, мы автоматически списываем с того же депозита: тарифы, оплаченные Gamma, продлеваются в конце каждого срока, когда у вас заканчиваются данные, добавляется пакет данных (1 TiB, если вы не выберете другой), а бесплатный аккаунт, достигший лимита клиентов, переводится на Pro.
- Выпуск не проходит, пока цена TAO/USD в блокчейне старше 300 блоков, это около часа. Тогда в условиях
mint_availableравноfalse, с причинойprice_stale. А пока платите криптовалютой или через x402. - Hotkey депозита — не адрес для оплаты. Никогда не отправляйте на него TAO. Если отправили, напишите на support@ur.io, чтобы вам их вернули.
- Списание забирает всю сумму или ничего, поэтому дневной лимит должен быть не меньше цены, а для автоматических списаний — не меньше
auto_min_daily_cap_gamma. У депозита нет лимита, пока вы его не установите. - Депозит и coldkey, который выпустил на него gamma, публично видны в блокчейне.
- Проверьте, что платите URnetwork:
btcli query services --netuid 25показывает сервисы SN25, и наш отмечен какowner. - Выпуск сжигает alpha SN25. URnetwork не получает TAO.