Configurar un servidor de producción
Una vez que el servidor de prueba esté activo 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 de sistemas bancarios reales. Antes de usar cualquier API bancaria, es crucial que realices una auditoría de seguridad completa en el sistema para asegurarte de que no haya 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 funcionalidades en el testnet antes de trasladarlas al despliegue final de producción. También puedes tener un tercer entorno de staging si hay un gran equipo trabajando en este código y/o habrá muchos lanzamientos que probar internamente antes de compartirlo con otras instituciones.
Para cambiar a la red pública (mainnet) de Stellar, todo lo que tienes que hacer es cambiar la frase de paso de la 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
):
- TOML
# stellar.toml
NETWORK_PASSPHRASE = "Public Global Stellar Network ; September 2015"
A continuación, cambia tu configuración de Anchor Platform en el archivo production.env
:
- bash
# production.env
STELLAR_NETWORK_NETWORK="Public"
STELLAR_NETWORK_HORIZON_URL=https://horizon.stellar.org
Conectando con KYC real
La mayoría de los anchors necesitan recoger información de Conozca a su Cliente para cumplir con regulaciones locales antes de aceptar depósitos y retiros. El flujo de KYC generalmente 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 manejas el KYC depende de ti: hay muchos servicios que ofrecen soluciones de KYC a través de APIs e iFrames, y validan los datos de entrada y sincronizan con bases de datos gubernamentales para verificar los requisitos. Cada jurisdicción tiene requisitos específicos de KYC, y difieren de una jurisdicción a otra, por lo que lo mejor es encontrar un proveedor de KYC específico para un país que satisfaga tus necesidades.
Algunos países requieren diferentes campos de KYC dependiendo de la cantidad a depositar o retirar. Si ese es el caso en tu jurisdicción y necesitas adaptar tus formularios de KYC en función de la cantidad de depósito o retiro, simplemente añade un campo de cantidad antes del formulario de KYC y asegúrate de que los campos de KYC se actualicen según ese valor.
La información de KYC debería estar vinculada a la sesión creada a través de Stellar Web Authentication y, en consecuencia, al usuario, así que solo necesitas pedirle esa información una vez. Después de que el primer flujo de KYC esté completo, un usuario no debería tener que volver a ingresar la información.
Asegúrate de que los errores y los mensajes de 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 debes localizar los mensajes según el idioma y la ubicación del usuario.
Pre-rellenar el formulario de KYC
Pre-rellenar el formulario de KYC es una excelente manera de reducir la fricción para comenzar a usar un anchor, y las billeteras generalmente proporcionan un conjunto de campos que se utilizan comúnmente en todo el ecosistema. En resumen, el anchor puede renderizar el formulario de KYC con los valores del usuario que fueron enviados previamente por la billetera en los puntos finales de /transactions/deposit/interactive
y /transactions/withdraw/interactive
.
Todos los campos de SEP-9 pueden ser enviados por las billeteras en los puntos finales mencionados anteriormente, pero los más comunes son: correo electrónico, primer nombre, apellido y número de teléfono. Además, deberías permitir que los campos pre-rellenados sean editables, ya que el usuario podría haber ingresado un nombre diferente en el proceso de registro de la billetera y podría querer editarlo antes de finalizar el proceso de KYC del Anchor.
Todos los datos de SEP-9 que fueron enviados desde la billetera son parte del JWT interactivo, enviado por el Anchor Platform
Conectando a sistemas bancarios reales
Se espera que los emisores de tokens respaldados por fiat administren una reserva completa. Eso significa que hay 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 por un activo real en el mundo real y se puede canjear por él, los emisores de tokens respaldados por fiat necesitan conectarse a sistemas bancarios reales para validar los depósitos de los usuarios (a través de transferencias bancarias, pagos con tarjeta de crédito, etc.) y para completar los retiros de los usuarios (generalmente a través de transferencias bancarias). Si eres un 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 generalmente toman uno de dos enfoques:
- Polling API: esta opción consiste en obtener la API del banco, a través de 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 se relaciona 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 más sencilla en términos de lógica de backend. En este enfoque, el banco contacta proactivamente un endpoint de un emisor una vez que recibe una nueva transferencia, actualizando esa información en la base de datos del emisor. El emisor puede entonces emparejar esa transacción con un depósito en proceso existente y validar que el usuario pueda recibir sus fondos digitales
Hay muchas maneras de identificar que una transferencia bancaria específica está relacionada con un depósito específico (y, en consecuencia, con un usuario). Al algunos bancos (y países) tienen infraestructuras de transferencia que permiten la creación de una única cuenta bancaria 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 hacer coincidir eso con la información proporcionada en el formulario de KYC.
Asegúrate de realizar una auditoría de seguridad completa en tus sistemas cuando haya conexiones con sistemas bancarios. Algunos bancos proporcionan una API de pruebas que se puede usar para desarrollo y despliegue en testnet o entornos de staging, lo que significa que puedes probar y auditar la base de código antes de pasar a una integración bancaria final lista para producción. Para una mejor seguridad, algunos anchors también prefieren añadir un paso final manual antes de aprobar las transferencias de retiro. En términos de UX, esta aprobación manual es aceptable siempre que los tiempos de espera se alineen con las expectativas del usuario, lo que generalmente significa que no sean más largos que un par de horas.
Probando casos extremos
Una vez que tu aplicación esté completamente funcional, es una buena idea probar diferentes escenarios y casos extremos para asegurarte de que el sistema se comporta como se espera. Aquí hay una lista de sugerencias para pruebas que deberían cubrir una gran cantidad de los casos extremos de la aplicación:
Pruebas generales
- Prueba la usabilidad del flujo interactivo
- Prueba la interfaz usando diferentes información regional, y verifica contenido traducido incluyendo mensajes de error, respuestas, formato de fecha y formato de número
Pruebas de KYC
- Verifica que KYC aparezca con un nuevo SK de billetera
- Verifica que KYC no acepte entradas mal formateadas y que los mensajes de error sean comprensibles
- Verifica que puedes utilizar la misma información de KYC (correo electrónico, número de teléfono, nombre de usuario, etc.) varias veces
- Verifica que puedes pasar por KYC varias veces con el mismo SK de Stellar.
Prueba interactiva
- Verifica que el flujo de depósito funcione y que los sistemas bancarios estén operativos
- Verifica que no puedas hacer un retiro con un valor superior 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 asegurados
Pulido e internacionalización
Apoyar 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 billeteras) que necesitan probar el producto antes de comenzar nuevas integraciones.
Puedes soportar múltiples idiomas en tu aplicación web utilizando el parámetro Accept-Language
de los encabezados de la solicitud http para localizar el contenido y permitir que los usuarios cambien eso de manera sencilla (por ejemplo, un icono de bandera en la barra superior). Si una billetera específica no envía el parámetro de 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 preguntarle una vez. Además de localizar el texto, asegúrate de verificar el formato de los números, fechas, etc.
Tener un grupo de beta testers es una excelente manera de verificar si hay casos extremos que necesitan pulirse y de confirmar que el sistema está funcionando bien con una variedad de entradas de usuario. Puedes realizar pruebas beta utilizando una etapa de lanzamiento suave antes de comenzar a poner esfuerzo en el marketing y la distribución. Documentar el proceso de pruebas con capturas de pantalla y videos es muy útil para futuras auditorías de seguridad, y brinda a los nuevos socios y usuarios potenciales claridad y confianza en el producto.
Conectando con billeteras
Todas las interacciones de usuario de Anchor se realizan a través de una billetera, por lo que es vital para los anchors estar conectados a billeteras que tengan una buena penetración en el mercado de la región donde el negocio se centra más. Conectar con billeteras es un proceso simple, dado que ambos extremos de esa integración ya son compatibles con las SEPs.
Stellar.org mantiene una lista de billeteras, muchas de las cuales actualmente soportan SEP-24. Enviarles un mensaje con más información sobre un activo y una cuenta de emisor es una excelente manera de comenzar a atraer algunos usuarios reales hacia el Anchor.