Gamma 是什么
Gamma 是 Bittensor 链的一项功能,不是需要安装的应用或钱包。每个子网都有自己的 gamma,一个 gamma 价值一美元。您用自己的 coldkey 将 SN25 的 gamma 铸造到某个 hotkey 下的存款中,URnetwork 从这笔存款中扣除您所购买内容的价格。
铸造会用您的 TAO 买入 SN25 alpha 并将其销毁。URnetwork 只接受 SN25 gamma。
其余每一步都是 API 调用,因此脚本或智能体可以完成全部流程:读取条款、发起购买、查询状态以及选择自动扣费。
您需要准备
- 一个 URnetwork 账户,以及该账户的 bearer 令牌(第 1 步)。
- 一个 Bittensor coldkey,其中的 TAO 足以支付价格和交易手续费。
btcli,自 11.3.2 版起随bittensorPython 包一同提供:pip install "bittensor>=11.3.2"
分步操作
所有调用都发送到 https://api.bringyour.com。每个字段和错误的说明见 API 参考。
获取 bearer 令牌
需要令牌的调用以
Authorization: Bearer <token>的形式发送令牌。令牌可以是网络 JWT,也可以是 API key。登录后,您会在
network.by_jwt中获得网络 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 key 在您删除之前一直有效。用 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 key,会拒绝来自
POST /network/auth-client的客户端 JWT。读取条款
读取条款不需要令牌。条款列出子网、URnetwork 的服务 hotkey 和支出账户、每个套餐和数据包以 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是铸造等值于价格的 gamma 大约需要的 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是 URnetwork 在子网 25 上为您的账户分配的 hotkey。您向它铸造,之后的每次购买也都使用它。它不是收款地址:切勿向它发送 TAO。amount_gamma是以 gamma 计的价格,正是我们的扣款所取的金额。reference是此次购买专属的 32 字节引用标识,我们的扣款会在链上携带它。min_daily_cap_gamma是能让此次购买成功扣款的最小每日支出上限,auto_min_daily_cap_gamma是能让每笔自动扣费成功扣款的最小上限。status_token用于读取此次购买的状态。请妥善保密,不要放进 URL 或日志。- 如果铸造因
NonAssociatedColdKey失败,说明该 hotkey 下的存款已归另一个 coldkey 所有。请附上coldkey(您用于铸造的 coldkey 的 SS58 地址)重新请求,以获得该 coldkey 可用的 hotkey。 - 购买在
expires_at之前保持开放。再次请求同一商品会返回这笔开放的购买,并附带新的status_token。
将 gamma 铸造到您的存款
铸造前,请先阅读下方的注意事项。
这是唯一不经过 API 的一步,也是唯一需要签名的一步。请先预览铸造:加上
--dry-run时,btcli 会显示您将获得的结果,且不提交任何内容。btcli tx mint-gamma --netuid 25 --hotkey <deposit_hotkey> --amount-tao <TAO> \ --service-hotkey 5CyQFykVpfa9xgZVGgBsiNUpjbo1EihBTSkPvDC1FZbL1wxG --dry-run然后用您的 coldkey 签名完成铸造:命令相同,只是用
-w <your_coldkey>替换--dry-run。购买响应会以mint_dry_run_command和mint_command给出这两条命令,并已填好您的 hotkey 和金额。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 中,
bittensorSDK 可以预览并完成同样的铸造: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", … }pendingdeposit_hotkey下还没有 gamma。seen- 存款中有 gamma,但还不能支付:
remaining_gamma是还需铸造的数量,或由error.code说明是什么阻止了扣款。 confirming- 存款已足以支付价格。我们的扣款正在进行,或已上链并正在入账。
paid- 已入账,依据是我们在区块
spent_block中最终确认的扣款。余额码在balance_code中。 expiredexpires_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 下没有存款。请向
deposit_hotkey铸造。
被跳过的扣款不会扣走任何东西,也不会买到任何东西。只有在您的存款发生变化后我们才会重试:例如您铸造了更多、提高了上限或修正了支出账户。
选择自动扣费
使用 Gamma 支付会为您的账户开启自动续订和自动充值。请用网络 JWT 或 API key 读取和修改它们;未提供的字段保持不变。
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 在链上都是公开的。
- 请确认您是在向 URnetwork 付款:
btcli query services --netuid 25会列出 SN25 的服务,我们的服务标记为owner。 - 铸造会销毁 SN25 alpha。URnetwork 不会收到 TAO。