Paga con Gamma
Compra UR Pro y paquetes de datos con gamma de SN25, todo a través de la API de URnetwork. El único paso fuera de ella es la acuñación que firmas con tu propia coldkey.
Qué es Gamma
Gamma es una función de la cadena de Bittensor, no una app ni una billetera que instalar. Cada subred tiene su propio gamma, y un gamma vale un dólar estadounidense. Acuñas el gamma de SN25 con tu coldkey en un depósito asociado a una hotkey, y URnetwork cobra de ese depósito el precio de lo que compras.
Al acuñar se compra alpha de SN25 con tu TAO y se quema. URnetwork solo acepta gamma de SN25.
Todos los demás pasos son llamadas a la API, así que un script o un agente puede hacerlo todo: leer los términos, iniciar una compra, consultar su estado y elegir los cobros automáticos.
Qué necesitas
- Una cuenta de URnetwork y un token bearer para ella (paso 1).
- Una coldkey de Bittensor con suficiente TAO para el precio y la comisión de la transacción.
btcli, que viene con el paquete de Pythonbittensordesde la versión 11.3.2:pip install "bittensor>=11.3.2"
Paso a paso
Todas las llamadas van a https://api.bringyour.com. Cada campo y cada error están en la Referencia de la API.
Consigue un token bearer
Las llamadas que necesitan un token lo envían como
Authorization: Bearer <token>. El token es un JWT de red o una clave de API.Al iniciar sesión obtienes un JWT de red, en
network.by_jwt. Por ejemplo, con una contraseña:curl -X POST https://api.bringyour.com/auth/login-with-password \ -H "Content-Type: application/json" \ -d '{"user_auth":"me@example.com","password":"<password>"}'Una clave de API funciona hasta que la eliminas. Crea una con el JWT: empieza por
urn_, y esta respuesta es la única vez que la ves.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" }Los ajustes del paso 6 aceptan un JWT de red o una clave de API, y rechazan un JWT de cliente de
POST /network/auth-client.Lee los términos
Los términos no necesitan token. Indican la subred, la hotkey de servicio y la cuenta de gasto de URnetwork, cada plan y paquete de datos con su precio en gamma y el límite diario que un depósito necesita para él, y si la acuñación funciona ahora mismo.
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", … }availableesfalsemientras las compras están desactivadas, yunavailable_reasondice por qué.mint_availableesfalsemientras la acuñación está desactivada, ymint_unavailable_reasondice por qué:gamma_disabled,subnet_gamma_disabledoprice_stale. Un depósito que ya contiene el precio puede pagar igualmente.indicative_taoes aproximadamente cuánto TAO necesita una acuñación por el precio: la propia simulación de la cadena, más un 3 %.
Inicia una compra
Envía el
planque quieras:monthly,yearlyoyearly_onboardingpara la oferta de bienvenida mientras puedas canjearla. Para un paquete de datos, envíaitem_iden su lugar:data_1tib,data_10tibodata_256gib(256 GiB por $0.75, que solo se vende con Gamma y por x402).curl -X POST https://api.bringyour.com/pay/gamma/intent \ -H "Authorization: Bearer urn_..." \ -H "Content-Type: application/json" \ -d '{"plan":"yearly"}'Para recibir un paquete de datos como código de saldo, añade
"delivery":"code". Conemail, también te enviamos el código por correo.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"}'La respuesta, por ejemplo:
{ "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_hotkeyes la hotkey que URnetwork asignó a tu cuenta, en la subred 25. Acuñas en ella, y también sirve para cada compra posterior. No es una dirección de pago: nunca le envíes TAO.amount_gammaes el precio en gamma, exactamente lo que toma nuestro cobro.referencees la referencia propia de 32 bytes de esta compra, que nuestro cobro lleva en la cadena.min_daily_cap_gammaes el límite diario de gasto más pequeño con el que se puede cobrar esta compra, yauto_min_daily_cap_gammael más pequeño con el que se puede cobrar cada cargo automático.status_tokenconsulta el estado de esta compra. Mantenlo en secreto, fuera de URLs y registros.- Si la acuñación falla con
NonAssociatedColdKey, otra coldkey ya es dueña del depósito de esa hotkey. Pide de nuevo concoldkey, la dirección SS58 de la coldkey con la que acuñas, para obtener una hotkey que pueda usar. - Una compra sigue abierta hasta
expires_at. Si vuelves a pedir el mismo artículo, recibes la compra abierta con unstatus_tokennuevo.
Acuña gamma en tu depósito
Antes de acuñar, lee las advertencias de abajo.
Es el único paso fuera de la API y la única firma. Primero previsualiza la acuñación: con
--dry-run, btcli muestra lo que obtendrías y no envía nada.btcli tx mint-gamma --netuid 25 --hotkey <deposit_hotkey> --amount-tao <TAO> \ --service-hotkey 5CyQFykVpfa9xgZVGgBsiNUpjbo1EihBTSkPvDC1FZbL1wxG --dry-runDespués acuña, firmando con tu coldkey: el mismo comando con
-w <your_coldkey>en lugar de--dry-run. La compra te da ambos comandos con tu hotkey y un importe ya puestos, comomint_dry_run_commandymint_command.btcli tx mint-gamma --netuid 25 --hotkey <deposit_hotkey> --amount-tao <TAO> \ --service-hotkey 5CyQFykVpfa9xgZVGgBsiNUpjbo1EihBTSkPvDC1FZbL1wxG -w <your_coldkey>--service-hotkeyhace que un depósito nuevo indique la cuenta de gasto de URnetwork, y rechaza un depósito que indique otra. Acuña al menos el precio, unosindicative_taoTAO; una acuñación menor quemin_mint_gammagamma falla.También puedes abrir el depósito con un límite diario de gasto,
--daily-spend-cap-gamma <gamma>. Que sea al menosmin_daily_cap_gamma, y al menosauto_min_daily_cap_gammasi mantienes los cobros automáticos. Para cambiar el límite más tarde:btcli gamma set-cap --netuid 25 --hotkey <deposit_hotkey> \ --daily-spend-cap-gamma <gamma> -w <your_coldkey>Desde Python, el SDK de
bittensorprevisualiza y hace la misma acuñación: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())Consulta el estado
Consulta la compra con su
status_token; esta llamada no lleva token bearer. Solo acreditamos una compra cuando nuestro propio cobro con sureferenceestá finalizado en la cadena, nunca solo por la acuñación.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- Todavía no hay gamma en
deposit_hotkey. seen- El depósito tiene gamma pero aún no puede pagar:
remaining_gammaes cuánto más hay que acuñar, oerror.codedice qué impide el cobro. confirming- El depósito cubre el precio. Nuestro cobro está en camino, o ya llegó y se está registrando el abono.
paid- Acreditado, por nuestro cobro finalizado en el bloque
spent_block. Un código de saldo está enbalance_code. expired- No se cobró nada antes de
expires_at. El gamma no gastado se queda en el depósito para tu próxima compra. review- Alguien de nuestro equipo lo está revisando;
review_reasondice por qué. unknown- No existe esa compra, o el token no coincide.
Cuando el depósito no puede pagar, o la cadena omite nuestro cobro,
error.codedice por qué:insufficient_gamma- El depósito tenía menos que el precio. Acuña más.
daily_cap_too_low- El límite diario del depósito está por debajo del precio. Súbelo al menos a
min_daily_cap_gamma. daily_cap_exceeded- Los cobros de hoy superarían el límite diario del depósito. Sube el límite.
wrong_spender- El depósito indica otra cuenta de gasto. Vuelve a apuntarlo a la de URnetwork con el comando de abajo.
btcli gamma set-spender --netuid 25 --hotkey <deposit_hotkey> \ --service-hotkey 5CyQFykVpfa9xgZVGgBsiNUpjbo1EihBTSkPvDC1FZbL1wxG \ -w <your_coldkey> no_deposit- No hay ningún depósito en la hotkey. Acuña en
deposit_hotkey.
Un cobro omitido no toma nada ni compra nada. Solo lo reintentamos cuando tu depósito cambia: cuando acuñas más, subes el límite o corriges la cuenta de gasto.
Elige los cobros automáticos
Pagar con Gamma activa la renovación y la recarga automáticas en tu cuenta. Consúltalas y cámbialas con un JWT de red o una clave de API; un campo que omitas se queda como está.
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- Al final de cada periodo de un plan pagado con Gamma, cobrar el precio del plan del depósito, salvo que pagues Pro de otra forma más allá de ese periodo. Un año de la oferta de bienvenida se renueva al precio anual. Activado por defecto.
auto_topup- Cuando se te acaben los datos, comprar
topup_item_id, como mucho una vez por hora. Cuando una cuenta gratuita alcance su límite de clientes, comprar Pro, como mucho una vez al día; una mejora automática nunca cambia cómo tu red provee ancho de banda. Activado por defecto. topup_item_iddata_1tib, el valor por defecto,data_10tibodata_256gib.monthly_limit_gamma- Lo máximo que toman los cobros automáticos en un mes natural, en UTC.
""o"0"quita el límite.
Cada cobro automático tiene su propia referencia y envía un recibo por correo. Si la cadena lo omite, recibes un aviso, y solo se reintenta cuando cambia el depósito.
Antes de acuñar
Gamma no se puede reembolsar ni transferir. Solo cobramos el precio de lo que compras. El Gamma no gastado se queda en tu depósito y solo funciona en SN25.
Disolver una subred destruye su gamma.
Salvo que los desactives, cobramos automáticamente del mismo depósito: los planes pagados con Gamma se renuevan al final de cada periodo, se añade un paquete de datos (1 TiB salvo que elijas otro) cuando se te acaban los datos, y una cuenta gratuita que alcanza su límite de clientes se mejora a Pro.
- La acuñación falla mientras el precio TAO/USD de la cadena tenga más de 300 bloques de antigüedad, alrededor de una hora. Entonces los términos muestran
mint_availablecomofalse, conprice_stale. Mientras tanto, paga con una criptomoneda o con x402. - La hotkey del depósito no es una dirección de pago. Nunca le envíes TAO. Si lo hiciste, escribe a support@ur.io para que te lo devolvamos.
- Un cobro toma su importe completo o nada, así que un límite diario debe ser al menos el precio, y al menos
auto_min_daily_cap_gammapara los cobros automáticos. Un depósito no tiene límite salvo que pongas uno. - Un depósito y la coldkey que acuñó en él son públicos en la cadena.
- Comprueba que pagas a URnetwork:
btcli query services --netuid 25lista los servicios de SN25, y el nuestro es el marcado comoowner. - La acuñación quema alpha de SN25. URnetwork no recibe TAO.