Tonalli RMZWallet (Vite + React + TypeScript) para eCash (XEC).
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 RMZWallet 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 RMZWallet -> Conectar dApps. - El usuario aprueba la sesión de WalletConnect.
- Mining Gateway envía
ecash_signMessagecon el challenge exacto. - RMZWallet muestra una pantalla de aprobación
Firmar mensaje. - RMZWallet firma con
xolosWalletService.signMessage(message). - RMZWallet 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.