Saltar al contenido principal
Versión: Siguiente

Configurar un servidor de producción

Una vez que el servidor de pruebas esté en funcionamiento y hayas probado ambos flujos de depósito y retiro, es hora de comenzar con el despliegue real conectado con KYC real y proveedores reales de sistemas bancarios. Antes de usar cualquier API bancaria, es fundamental que realices una auditoría de seguridad completa en el sistema para asegurarte de que no existan vulnerabilidades.

Implementar un entorno seguro

Asegúrate de mantener el servidor de pruebas activo y de desplegar el sistema de producción (mainnet) en un entorno separado. Tener dos despliegues te permite validar nuevas funcionalidades en la testnet antes de moverlas al despliegue final de producción. También puedes tener un tercer entorno de staging si hay un equipo grande trabajando en esta base de código y/o habrá muchos pull requests para probar internamente antes de compartir con otras instituciones.

Para cambiar a la red pública (mainnet) de Stellar, solo tienes que cambiar la passphrase de red (para autenticar solicitudes) y la URL de Horizon.

Puedes copiar tus configuraciones de desarrollo existentes para crear una configuración de producción.

Primero, necesitas cambiar tu archivo de información (stellar.toml):

# stellar.toml
NETWORK_PASSPHRASE = "Public Global Stellar Network ; September 2015"

Luego, cambia la configuración de la Plataforma Anchor en el archivo production.env:

Para la conexión al servidor Horizon:

# production.env STELLAR_NETWORK_NETWORK="Public"
STELLAR_NETWORK_HORIZON_URL="https://horizon.stellar.org"

Para la conexión al servidor Stellar RPC:

# production.env STELLAR_NETWORK_NETWORK="Public"
STELLAR_NETWORK_RPC_URL="https://mainnet.sorobanrpc.com"

Conectando con KYC Real

La mayoría de los anchors necesitan recolectar información de Conoce a tu Cliente (KYC) para cumplir con las regulaciones locales antes de procesar depósitos y retiros. El flujo de KYC normalmente consiste en un formulario simple que recopila información relevante del usuario como nombre, correo electrónico, dirección, edad y número de identificación emitido por el gobierno.

Cómo manejar el KYC depende de ti: existen muchos servicios que ofrecen soluciones KYC mediante APIs e iFrames, validan los datos ingresados y sincronizan con bases de datos gubernamentales para verificar requisitos. Cada jurisdicción tiene requisitos específicos de KYC que difieren entre sí, por lo que es mejor encontrar un proveedor de KYC específico para tu país que satisfaga tus necesidades.

Algunos países requieren diferentes campos de KYC dependiendo del monto a depositar o retirar. Si este es tu caso y necesitas adaptar tus formularios KYC según el monto del depósito o retiro, simplemente agrega un campo de cantidad antes del formulario KYC y asegúrate de que los campos KYC se actualicen según ese valor.

La información KYC debe vincularse a la sesión creada a través de la Autenticación Web Stellar y, por ende, al usuario, para que solo necesites solicitarla una vez. Después de completar el primer flujo de KYC, el usuario no debería tener que volver a ingresar la información.

Asegúrate de que los mensajes de error y validación sean claros e incluyan instrucciones sobre qué hacer a continuación para garantizar una buena experiencia de usuario y aumentar la tasa de conversión de KYC. También deberías localizar los mensajes según el idioma y la ubicación del usuario.

Autocompletar el formulario KYC

Autocompletar el formulario KYC es una excelente manera de reducir la fricción para comenzar a usar un anchor, y las wallets suelen proporcionar un conjunto de campos comúnmente usados en el ecosistema. En resumen, el anchor puede mostrar el formulario KYC con los valores del usuario que fueron enviados previamente por la wallet en los endpoints /transactions/deposit/interactive y /transactions/withdraw/interactive.

Todos los campos del SEP-9 pueden ser enviados por las wallets en los endpoints mencionados, pero los más comunes son: correo electrónico, nombre, apellido y número de teléfono. También debes permitir que los campos prellenados sean editables, ya que el usuario podría haber ingresado un nombre diferente durante el proceso de registro de la wallet y podría querer editarlo antes de finalizar el proceso KYC del Anchor.

Todos los datos SEP-9 enviados desde la wallet forman parte del JWT interactivo, enviado por la Plataforma Anchor.

Conectando con Sistemas Bancarios Reales

Los emisores de tokens respaldados por fiat deben mantener una reserva completa. Esto significa que existe una relación 1:1 entre los tokens de la red Stellar y el dinero en el banco. Dado que cada token fiat en Stellar está respaldado y puede canjearse por un activo real subyacente, los emisores de tokens fiat deben conectarse a los sistemas bancarios reales para validar depósitos de usuarios (a través de transferencias bancarias, pagos con tarjeta de crédito, etc.) y para completar retiros de usuarios (generalmente mediante transferencias bancarias). Si eres un anchor que procesa depósitos y retiros de un token emitido por otra organización, deberás seguir un proceso similar.

