Verifica. Autocustodia. Libérate.
Tonalli Wallet es la marca pública oficial de este repositorio. El repositorio conserva el nombre técnico RMZWallet por continuidad de historial, integraciones y compatibilidad interna.
Tonalli Wallet es una wallet soberana, open source y no custodial para eCash. Tus llaves permanecen en tu dispositivo; Tonalli Wallet no custodia tus fondos y tú autorizas cada operación.
- eCash (XEC) para saldo, recepción, envío, comisiones y memos on-chain con OP_RETURN.
- eToken Xolos RMZ integrado para consulta y envío.
- NFTs de linaje y coleccionables cuando la configuración NFT del entorno está disponible.
- Alias .xec mediante el flujo de registro soportado por la app.
- WalletConnect v2 para dApps eCash compatibles.
- Tonalli Connect para solicitudes externas de firma.
- Multifirma eCash P2SH experimental.
- DEX / Agora en las rutas disponibles de la app; su operación puede depender de infraestructura externa, liquidez y Offer IDs válidos.
- x402 para los flujos habilitados por configuración.
Tonalli Wallet forma parte de xolosArmy Network.
Configura estas variables en Vercel o tu entorno local:
VITE_PINATA_JWT(recomendado) oVITE_PINATA_API_KEY+VITE_PINATA_SECRETVITE_PINATA_GATEWAY(opcional) para render de imágenes IPFSVITE_XOLOSARMY_NFT_PARENT_TOKEN_ID(token padre NFT1 Group)VITE_NFT_MINT_FEE_RECEIVER_ADDRESS(tesorería para el fee de minteo)VITE_WALLETCONNECT_PROJECT_ID(principal, requerido para WalletConnect v2)VITE_WC_PROJECT_ID(legacy compatible; fallback si falta la principal)VITE_WC_ALLOWED_DOMAINS(opcional, lista CSV para warning anti-phishing en UI; sugerido:teyolia.cash,www.teyolia.cash)
- Namespace soportado:
ecash - Chain estándar soportada:
ecash:1 - Compat legacy: también se acepta
ecash:mainnetsi la dApp lo propone - Métodos soportados:
ecash_getAddressesecash_signMessageecash_signAndBroadcastTransactionecash_signAndBroadcast
- Accounts CAIP-10:
<chain>:<address>(preferidoecash:1:<address>)
- Usuario rechaza:
{ code: 4001, message: "Rechazado por el usuario." } - Params inválidos (
offerIdooutputsrequeridos):{ code: -32602, message: "Params inválidos: offerId o outputs requeridos" } - Método no soportado:
{ code: -32601, message: "Método no soportado" } - Error interno de firma/transmisión:
{ code: -32000, message: "Error al firmar/transmitir" }
- Flujo intent-only: conectar Flipstarter -> Donar -> debe abrir modal de Tonalli Wallet y firmar sin mostrar
Usa el formato txid:vout.cuando la request solo traeoutputs.
mining.ecash.mxgenera un URIwc:.- El usuario pega el URI
wc:en Tonalli Wallet -> Conectar dApps. - El usuario aprueba la sesión de WalletConnect.
- Mining Gateway envía
ecash_signMessagecon el challenge exacto. - Tonalli Wallet muestra una pantalla de aprobación
Firmar mensaje. - Tonalli Wallet firma con
xolosWalletService.signMessage(message). - Tonalli Wallet devuelve
address,publicKey/pubkey,signatureychallengeId. - Mining Gateway verifica la firma y emite el token de sesión de minería.
Ver pruebas manuales sugeridas en docs/nfts.md.
Tonalli Wallet expone la ruta /connect/sign-message para que apps externas, como eCash México Mining Gateway, soliciten una firma de challenge sin exponer llaves privadas. El callback vuelve por hash params con status, address, pubkey, signature y challengeId.
Detalles y ejemplos: docs/tonalli-connect-sign-message.md.
