Cómo Tangem integra una red y token en la billetera
Cada día recibimos cientos de solicitudes de usuarios para integrar nuevos tokens y cadenas de proyectos Web3, tanto populares como poco conocidos, en Tangem Wallet. Agregar una nueva red blockchain o token en la billetera Tangem sigue un proceso sistemático que requiere la colaboración entre nuestros analistas de blockchain y el equipo de desarrollo.
En este artículo, te explicamos el proceso desde el análisis y desarrollo hasta las pruebas y la corrección de errores. Así comprenderás por qué vale la pena esperar para ver tu cripto favorita en tu Tangem Wallet, aunque el proceso pueda ser largo.
Primero, ¿cómo acepta Tangem las solicitudes para nuevos tokens y redes?
Debido a situaciones desagradables en las que miembros de la comunidad de un proyecto envían spam a nuestros canales sociales con solicitudes, queremos aclarar que Tangem se reserva el derecho de decidir qué redes o tokens integrar en su billetera.
Aceptación de solicitudes de usuarios para integración de tokens/redes
Los usuarios envían solicitudes para integrar nuevos tokens a través de nuestro chat público de Telegram, X (Twitter) y Discord.
Aunque este mecanismo de solicitud parece algo conveniente, representa un reto para el equipo de soporte, ya que consolidar solicitudes de tokens desde múltiples plataformas en un solo archivo resulta laborioso.
Sin embargo, mantenemos este archivo interno, donde organizamos y clasificamos los tokens más solicitados según el número de solicitudes de los usuarios.
Luego, consideramos las especificaciones técnicas de la blockchain mejor posicionada y su ecosistema, incluyendo:
- Información detallada sobre la arquitectura, mecanismo de consenso, velocidad de transacción, tamaño de bloque y cualquier característica única de la blockchain.
- Documentación sobre capacidades de contratos inteligentes, lenguajes de programación y estándares de tokens compatibles.
- Protocolos de integración y APIs para conectar servicios externos.
- Compatibilidad con herramientas de terceros, billeteras u otros servicios relevantes.
También evaluamos el alcance de la integración deseada:
- Objetivos y metas claramente definidos para la integración.
- Funcionalidades o servicios específicos a integrar.
- Cualquier requerimiento de personalización o parámetros específicos para el proceso de integración.
Parte I: Análisis de la red blockchain
Antes de integrar el token o cadena priorizada, analizamos a fondo los siguientes factores:
¿La red solicitada es un clon de una red ya existente?
Una red blockchain clonada es una copia o réplica de una blockchain existente. Clonar significa crear una nueva blockchain que comparte el mismo código base, reglas y estructura que una ya existente. Las blockchains clonadas pueden usarse para crear versiones alternativas de proyectos existentes.
Por ejemplo, un equipo de desarrollo podría clonar una blockchain exitosa para lanzar una nueva criptomoneda con algunas modificaciones o mejoras. Estas modificaciones pueden incluir cambios en el algoritmo de consenso, tiempo de bloque, tokenomics u otros parámetros.
Integrar una red solicitada es mucho más sencillo si es un clon. En estos casos, la integración puede ser más fluida. Sin embargo, si la red no es un clon, pasamos al siguiente paso del análisis.
¿Cuál es el algoritmo de firma?
Un algoritmo de firma es un conjunto de reglas y procedimientos para crear y verificar firmas digitales. Las firmas digitales garantizan la autenticidad, integridad y no repudio de las transacciones. Así funciona, en líneas generales, un algoritmo de firma:
- Generación de claves: el proceso inicia generando un par de claves criptográficas, una privada y una pública. La clave privada se mantiene secreta y solo la conoce quien crea la firma; la pública se comparte con otros.
- Firmado: para crear una firma digital, la entidad usa su clave privada para realizar una operación matemática sobre un hash (una cadena de tamaño fijo derivada del mensaje firmado).
- Verificación: cualquier persona con la clave pública puede verificar la firma digital y realizar una operación matemática similar sobre el hash del mensaje recibido. Si el resultado coincide con la firma, indica que la transacción fue firmada por el propietario de la clave privada, confirmando su autenticidad.
- Hashing: una función hash toma una entrada (o mensaje) y produce una cadena de caracteres de tamaño fijo, que es el hash. El hash sirve como representación única del mensaje original.
- Parámetros del algoritmo: el algoritmo de firma define los algoritmos y parámetros matemáticos específicos usados para la generación de claves, firmado y verificación.
Los algoritmos estándar incluyen RSA (Rivest-Shamir-Adleman), DSA (Digital Signature Algorithm), ECDSA (Elliptic Curve Digital Signature Algorithm) y EdDSA (Edwards-curve Digital Signature Algorithm).
El algoritmo criptográfico de firma usado en las transacciones blockchain depende de la blockchain específica. Si las tarjetas Tangem no pueden soportar el algoritmo de firma de la red, no podemos integrar esa red.
¿Cuáles son los nodos/APIs de servicios de la red?
Los nodos y APIs (Interfaces de Programación de Aplicaciones) son fundamentales para mantener la red, validar transacciones y permitir que aplicaciones externas interactúen con la blockchain.
Contar con nodos públicos o APIs de servicios de los desarrolladores — algo común en redes EVM — es una buena señal. Esta accesibilidad suele permitir a los usuarios conectar billeteras descentralizadas. Además, el proceso es más sencillo cuando proveedores premium de nodos, como GetBlock, ya ofrecen estos nodos/APIs.
Sin embargo, la integración se complica si tenemos que suscribirnos a un nuevo servicio o construir nuestros propios nodos. Para garantizar la fiabilidad, trabajamos con al menos dos proveedores de nodos diferentes por cada red, minimizando posibles problemas derivados de depender de una sola fuente.
La combinación de nodos y APIs asegura que la red funcione correctamente y sea accesible. Los nodos mantienen la integridad del libro mayor distribuido, mientras que las APIs ayudan a los desarrolladores a crear apps que aprovechan las capacidades de la blockchain.
¿La red cuenta con documentación adecuada?
Las principales redes y tokens publican documentación completa para que desarrolladores, usuarios y operadores de nodos puedan entenderlas e interactuar con ellas eficazmente. La documentación proporciona información suficiente sobre la API, mecanismo de consenso, contratos inteligentes, configuración de nodos, pautas de seguridad, y actualizaciones o migraciones.
Las necesidades de trabajo para nuestro equipo de desarrollo dependen de este punto. Lamentablemente, la tecnología blockchain es relativamente nueva y no hay suficientes profesionales técnicos que sean buenos creando documentación para cada proyecto Web3.
A menudo nos encontramos con un reto común: la documentación suele estar dirigida a usuarios y desarrolladores de contratos inteligentes, pero los detalles sobre la generación de hashes para firmar o la interacción con la API a veces se omiten o no se explican bien. Como resultado, los desarrolladores de Tangem deben dedicar tiempo a estudiar el código de implementaciones existentes.
¿Existen SDKs y bibliotecas adecuadas?
Un Software Development Kit (SDK) es un conjunto de herramientas de desarrollo de software que permite a los desarrolladores crear apps para un paquete, plataforma de hardware, sistema informático o sistema operativo específico.
Un SDK incluye bibliotecas, documentación, código de ejemplo y, a veces, herramientas adicionales como depuradores o emuladores.
La app de Tangem es nativa — desarrollada para un solo sistema operativo (por ejemplo, iOS o Android) — por lo que los SDKs de la mayoría de los desarrolladores no suelen estar disponibles.
Incluso los SDKs en JavaScript — pensados para aplicaciones multiplataforma — no suelen ser aptos para billeteras frías, ya que la función de firma requiere que la clave privada se le proporcione. Como sabes, la clave privada se genera y almacena en el chip de Tangem Wallet y nunca sale de él.
Aun así, hay esperanza si el SDK está en un lenguaje de programación adecuado. Siempre podemos adaptarlo tomando fragmentos de código o usando funciones de codificación separadas, por ejemplo, para el cálculo o validación de la dirección. En este último caso, las bibliotecas adecuadas también pueden ayudar, aunque igualmente lleva mucho tiempo.
Una biblioteca es una colección de código preescrito, rutinas, procedimientos y funciones que otros programas pueden utilizar.
¿La red blockchain tiene características únicas?
Algunas redes pueden tener atributos poco comunes — como reservas o la necesidad de especificar MEMO al enviar fondos — que requieren modificar la interfaz y experiencia de usuario (UI/UX) de la app Tangem antes de completar la integración.
A veces, una red puede tener mecanismos muy complejos para el cobro de comisiones. Tangem debe establecer canales de comunicación claros para los equipos de desarrollo y soporte. También involucramos al equipo de diseño para ajustar la UI según nuestras pautas de estilo. Estos procedimientos afectan los costos de trabajo y pueden tomar bastante tiempo.
Parte II - Integración de la red blockchain
Tras analizar y aprobar la red o token solicitado, nuestro equipo de desarrollo inicia el proceso de integración en los siguientes pasos.
1. Encontrar una API adecuada
Una vez encontrada una API adecuada, verificamos si podemos obtener los datos necesarios para crear una transacción. Esto implica crear una estructura de datos que contenga los detalles de la transacción, añadir firmas digitales para la autenticación y respetar el formato y reglas específicos que dicta el protocolo de la blockchain.
2. Codificación de la dirección a partir de la clave pública
Codificar la dirección a partir de la clave pública significa transformar una clave pública en un formato más legible y manejable, conocido como dirección. En Bitcoin, la dirección se representa en codificación Base58; en Ethereum, en formato hexadecimal. Los pasos y algoritmos para codificar direcciones pueden variar entre blockchains: cada red puede tener sus propios estándares para la codificación de direcciones.
3. Obtener los datos necesarios desde la API y enviar una transacción
Además de recibir transacciones ya analizadas, también integramos la solicitud para enviar una transacción. Los datos necesarios son el balance y, según la blockchain, UTXO, nonce, el hash del bloque más reciente y si la cuenta del destinatario ha sido creada. Para que las transacciones sean exitosas, nuestro sistema depende de obtener datos esenciales y prestar mucha atención a estos parámetros clave:
- Balance: la cantidad de criptomonedas o fondos disponibles en la cuenta del usuario. Verificar el balance asegura que el usuario tenga fondos suficientes para iniciar transacciones.
- UTXO (Unspent Transaction Output): el remanente de criptomonedas de transacciones previas que el usuario puede gastar en una nueva transacción.
- Nonce: un número único asignado a cada transacción. Ayuda a mantener el orden cronológico de las transacciones y previene ataques de repetición.
- Hash del bloque más reciente: el hash del bloque más nuevo en la blockchain crea un vínculo entre la transacción actual y el historial general de la blockchain, haciendo que sea resistente a manipulaciones.
- Estado de la cuenta del destinatario: verificar si la cuenta del destinatario ha sido creada garantiza que los fondos se envíen a una cuenta válida y activa. Este paso previene el riesgo de enviar fondos a cuentas inexistentes o inactivas.
4. Ensamblar una transacción
El ensamblaje de una transacción consiste en reunir los componentes e información necesarios para crear una transacción completa que pueda ejecutarse en la blockchain. Este proceso implica recopilar y organizar datos como detalles de la transacción, información del destinatario, comisiones y otros parámetros relevantes. El ensamblaje varía según la blockchain, pero en general el esquema es:
- Recopilamos una transacción sin firmar a partir de los datos recibidos desde la API y los datos ingresados por el usuario (dirección del destinatario, monto, comisiones, etc).
- Calculamos el/los hash para firmar esta transacción y la enviamos a la tarjeta Tangem.
- Las firmas se devuelven desde la tarjeta y las agregamos a la transacción. Codificamos la transacción con las firmas para enviarla mediante la API.
Recargar una cuenta en testnet y enviar transacciones
Recargamos la cuenta en la testnet e intentamos enviar transacciones. Los primeros intentos suelen fallar, y la parte interesante ocurre cuando la transacción es rechazada con el mensaje "wrong signature algorithm" sin dar detalles específicos.
Para resolver este problema, a menudo comparamos la transacción fallida con resultados intermedios de soluciones funcionales, llegando a veces a un análisis byte por byte.
Tras lograr enviar una transacción con éxito, finalizamos el cálculo de las comisiones. Cabe destacar que en los intentos iniciales solemos establecer una comisión fija.
La etapa final consiste en abordar diversas características y casos límite. Esto incluye gestionar parámetros adicionales de la transacción, escenarios como enviar a una cuenta vacía (que puede requerir una estructura de transacción diferente, a menudo con una operación previa para crear la cuenta), manejar reservas, etc.
Después, el equipo de diseño añade la representación visual de la red o token en el backend de la app.
Parte III — Pruebas y lanzamiento de la actualización de la app con la nueva red
Este largo proceso de integración culmina con la fase de pruebas de la nueva actualización de la app, asegurando que todos los desarrollos recientes funcionen correctamente. Así es el proceso de pruebas:
Pruebas unitarias
Realizamos pruebas unitarias exhaustivas para verificar que los componentes individuales de la app Tangem, especialmente los relacionados con la nueva integración blockchain, funcionen correctamente de forma aislada.
Pruebas de integración
Comprobamos qué tan bien la billetera se comunica con la blockchain, firma transacciones y gestiona los datos específicos de la red integrada. Nos aseguramos de que la actualización de la app Tangem — que incluye la nueva red blockchain — funcione correctamente tanto en Android como en iOS. También realizamos pruebas de seguridad para identificar y solucionar posibles vulnerabilidades relacionadas con la integración.
Pruebas de aceptación de usuario (UAT)
Cuando la actualización de la app incluye funciones importantes de la nueva red, realizamos UAT con un grupo selecto de usuarios o equipo de pruebas para recopilar comentarios sobre la experiencia de usuario y detectar posibles problemas que se hayan escapado en fases anteriores.
Corrección de errores y despliegue en tiendas de apps
Solucionamos errores, problemas o comentarios recibidos durante las pruebas. Luego, nuestros equipos de desarrollo, marketing y soporte se preparan para el lanzamiento oficial. Publicamos la versión actualizada de Tangem en las tiendas de apps correspondientes (Google Play Store para Android y Apple App Store para iOS), donde puedes descargarla y usarla.
Conclusión
Me alegra poder compartirte cómo integramos redes y tokens en nuestra billetera, siempre enfocados en la seguridad de tus activos y una experiencia fácil de usar.
Tangem Wallet ya admite más de 30 redes blockchain y miles de monedas y tokens, y este número sigue creciendo cada mes a medida que nuestros equipos de desarrollo y soporte se expanden. Hemos diseñado nuestra estrategia de integración pensando no solo en los detalles técnicos, sino también en la accesibilidad.
Gracias por elegir Tangem Wallet para gestionar y resguardar tus criptoactivos. ¡Mantente seguro!