Comenzar
En esta guía, aprenderás a:
- crear y financiar una cuenta de distribución de host que puede ser utilizada para financiar cuentas de distribución a nivel de inquilino o directamente para hacer pagos
- configurar una instancia de la Stellar Disbursement Platform (SDP) localmente
- provisionar un nuevo inquilino y crear credenciales de inicio de sesión para los usuarios pertenecientes al inquilino
- configurar una cuenta Stellar para aceptar fondos como receptor
- realizar tu primera distribución
- registrar tu cuenta receptora en la SDP
- verifica tu saldo después de recibir el pago
Al final de esta guía, tendrás una comprensión clara de la funcionalidad de la Stellar Disbursement Platform y una configuración local funcional lista para el desarrollo o las pruebas.
Ten en cuenta que, aunque estaremos usando USDC y la Demo Wallet en esta guía, otros activos y billeteras de Stellar pueden ser utilizados en el desarrollo o producción.
Crear y financiar una cuenta de distribución de host
Necesitarás un mínimo de dos cuentas al usar la Stellar Disbursement Platform, una cuenta de distribución y una cuenta receptora. Crearemos la cuenta de distribución ahora y crearemos la cuenta receptora mientras hacemos nuestra primera distribución.
- Ve a la Stellar Demo Wallet y selecciona 'Generar keypair para nueva cuenta'
- Selecciona el botón 'Crear cuenta' junto a la clave pública para financiar tu cuenta con XLM
- Selecciona el botón 'Seleccionar de activos preestablecidos' y selecciona USDC
- Finalmente, selecciona 'Agregar trustline' para habilitar pagos de USDC
Ahora que tenemos una cuenta que puede enviar y recibir USDC, vamos a financiarla con suficiente USDC para nuestra primera distribución. Puedes financiar tu cuenta de distribución desde cualquier fuente de liquidez de Stellar USDC, pero aquí te mostramos cómo hacerlo a través del Circle Sandbox y Stellar Lab.
- Crea una cuenta en Circle Sandbox
- Una vez que estés en el panel, selecciona 'Obtener clave API' y cópiala en tu portapapeles
- Ve a la Circle Sample App e introduce tu clave API después de seleccionar el ícono de configuración en la esquina superior derecha
- Selecciona 'Carga de flujo', luego 'Prefill Form', y selecciona una tarjeta para usar (no importa cuál)
- Introduce la cantidad que te gustaría comprar, luego selecciona 'Hacer pago'
Esto financiará tu cuenta de Circle Sandbox con USDC. Puedes repetir el proceso anterior cuando te quedes sin fondos o la red de pruebas se restablezca, lo que ocurre trimestralmente.
Tu USDC debería aparecer en tu cuenta dentro de unos minutos, que puedes verificar usando el endpoint de saldos. Una vez financiada, puedes enviarlo a tu cuenta de distribución creada anteriormente.
- Selecciona el ícono en la parte superior izquierda, luego 'Payouts API' y finalmente 'POST /transfers'
- Selecciona 'Obtener ID de billetera maestra' para cargar la billetera financiada con USDC
- Introduce la cantidad que te gustaría enviar
- Selecciona el tipo de destino 'blockchain' y luego 'XLM'
- Pega la clave pública de la cuenta que creaste con la billetera demo anteriormente
- Selecciona 'Hacer llamada a la API'
¡Circle enviará el pago de USDC a la red de pruebas Stellar y deberías recibir fondos en tu cuenta de billetera demo casi inmediatamente!
También puedes adquirir USDC a través del Stellar Lab si lo prefieres. Antes de comenzar, asegúrate de que tu cuenta demo esté financiada con XLM y tenga una trustline a USDC. Construir una transacción en el Lab con tu cuenta de billetera demo como la cuenta de origen. Crear una operación de Envío Estricto de Pago de Rutas con la misma cuenta como la cuenta de destino. Usa XLM (nativo) como el activo de envío y USDC emitido por GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5 como el activo de destino. Puedes establecer tu cantidad mínima de destino preferida basada en cuánto XLM envías, pero la cantidad no es importante en la red de pruebas. Una cantidad mínima muy baja asegurará el intercambio. Firma la transacción y envíala a la red.
¡USDC llegará a tu cuenta de billetera demo en segundos! Actualiza la cuenta en la página de billetera demo para ver el nuevo saldo.
Ejecutar la SDP localmente
Requisitos previos
Docker
Asegúrate de tener Docker instalado en tu sistema. Si no, puedes descargarlo aquí.
Cuentas Stellar
Necesitaremos dos cuentas Stellar para configurar la SDP, una de las cuales creaste anteriormente.
- Una cuenta de distribución de host que será utilizada para enviar fondos a los receptores. Deberías haber creado esta cuenta utilizando el proceso de Crear y financiar una cuenta de distribución de host arriba.
- Una cuenta SEP-10 que ser á utilizada para autenticación. Puede ser creada de la misma manera que la cuenta de distribución, pero no necesita ser financiada. Asegúrate de crear esta cuenta ahora si aún no lo has hecho.
La clave pública y privada de estas dos cuentas serán utilizadas para configurar la SDP en el siguiente paso.
Ejecutar la SDP
Primero, necesitarás clonar el proyecto.
- bash
git clone [email protected]:stellar/stellar-disbursement-platform-backend.git
Antes de ejecutar la SDP, necesitamos configurarla con las cuentas creadas en el paso anterior.
- bash
cd stellar-disbursement-platform-backend/dev
Crea un archivo .env
en el directorio dev copiando el archivo .env.example
:
- bash
cp .env.example .env
Actualiza el archivo .env
con las claves pública y privada de las dos cuentas creadas en el paso anterior.
Ejecuta el siguiente comando para crear todos los contenedores Docker necesarios para ejecutar la SDP, así como provisionar inquilinos de muestra:
- bash
./main.sh
Esto iniciará los siguientes servicios:
sdp_v2_database
: La base de datos principal de la SDP y TSS.anchor-platform-postgres-db
: Base de datos utilizada por la plataforma ancla.anchor-platform
: Una instancia local de la plataforma ancla.sdp-api
: Servicio SDP ejecutándose en el puerto 8000.sdp-tss
: Servicio de envío de transacciones.sdp-frontend
: Servicio frontend de la SDP ejecutándose en el puerto 3000.kafka
: Servicio Kafka ejecutándose en los puertos 9092, 9094(external).kafka-init
: Flujo de trabajo inicial para ejecutar el contenedor de Kafka y crear temas.demo-wallet
: El cliente de billetera demo que será utilizado como billetera receptora, ejecutándose en el puerto 4000.
Proceso de aprovisionamiento de nuevos inquilinos
Cuando ejecutaste el archivo main.sh
, ya creaste nuevos inquilinos: tenants=("redcorp" "bluecorp")
. Para agregar más inquilinos, simplemente añádelos separados por espacios a esa variable de esta manera: tenants=("redcorp" "bluecorp" "greencorp")
y ejecuta main.sh
nuevamente.
Asegúrate de que los hosts de inquilino añadidos estén incluidos en el archivo de configuración de hosts. Para comprobarlo, puedes ejecutar el comando cat /etc/hosts
. Para incluirlos, puedes ejecutar el comando sudo nano /etc/hosts e insertar las líneas a continuación:
127.0.0.1 bluecorp.sdp.local
127.0.0.1 redcorp.sdp.local
Configura la contraseña del usuario propietario para cada inquilino
Pasa por el flujo de olvidé mi contraseña para poder iniciar sesión como un usuario propietario.
Ve a la página de olvidar contraseña en http://${tenant}.stellar.local:3000/forgot-password
e introduce el inquilino y el correo electrónico del propietario owner@${tenant}.org
.
Se generará un token y es posible verificarlo en los registros de sdp-api
. Este token será necesario para Restablecer la Contraseña en http://${tenant}.stellar.local:3000/reset-password
.
Iniciar sesión
Una vez que la contraseña de tu usuario objetivo de la organización se haya restablecido a una de tu elección, navega al panel abriendo un navegador a localhost:3000 e inicia sesión con la cuenta de usuario.
Haz clic en el botón Iniciar sesión y se abrirá el panel de SDP. En este momento no tendrás datos de desembolsos.
Crea tu primer desembolso
Navega al servicio frontend abriendo un navegador y yendo a http://bluecorp.stellar.local:3000.
- Haz clic en
Nuevo Desembolso+
en la pantalla del Panel. - Usa
Demo Wallet
como tu billetera y elige un método de verificación. - Sube un archivo de desembolso. Un archivo de plantilla puede ser descargado en la página frontend al crear un desembolso, y la plantilla cambiará de acuerdo con las opciones establecidas para ese desembolso. También puedes encontrar los archivos de plantilla en public/resources/disbursementTemplates. Asegúrate de actualizar el archivo antes de usarlo cambiando la información de contacto a la tuya y eliminando la línea de comentario.
- Finalmente, confirma el desembolso.
También tienes la opción de modificar el mensaje en la invitación al receptor.
Depositar dinero
Para depositar dinero en tu cuenta:
- Accede a demo-wallet en tu navegador.
- Haz clic en
Generar Keypair para nueva cuenta
para generar un nuevo keypair. Asegúrate de guardar tu clave pública y secreto si deseas usar esta cuenta más tarde. - Haz clic en
Crear cuenta
(frente a la clave pública) para crear la cuenta en la Stellar testnet. - Tu cuenta recién creada tendrá 10.000 XLM.
- Agrega tu dominio principal a la cuenta haciendo clic en
Agregar Dominio Principal
e ingresandohttp://bluecorp.stellar.local:8000
. - En el menú desplegable
Seleccionar acción
, seleccionaSEP-24 Depositar
. - En la nueva ventana, ingresa el número de teléfono del CSV de desembolso.
- Introduce el código de acceso. Puedes usar el código de acceso
000000
o encontrar el código de acceso real en los registros del contenedorsdp-api
. - Introduce la fecha de nacimiento que coincide con el número de teléfono en el CSV.
- Mantén un ojo en el panel hasta que el estado del pago alcance
Éxito
. Si todo fue configurado correctamente, tu dinero debería distribuirse con éxito.
Resolución de problemas
Cuenta de distribución sin fondos
Los pagos comenzarán a fallar si la cuenta de distribución se queda sin fondos. Para solucionarlo, puedes escribir un script que financie la cuenta de distribución o utilizar las herramientas disponibles para agregar más fondos a la cuenta de distribución siguiendo estos pasos:
- La dirección de la cuenta de distribución se puede encontrar bajo
Cuenta de Distribución
en la barra lateral del frontend. Copia esa dirección. - Accede a https://horizon-testnet.stellar.org/accounts/:accountId en tu navegador y verifica el saldo.
- Si el saldo es realmente bajo, puedes agregar más fondos creando una nueva cuenta y enviando fondos a la cuenta de distribución.
- Accede a demo-wallet.stellar.org en tu navegador.
- Haz clic en
Generar Keypair para nueva cuenta
para crear una nueva cuenta de testnet. Tu cuenta viene con 10.000 XLM. - Haz clic en
Enviar
e introduce la clave pública de la cuenta de distribución y la cantidad que deseas enviar. - Usando Freighter o Stellar Lab, intercambia el XLM por USDC si deseas probar con USDC.
Verifica tu identidad
Cuando se crea un desembolso, la SDP intenta enviar un mensaje a los receptores utilizando Twilio/AWS para SMS o correo electrónico, de acuerdo con el tipo de contacto asociado con el usuario. Este mensaje incluye un enlace a la aplicación de billetera seleccionada al crear el desembolso, y debe dirigir al receptor a instalar la aplicación de billetera, pasar por el flujo de incorporación de la billetera y, finalmente, registrarse en la SDP.
Nota que la configuración inicial tiene SMS_SENDER_TYPE=DRY_RUN
y EMAIL_SENDER_TYPE=DRY_RUN
, lo que significa que los mensajes serán impresos en los registros (del contenedor sdp-api
) en lugar de ser enviados.
Consulta la sección Mensajes de correo electrónico y SMS para aprender cómo configurar la mensajería en la SDP. Cuando lo hagas, y se cree otro desembolso, deberías recibir un mensaje como el siguiente.
Crear una cuenta receptora
Hacer clic en el enlace del mensaje de iniciación llevará al receptor a la demo-wallet, donde necesitarán crear una cuenta que será utilizada para recibir el pago de USDC. Sigue el mismo proceso descrito anteriormente para crear la cuenta y agregar una trustline a USDC.
Iniciar flujo web SEP-24
Ahora necesitaremos conectar la billetera demo a la instancia de la SDP que se ejecuta localmente. Para hacer esto, selecciona el ícono de lápiz junto a "centre.io" debajo de tu saldo de USDC e introduce "localhost:8080".
En el menú desplegable 'Seleccionar Acción', selecciona 'SEP-24 Depositar' para iniciar un flujo web SEP-24, que desencadena el proceso de Registro de Usuario para vincular la nueva billetera al número de teléfono en la SDP.
Aparecerá una ventana interactiva de SEP-24, donde el receptor puede seleccionar el tipo de información de contacto (por ejemplo, número de teléfono o correo electrónico) que está registrado para ellos en la base de datos de SDP.
En la siguiente pantalla de SEP-24 el usuario debe ingresar los datos de información de contacto (número de teléfono o correo electrónico) del CSV de desembolso.
A continuación, ingresa el código de acceso y el campo de verificación que utilizaste en el archivo de desembolso. Nota: usa 000000 para este ejemplo (o 999999 si quieres ver una respuesta de error).
El webflow proporciona un mensaje que indica tu registro exitoso, que es el desencadenante para que el SDP envíe el pago. Deberías recibir tu pago del SDP en breve.
Verifica tu saldo
Actualiza tu cuenta. La Demo Wallet ahora debería mostrar un saldo de 2 USDC enviados desde el SDP (o la cantidad que se definió en el archivo CSV).
Mantén un ojo en el panel hasta que el estado del pago alcance Éxito. Si todo se configuró correctamente, tu dinero debería ser desembolsado exitosamente.
Siguiente: Actualización de secretos de aplicación
Ahora que has podido hacer un desembolso, volvamos a nuestros archivos de docker compose y actualicemos algunos valores. Este es un paso importante antes de ir a producción. Actualizaremos claves de encriptación y secretos de aplicación.
Mensajes de Email y SMS
La Stellar Disbursement Platform envía correos a los usuarios y SMS/correos a los receptores. Para mensajes SMS, la Stellar Disbursement Platform admite Twilio, AWS SNS, y un modo de prueba que solo registra los mensajes. Para correos electrónicos, admite AWS SES, Twilio SendGrid, y modo de prueba.
Estos servicios se pueden seleccionar a través de las configuraciones SMS_SENDER_TYPE
y EMAIL_SENDER_TYPE
. Al seleccionar servicios de Twilio o AWS, necesitarás completar su configuración específica del servicio también. A continuación hay algunas configuraciones de ejemplo, y puedes mezclar y combinar los servicios como mejor te parezca.
Configuración de Modo de Prueba
El modo de prueba es útil para probar el SDP sin enviar mensajes reales. Registrarás los mensajes en la consola en lugar de enviarlos al receptor. Esta es la configuración predeterminada y funciona tanto para SMS como para Email.
- YAML
EMAIL_SENDER_TYPE: DRY_RUN
SMS_SENDER_TYPE: DRY_RUN
Configuración de SMS de Twilio
- YAML
SMS_SENDER_TYPE: TWILIO_SMS
# Twilio specific configuration
TWILIO_ACCOUNT_SID:
TWILIO_AUTH_TOKEN:
TWILIO_SERVICE_SID:
Configuración de Email de Twilio (Send Grid)
- YAML
SMS_SENDER_TYPE: TWILIO_EMAIL
# Twilio specific configuration
TWILIO_SENDGRID_API_KEY:
TWILIO_SENDGRID_SENDER_ADDRESS:
Configuración de SMS de AWS
- YAML
SMS_SENDER_TYPE: AWS_SMS
# AWS specific configuration.
# This is needed for both AWS Email and SMS
AWS_ACCESS_KEY_ID:
AWS_REGION:
AWS_SECRET_ACCESS_KEY:
# AWS SNS configuration
AWS_SNS_SENDER_ID:
Configuración de Email de AWS
- YAML
EMAIL_SENDER_TYPE: AWS_EMAIL
# AWS specific configuration.
# This is needed for both AWS Email and SMS
AWS_ACCESS_KEY_ID:
AWS_REGION:
AWS_SECRET_ACCESS_KEY:
# AWS SNS configuration
AWS_SES_SENDER_ID:
Autenticación
Las billeteras se autentican con la Stellar Disbursement Platform utilizando un protocolo de autenticación mutua, donde tanto el SDP como la billetera demuestran que poseen sus cuentas Stellar firmando una carga útil intercambiada entre sí. Una vez que este proceso esté completo, se proporciona un JWT a la billetera para usar en futuras solicitudes. Adicionalmente, los microservicios del SDP utilizan tokens de autenticación para comunicarse entre sí y para encriptar las contraseñas de los usuarios. Necesitamos proporcionar valores actualizados para todos estos casos de uso.
En docker-compose-sdp-anchor.yml
, actualiza lo siguiente:
- YAML
# The public key of the Stellar account used for SEP-10 authentication:
SEP10_SIGNING_PUBLIC_KEY:
#
# The private key of the Stellar account used for SEP-10 authentication. It
# should be the same secret key for both attributes below, for the Stellar
# Disbursement Platform and Anchor Platform:
SEP10_SIGNING_PRIVATE_KEY:
SECRET_SEP10_SIGNING_SEED:
#
# The encryption key used to sign the resulting SEP-10 JWT token:
SECRET_SEP10_JWT_SECRET:
#
# A shared encryption key used to sign JWT tokens in the SEP-24 from the Anchor
# Platform to the Stellar Disbursement Platform. The value needs to be the same
# for all three attributes below:
SEP24_JWT_SECRET:
SECRET_SEP24_INTERACTIVE_URL_JWT_SECRET:
SECRET_SEP24_MORE_INFO_URL_JWT_SECRET:
#
# A shared encryption key used to sign JWT tokens in the PlatformAPI
# communications from the Stellar Disbursement Platform to the Anchor Platform.
# The value needs to be the same for both attributes below:
ANCHOR_PLATFORM_OUTGOING_JWT_SECRET:
SECRET_PLATFORM_API_AUTH_SECRET:
#
# The private key is used to sign JWT tokens for authenticating the requests
# incoming to the Stellar Disbursement Platform. The Public key is used to
# validate that the JWT token was signed by the SDP's private key. They can be
# generated with these commands:
# openssl ecparam -name prime256v1 -genkey -noout -out ec_private_key.pem
# openssl pkcs8 -topk8 -nocrypt -in ec_private_key.pem -out ec_private_key_pkcs8.pem
# openssl ec -in ec_private_key.pem -pubout -out ec_public_key.pem
EC256_PUBLIC_KEY:
EC256_PRIVATE_KEY:
#
Hay muchos otros valores de configuración que actualizar al mover a un entorno de producción, como credenciales de base de datos, URLs, y más.
Sube de nivel
Activos y Billeteras Personalizados
El SDP contiene una lista de activos y billeteras disponibles para desembolsos listos para usar. Podrías querer personalizarlos, ya sea para limitar/ampliar opciones o para prepararte para ir en vivo en producción. Ahora que has hecho un desembolso y añadido secretos de aplicación, veamos cómo personalizar las nuevas opciones de desembolso.
Activos
Puedes agregar y eliminar activos fácilmente en el panel del SDP. El backend del SDP maneja la solicitud sin problemas, incluyendo la verificación del saldo pendiente y la adición/eliminación de líneas de confianza en la red Stellar. Cuando se eliminan activos, el registro se conserva en la base de datos para preservar un historial completo. Sin embargo, el activo ya no estará disponible para desembolsos o mantener un saldo en la cuenta de distribución.
Dirígete a la página de Billeteras del panel del SDP para agregar y eliminar activos. Necesitarás el código de activo Stellar y la clave pública del emisor del activo.
Por favor asegúrate de actualizar la configuración adecuada en el lado de Anchor Platform, de acuerdo con la guía de Puntos de Integración de Anchor Platform.
Billeteras
Para una visión completa sobre cómo agregar billeteras y cómo hacer que una billetera sea compatible con SDP, consulta la guía de Preparar Tu Billetera para SDP.
Registro de Dirección de Billetera
Desde la versión 3.0.0
, el SDP puede pagar directamente a direcciones de billetera Stellar en lugar de dirigir a los receptores a través del flujo de registro. Esto es útil para organizaciones que están pagando a receptores que ya tienen billeteras Stellar y no necesitan crear una nueva.
Para usar esta función, sigue estos pasos:
- Asegúrate de que la Billetera Administrada por el Usuario esté habilitada en la sección de Proveedores de Billetera (también disponible en
GET /wallets
). - Si no está habilitada, puedes actualizarla a través del panel de UI o con
PATCH /wallets/{id}
. - Ahora puedes crear un desembolso y seleccionar del
dropdown de Tipo de Contacto de registro
una opción que contengaDirección de Billetera
en el nombre. - Prepara el archivo CSV de acuerdo con el muestra de CSV asociado con tu configuración de desembolso.
- Sube el archivo CSV y confirma el desembolso como de costumbre. El SDP enviará el pago directamente a las direcciones de billetera proporcionadas en el CSV ✅.