Para obtener (e identificar) una transferencia de usuario, los emisores suelen usar una de dos aproximaciones:

  • Consulta API: esta opción consiste en consultar la API del banco, mediante un trabajo cron, para verificar el estado actualizado de la lista de transferencias recibidas por (y enviadas desde) la cuenta bancaria del emisor. Una vez que el sistema confirma una nueva transacción e identifica que corresponde a un depósito específico, puede enviar los fondos digitales a la cuenta del usuario.
  • Webhook: no todos los sistemas bancarios soportan esta opción, pero es la más ligera en términos de lógica back-end. En este enfoque, el banco notifica de forma proactiva el endpoint del emisor cuando recibe una nueva transferencia, actualizando esa información en la base de datos del emisor. El emisor puede entonces relacionar esa transacción con un depósito en proceso y validar que el usuario pueda recibir sus fondos digitales.

Existen muchas formas de identificar que una transferencia bancaria específica corresponde a un depósito específico (y, por consiguiente, a un usuario). Algunos bancos (y países) tienen infraestructura de transferencias que permite la creación de una cuenta bancaria única por transferencia; otros requieren que los usuarios agreguen un parámetro de identificación en sus transferencias. Algunos bancos proporcionan el número de identificación del usuario en la información de la transacción para que los emisores puedan relacionarlo con la información proporcionada en el formulario KYC.

Asegúrate de realizar una auditoría de seguridad completa en tus sistemas cuando las conexiones con sistemas bancarios estén activas. Algunos bancos ofrecen una API de pruebas que puede usarse para desarrollo y despliegue en entornos de testnet o staging, lo que permite probar y auditar la base de código antes de pasar a una integración bancaria final lista para producción. Por mayor seguridad, algunos anchors prefieren agregar un paso manual final antes de aprobar transferencias de retiro. En términos de experiencia de usuario, esta aprobación manual es aceptable siempre que los tiempos de espera se ajusten a las expectativas del usuario, lo cual usualmente significa que no sean mayores a un par de horas.

Probar casos extremos

Una vez que tu aplicación esté completamente funcional, es buena idea probar distintos escenarios y casos extremos para asegurarte de que el sistema funciona como se espera. Aquí tienes una lista de sugerencias de pruebas que deberían cubrir gran parte de los casos extremos de la aplicación:

Pruebas generales

  • Prueba la usabilidad del flujo interactivo
  • Prueba la interfaz usando información de distintos locales y verifica que el contenido traducido, incluidos los mensajes de error, respuestas, formato de fechas y números, sea correcto

Pruebas KYC

  • Verifica que el KYC aparezca con una nueva clave secreta (SK) de la wallet
  • Verifica que KYC no acepte entradas con formato incorrecto y que los mensajes de error sean comprensibles
  • Verifica que puedas usar la misma información KYC (correo electrónico, número de teléfono, usuario, etc.) múltiples veces
  • Verifica que puedas realizar el proceso KYC múltiples veces con la misma clave secreta (SK) de Stellar.

Prueba interactiva

  • Verifica que el flujo de depósito funcione correctamente y que los sistemas bancarios estén operativos
  • Verifica que no puedas hacer un retiro por un valor mayor al saldo actual
  • Verifica que el flujo de retiro funcione correctamente y que los sistemas bancarios estén operativos

Pruebas de seguridad

  • Asegúrate de que los puntos finales de la plataforma estén asegurados

Pulir e internacionalización

Soportar dos idiomas (inglés y el idioma del país de la moneda fiat) permite a los usuarios tener una experiencia fluida al navegar y apoya a instituciones internacionales (como wallets) que necesitan probar el producto antes de iniciar nuevas integraciones.

Puedes soportar múltiples idiomas en tu aplicación web usando el parámetro Accept-Language de las cabeceras de las solicitudes HTTP para localizar el contenido y permitiendo a los usuarios cambiarlo de manera sencilla (por ejemplo, con un ícono de flag en la barra superior). Si una wallet específica no envía el parámetro en la cabecera, recomendamos mostrar al usuario una pantalla de selección de idioma al inicio de los procesos de depósito y retiro. Una vez que un usuario elige un idioma, puedes almacenar su selección para que solo tengas que preguntarle una vez. Además de localizar el texto, asegúrate de revisar el formato de números, fechas, etc.

Tener un grupo de testers beta es una excelente manera de detectar casos extremos que necesitan ajustes y para confirmar que el sistema funciona correctamente ante una variedad de entradas de usuarios. Puedes realizar una prueba beta mediante una fase de lanzamiento suave antes de comenzar a invertir en marketing y distribución. Documentar el proceso de pruebas con capturas de pantalla y videos es muy útil para auditorías de seguridad futuras y brinda a nuevos socios y potenciales usuarios claridad y confianza en el producto.

Conexión con Wallets

Todas las interacciones de usuarios con Anchor se realizan a través de una Wallet, por lo que es vital que los Anchors estén conectados a Wallets con buena penetración de mercado en la región donde el negocio se concentra. Conectarse a Wallets es un proceso simple, ya que ambos extremos de esa integración ya cumplen con los SEPs.

Stellar.org mantiene una lista de wallets, muchas de las cuales actualmente soportan SEP-24. Enviarles información sobre un activo y una cuenta emisor es una excelente forma de empezar a conseguir usuarios reales para el Anchor.