Saltar al contenido principal
Versión: 3.0.0

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 retirada de fondos, es hora de comenzar con el despliegue real conectado a KYC real y a proveedores de banking rails reales. Antes de usar cualquier API bancaria, es fundamental 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 en funcionamiento y desplegar el sistema de producción (mainnet) en un entorno separado. Tener dos despliegues te permite validar nuevas características en la testnet antes de moverlas al despliegue de producción final. También puedes tener un tercer entorno de preproducción si hay un gran equipo trabajando en esta base de código y/o si habrá muchos despliegues que deban ser probados internamente antes de compartirlos con otras instituciones.

Para cambiar a la red pública (mainnet) de Stellar, todo lo que tienes que hacer es cambiar la configuración de passphrase (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"

A continuación, cambia la configuración de tu Anchor Platform en el archivo production.env:

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

Conectando a KYC Real

La mayoría de los anchors necesitan recopilar información de Know Your Customer para cumplir con las regulaciones locales antes de honrar depósitos y retiradas de fondos. 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 manejes KYC depende de ti: hay muchos servicios que proporcionan soluciones 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 KYC específicos, y estos varían de una jurisdicción a otra, así que es mejor encontrar un proveedor KYC específico del país que cumpla con tus necesidades.

Algunos países requieren diferentes campos KYC según la cantidad a depositar o retirar. Si ese es el caso en tu jurisdicción y necesitas adaptar tus formularios KYC según la cantidad de depósito o retirada, 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 Stellar Web Authentication y, por ende, al usuario, por lo que solo necesitas pedirle al usuario que la proporcione una vez. Después de que el primer flujo KYC esté completo, el usuario no debería tener que ingresar la información de nuevo.

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.

Rellenar automáticamente el formulario KYC

Rellenar automáticamente el formulario 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 son comúnmente utilizados en todo el ecosistema. En resumen, el anchor puede mostrar el formulario KYC con los valores del usuario que fueron enviados anteriormente por la billetera en los endpoints /transactions/deposit/interactive y /transactions/withdraw/interactive.

Todos los campos de SEP-9 pueden ser enviados por las billeteras en los endpoints mencionados anteriormente, pero los más comunes son: correo electrónico, nombre, apellido y número de teléfono. Además, aún debes 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 KYC del Anchor.

All SEP-9 data that was sent from the wallet is a part of the Interactive JWT, send by the Anchor Platform

Conectando a Banking Rails Reales

Se espera que los emisores de tokens respaldados por fiat gestionen 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 y puede ser canjeado por él, los emisores de tokens respaldados por fiat necesitan conectarse a bancos 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 las retiradas de fondos de los usuarios (generalmente a través de transferencias bancarias). Si eres un anchor que honra depósitos y retiradas de un token que otra organización emite, seguirás un proceso similar.

Para obtener (y identificar) una transferencia de usuario, los emisores generalmente adoptan una de dos enfoques:

  • Polling de 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. Once the system confirms a new transaction and identifies that it relates to a specific deposit, it can send the digital funds to that user's account
  • Webhook: no todos los banking rails admiten esta opción, pero es la más optimizada en términos de lógica de backend. En este enfoque, el banco contacta proactivamente el endpoint de un emisor una vez que recibe una nueva transferencia, actualizando esa información en la base de datos del emisor. The issuer can then can match that transaction to an existing in-process deposit, and validate that the user can receive their digital funds

Hay muchas formas de identificar que una transferencia bancaria específica se relaciona con un depósito específico (y, por ende, con un usuario). Algunos bancos (y países) tienen infraestructura de transferencia que permite la creación de una cuenta bancaria por transferencia; otros requieren que los usuarios agreguen 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 transacción para que los emisores puedan igualarlo 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 de banking rails estén en su lugar. Al algunos bancos les gusta proporcionar una API de prueba que puede ser utilizada para desarrollo y despliegue a testnet o entornos de preproducción, 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 mejorar la seguridad, algunos anchors también prefieren agregar un paso final manual antes de aprobar las transferencias de retirada. 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 son más largos que un par de horas.

Probar Casos Límite

Una vez que tu aplicación esté totalmente funcional, es buena idea probar diferentes escenarios y casos límite para asegurarte de que el sistema se comporte como se espera. Aquí hay una lista de sugerencias de pruebas que deberían cubrir una gran cantidad de los casos límite de la aplicación:

Pruebas Generales

  • Test the interactive flow usability
  • Test the interface using different locale information, and check for translated content including error messages, responses, date formatting, and number formatting

Pruebas de KYC

  • Check that KYC appears with a new wallet SK
  • Check that KYC doesn't accept incorrectly formatted inputs, and that the error messages are comprehensible
  • Check that you can use the same KYC information (email, phone number, username, etc) multiple times
  • Verificar que puedas pasar por KYC múltiples veces con el mismo SK de Stellar.

Prueba Interactiva

  • Check that the deposit flow goes through, and that the banking rails are working
  • Check that you cannot make a withdrawal with a value higher than the current balance
  • Check that the withdrawal flow goes through, and that the banking rails are working

Pruebas de Seguridad

  • Make sure platform endpoints are secured

Pulido e Internacionalización

Admitir 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 admite instituciones internacionales (como billeteras) que necesitan probar el producto antes de iniciar nuevas integraciones.

Puedes admitir múltiples idiomas en tu webapp utilizando el parámetro Accept-Language de los encabezados de la solicitud http para localizar el contenido y permitir que los usuarios lo cambien de una manera sencilla (por ejemplo, un ícono 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 comienzo de los procesos de depósito y retirada. 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 límite que necesitan pulirse y de confirmar que el sistema funciona bien con una variedad de entradas de usuario. Puedes hacer pruebas beta utilizando una etapa de lanzamiento suave antes de comenzar a poner esfuerzo en marketing y distribución. Documentar el proceso de pruebas con capturas de pantalla y videos es muy útil para futuras auditorías de seguridad, y brinda claridad y confianza a nuevos socios y usuarios potenciales sobre el producto.

Conectar a 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 de mercado en la región donde se enfoca más el negocio. Conectar a billeteras es un proceso simple, ya que ambos extremos de esa integración ya son compatibles con los SEPs.

Stellar.org mantiene una lista de billeteras, muchas de las cuales actualmente admiten 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 al Anchor.