Cómo funciona

Redes: testnet y mainnet

Accesly opera sobre Stellar. Cada app en el dashboard elige la red al momento de crearse. La misma infraestructura backend sirve ambas redes de forma aislada por app.

Elección de red por app

Cada app que crees en el dashboard pertenece a exactamente una red: testnet o mainnet. Esta decisión se toma al crear el app y no se puede cambiar después. La razón es simple: los wallets ya deployados quedarían orfans porque no existen cross chain.

!
Regla dura

Un app testnet no se convierte en un app mainnet. Para desarrollar y después salir a producción, creás dos apps distintos: uno testnet y uno mainnet. Configurás ambos appId en tus environments correspondientes.

Diferencias operacionales

Aspecto Testnet Mainnet
Uso Desarrollo, testing, QA Fondos reales, producción
Fondeo Friendbot gratis (10 mil XLM testnet) On ramp fiat via Dynerox, o transferencia de otro exchange
KYC obligatorio No Sí para operaciones fiat
USDC emisor USDC Circle testnet GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN
Network passphrase Test SDF Network ; September 2015 Public Global Stellar Network ; September 2015
Soroban RPC soroban testnet stellar org soroban mainnet stellar org
Explorer stellar.expert / explorer / testnet stellar.expert / explorer / public
Cap por wallet Sin cap USD 100 durante beta cerrada
Audit del contract 6 audits internos Almanax 6 audits internos Almanax

Configuración del SDK por red

El SDK detecta la red automáticamente leyendo el appConfig de tu app. Vos no configurás la red en el AcceslyProvider. Solo el appId:

<AcceslyProvider
  appId={import.meta.env.VITE_ACCESLY_APP_ID}
  env="dev"
  overrides={{ deviceStore }}
>

El SDK consulta GET /app-config/{appId}, recibe network: "testnet" o "mainnet", y usa el RPC + passphrase + USDC issuer correspondiente para todas las operaciones. Los explorer URLs también apuntan al explorer correcto.

Badge visual

Los componentes del kit muestran un badge sutil cuando la wallet está en mainnet. Es un recordatorio visual para el usuario de que está operando con fondos reales.

WASM hashes del Smart Account por versión

Cada release del Smart Account tiene su propio WASM hash. El backend elige qué versión deploya para cada wallet nueva según el appConfig.wallet.targetVersion del app dueño. Wallets existentes pueden hacer upgrade individual con firma del owner (admin cfg).

Versión Red WASM hash Status
v3.2.0 testnet f1c549e2491e0f8d9cc7683f6056da2edd8a8c3d6786723ab1c86dae74a96b0e canary
v3.1.0 testnet a3173341e307542e9e47089cd00f0e254daa7a90f754c68c1a7ec9e8c70b3c71 stable
v3.2.0 y v3.1.0 mainnet Consultar GET /contracts?network=mainnet Al momento del deploy productivo

v3.2.0 introduce rotate_signer_partial y finalize_rotation para poder rotar el signer en wallets con 4 o más context rules bajo el cap P27 de writeBytes. v3.1.0 sigue soportando el rotate atómico en wallets chicas y no requiere upgrade forzado.

Migración de testnet a mainnet

Cuando estés listo para pasar tu integración de desarrollo a producción:

  1. En el dashboard, creás un app nuevo con network = mainnet. Copiás el branding del app testnet (los toggles están en Settings).
  2. Agregás los redirect URIs de tu ambiente de producción al app mainnet (Cognito Google OAuth es estricto con matching).
  3. Pedís acceso a KYC prod de Dynerox si vas a usar on ramp (los API keys son distintos entre sandbox y prod).
  4. En tu .env de producción, cambiás VITE_ACCESLY_APP_ID al appId mainnet.
  5. Deploy a producción. Testeás la primera vez con vos mismo antes de abrir a users.
i
Los users no se migran

Un usuario que creó wallet testnet no tiene wallet mainnet. Son cuentas separadas. En prod arrancás con base de usuarios vacía. Para testers internos, cada uno tiene que hacer signup nuevo en el app mainnet.

Fondear una wallet en mainnet

A diferencia de testnet donde hay Friendbot gratis, en mainnet el usuario tiene que traer XLM real. Opciones:

El primer fondeo tiene un mínimo práctico de 1 XLM (aproximadamente 12 centavos de dólar) para cubrir la reserve base de la cuenta Stellar. Sin esto la cuenta no queda en un estado transactable.

Direcciones importantes en mainnet

Contrato Address
USDC issuer (Circle) GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN
USDC SAC contract CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75
Smart Account v3 WASM hash Consultable en GET /contracts?network=mainnet

Siguientes pasos