Saltar al contenido principal

Configurar un servidor de producción

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

Desplegar un entorno seguro

Asegúrate de mantener el servidor de prueba activo y despliega el sistema de producción (mainnet) en un entorno separado. Tener dos despliegues te permite validar nuevas funciones en la testnet antes de moverlas al despliegue final de producción. También puedes tener un tercer entorno de preproducción si hay un equipo grande trabajando en esta base de código y/o habrá muchas incorporaciones que deban ser probadas internamente antes de compartirlas con otras instituciones.

Para cambiar a la red pública (mainnet) de Stellar, todo lo que tienes que hacer es cambiar la frase de contraseña de la red (para autenticar peticiones) 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 tu configuración de la plataforma Anchor en el archivo production.env:

Para conexión al servidor Horizon:

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

Para conexión al servidor RPC de Stellar:

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

Conectar con KYC real

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

Cómo manejes el KYC depende de ti: existen muchos servicios que ofrecen soluciones KYC mediante APIs y iframes, validan los datos ingresados y sincronizan con bases de datos gubernamentales para verificar requisitos. Cada jurisdicción tiene requisitos específicos de KYC, y varían de una a otra, por lo que es mejor encontrar un proveedor de KYC específico para el país que satisfaga tus necesidades.

Algunos países requieren diferentes campos de KYC según la cantidad a depositar o retirar. Si ese es tu caso y necesitas adaptar tus formularios KYC en función del monto de depósito o retiro, simplemente añade 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 estar vinculada a la sesión creada mediante Autenticación web de Stellar y, en consecuencia, al usuario, por lo que solo necesitas solicitarla una vez. Después de completar el primer flujo de KYC, un usuario no debería tener que ingresar la información nuevamente.

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

Autocompletar el formulario KYC

Autocompletar el formulario KYC es una excelente forma de reducir la fricción para comenzar a usar una anchor, y las wallets suelen proporcionar un conjunto de campos comúnmente usados en el ecosistema. En resumen, la 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 de 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. Además, deberías permitir que los campos autocompletados sean editables, ya que el usuario podría haber ingresado un nombre diferente durante el proceso de registro en la wallet y podría querer editarlo antes de finalizar el proceso KYC de la anchor.

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

Conectarse a sistemas bancarios reales

Se espera que los emisores de tokens respaldados por fiat gestionen una reserva completa. Eso significa que existe una relación 1:1 entre los tokens en 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 respaldados por fiat necesitan conectarse a 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 los retiros de usuarios (generalmente mediante transferencias bancarias). Si eres una anchor que acepta depósitos y retiros de un token emitido por otra organización, seguirás un proceso similar.

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

  • Sondeo de API: esta opción consiste en consultar la API bancaria mediante un trabajo cron para verificar el estado actualizado de la lista de transferencias recibidas y enviadas desde la cuenta bancaria del emisor. Una vez que el sistema confirma una nueva transacción e identifica que está relacionada con un depósito específico, puede enviar los fondos digitales a la cuenta de ese usuario.
  • Webhook: no todos los sistemas bancarios admiten esta opción, pero es la opción más ligera en términos de lógica de backend. En este enfoque, el banco envía proactivamente una notificación al endpoint del emisor una vez que recibe una nueva transferencia, actualizando esa información en la base de datos del emisor. El emisor puede entonces asociar esa transacción a un depósito en proceso existente y validar que el usuario pueda recibir sus fondos digitales.

Hay muchas formas de identificar que una transferencia bancaria específica corresponde a un depósito concreto (y, en consecuencia, a un usuario). Algunos bancos (y países) tienen infraestructuras que permiten la creación de una cuenta bancaria única por transferencia; otros requieren que los usuarios añadan un parámetro de identificación a 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 correlacionarlo 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 a sistemas bancarios estén activas. Algunos bancos proporcionan una API de prueba que puede usarse para desarrollo y despliegue en entornos de testnet o preproducción, lo que te permite probar y auditar la base de código antes de pasar a una integración bancaria final lista para producción. Para mayor seguridad, algunas anchors prefieren añadir 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 estén alineados con las expectativas del usuario, lo que generalmente significa que no sean mayores a un par de horas.

Probar casos límite

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

Pruebas generales

  • Prueba la usabilidad del flujo interactivo
  • Prueba la interfaz usando información de distintas localidades y revisa el contenido traducido, incluyendo mensajes de error, respuestas, formatos de fecha y formatos de número.

Pruebas KYC

  • Verifica que KYC aparezca con una nueva SK de 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, teléfono, nombre de usuario, etc.) múltiples veces
  • Verifica que puedas realizar el proceso KYC varias veces con la misma SK Stellar.

Prueba interactiva

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

Pruebas de seguridad

  • Asegúrate de que los endpoints de la plataforma estén protegidos

Pulido 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 por las pantallas, y apoya a instituciones internacionales (como wallets) que necesitan probar el producto antes de comenzar nuevas integraciones.

Puedes soportar múltiples idiomas en tu aplicación web usando el parámetro Accept-Language de los encabezados http para localizar el contenido, y permitiendo que los usuarios cambien eso de forma sencilla (por ejemplo, un icono de bandera en la barra superior). Si una wallet específica no envía el parámetro del encabezado, 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 necesites preguntarles 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 forma de verificar si hay casos límite que necesiten ajuste, y para confirmar que el sistema funciona bien con una variedad de entradas de usuario. Puedes realizar pruebas beta usando una etapa de lanzamiento suave antes de comenzar a invertir esfuerzo 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 da claridad y confianza a socios nuevos y usuarios potenciales sobre el producto.

Conectarse a wallets

Todas las interacciones de usuarios de Anchor se realizan a través de una wallet, por lo que es vital para las anchors estar conectadas a wallets que tengan buena penetración en el mercado de la región donde se enfoque el negocio. Conectarse a wallets es un proceso sencillo, 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 un mensaje con más información sobre un activo y una cuenta emisora es una excelente forma de comenzar a atraer usuarios reales a la Anchor.