Saltar al contenido principal
Versión: Siguiente

Configuración

Para habilitar depósitos y retiros SEP-6, la Plataforma Anchor debe configurarse para hacer lo siguiente:

  • Proporcionar las URLs del servicio necesarias para los puntos finales SEP-6, 12 y 38 en el archivo stellar.toml
  • Proporcionar información sobre los activos onchain y offchain, así como las vías de pago, que tu negocio soporta mediante los puntos finales SEP-6 y SEP-38 /info
  • Soportar los endpoints y callbacks necesarios para solicitar información KYC y proporcionar tasas de cambio

Habilitar Depósitos y Retiros Programáticos

Agrega las siguientes variables a tu archivo de entorno.

# dev.env
SEP6_ENABLED=true
SEP12_ENABLED=true
SEP38_ENABLED=true

Modificar un Archivo de Información Stellar

Vamos a modificar el archivo stellar.toml creado anteriormente. Las billeteras necesitan saber que la funcionalidad SEP-6 está soportada por tu negocio, y también necesitan conocer todos los activos Stellar que soportas.

# dev.stellar.toml
ACCOUNTS = ["add your public keys for your distribution accounts here"]
SIGNING_KEY = "add your signing key here"
NETWORK_PASSPHRASE = "Test SDF Network ; September 2015"

TRANSFER_SERVER = "http://localhost:8080/sep6"
WEB_AUTH_ENDPOINT = "http://localhost:8080/auth"
KYC_SERVER = "http://localhost:8080/sep12"
ANCHOR_QUOTE_SERVER = "http://localhost:8080/sep38"

# Add support for USDC
[[CURRENCIES]]
code = "USDC"
issuer = "GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5"
status = "test"
is_asset_anchored = false
desc = "USD Coin issued by Circle"

[DOCUMENTATION]
ORG_NAME = "Your organization"
ORG_URL = "Your website"
ORG_DESCRIPTION = "A description of your organization"

Ten en cuenta que necesitarás crear otro archivo para tu despliegue en producción que use la frase de paso de la red pública, tus URLs de servicio de producción, tus cuentas de distribución Mainnet y clave de firma, así como las cuentas emisoras Mainnet de los activos que tu servicio utilice.

Modificar el Archivo de Configuración de Activos

Ahora estás listo para especificar lo siguiente en tu archivo dev.assets.yaml y cambiar los valores según tu caso de uso. Este archivo de ejemplo habilita el soporte para USDC de Circle y un USD fiat para depositar y retirar.

Los métodos especificados en las secciones sep38 son los que expondrá el endpoint SEP-38 GET /info.

Los métodos especificados en las secciones deposit y withdraw son los que expondrá el endpoint SEP-6 GET /info. Los métodos listados deben coincidir con los definidos en la sección SEP-38 del archivo.

También observa que los activos fiat, aquellos con schema: iso4217, no necesitan los objetos de configuración sep6_enabled, deposit o withdraw especificados. De igual forma, los activos Stellar, aquellos con schema: stellar, no necesitan los objetos de configuración sep38.sell_delivery_methods ni sep38.buy_delivery_methods especificados.

items:
- id: stellar:USDC:GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
distribution_account: GBLSAHONJRODSFTLOV225NZR4LHICH63RIFQTQN37L5CRTR2IMQ5UEK7
significant_decimals: 2
sep6:
enabled: true
deposit:
enabled: true
min_amount: 0
max_amount: 10
methods:
- ACH
withdraw:
enabled: true
min_amount: 0
max_amount: 10
methods:
- ACH
sep38:
enabled: true
exchangeable_assets:
- iso4217:USD
- id: iso4217:USD
significant_decimals: 2
sep38:
enabled: true
exchangeable_assets:
- stellar:USDC:GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
buy_delivery_methods:
- name: ACH
description: ACH debits for US bank accounts
sell_delivery_methods:
- name: ACH
description: ACH credit for US bank accounts

Administrar Cuentas de Distribución

Observa que en el ejemplo anterior se lista un atributo distribution_account para la entrada USDC. Si se especifica, esta cuenta será proporcionada junto con un memo generado aleatoriamente y único por transacción a los clientes como la dirección a la que enviar fondos para las transacciones de retiro. El memo de la transacción es cómo tú o la Plataforma Anchor coincidirán los fondos recibidos con un registro de transacción en la base de datos de la Plataforma Anchor.

Si no tienes una cuenta Stellar propia y usas un tercero que te proporciona una cuenta Stellar y memo para que puedan recibir fondos en tu nombre, como un exchange o custodio, deberías omitir el campo distribution_account de tu archivo de configuración de activos. En su lugar, necesitarás proporcionar la cuenta Stellar y memo que deseas usar para recibir fondos mediante una solicitud al request_onchain_funds de la Plataforma Anchor por cada transacción.

Para configurar la Plataforma Anchor para que espere que la cuenta Stellar y el memo se proporcionen vía API en lugar de configurarse mediante el archivo de activos, especifica la siguiente variable de entorno.

# dev.env
SEP6_DEPOSIT_INFO_GENERATOR_TYPE=none

Si usas un proveedor de billetera soportado por el servicio de custodia de la Plataforma Anchor, como Fireblocks, también puedes configurar la Plataforma Anchor para conectar directamente con tu proveedor de billetera y obtener las cuentas de distribución y sus memos. Si esto está configurado, la Plataforma Anchor también usará el proveedor de billetera para enviar fondos a los clientes. Consulta la sección de [servicios de custodia] para más información sobre cómo configurar esta característica, pero primero deberás especificar un valor diferente para la variable de entorno mencionada anteriormente.

# dev.env
SEP6_DEPOSIT_INFO_GENERATOR_TYPE=custody

Habilitar Callbacks al Servidor del Negocio

Los negocios necesitan recopilar y validar información KYC de los clientes para quienes facilitan transacciones. Los clientes preguntan a tu negocio qué información KYC debe recopilarse y envían esa información a través de la API KYC SEP-12 hospedada por la Plataforma Anchor, pero la Plataforma Anchor nunca almacena información personal identificable (PII). En su lugar, reenvía las solicitudes de los clientes al servidor del negocio y devuelve las respuestas del negocio al cliente, actuando como un servidor proxy.

Además, los negocios necesitan proporcionar a los clientes una API de Tasas para consultar las tasas de cambio que ofrecen entre los activos onchain y offchain soportados por el negocio. Si la tasa es competitiva, los clientes también deben poder solicitar un compromiso con la tasa que el negocio ofrece por un período corto de tiempo. De manera similar a la API KYC, la Plataforma Anchor realiza solicitudes a tu servidor de negocio para obtener tasas de cambio y cotizaciones, y las devuelve a los clientes.

Para habilitar estas solicitudes a tu servidor del negocio, primero deberás agregar tu servidor del negocio al archivo docker compose. Luego, para soportar solicitudes hacia tu servidor desde la Plataforma Anchor, necesitas habilitar los callbacks.

# dev.env
CALLBACK_API_BASE_URL=http://business-server:3000/callbacks
CALLBACK_API_AUTH_TYPE=jwt
CALLBACK_API_AUTH_JWT_EXPIRATION_MILLISECONDS=30000
CALLBACK_API_AUTH_JWT_HTTP_HEADER=Authorization
SECRET_CALLBACK_API_AUTH_SECRET="a secret used to sign JWTs"

Lo anterior indica a la Plataforma Anchor que incluya un JWT, firmado con el secreto configurado, en el encabezado Authorization de las solicitudes hechas a /callbacks/<callback endpoint> para que tu servidor pueda autenticar la Plataforma Anchor antes de procesar las solicitudes.

Consulta la API KYC y la API de Tasas para detalles sobre los puntos finales que deben implementarse en tu servidor del negocio.

Configuración Adicional Opcional

more_info_url es una URL opcional proporcionada por tu servidor del negocio para que las aplicaciones de billetera muestren información sobre transacciones iniciadas previamente. Esta URL es típicamente usada por las billeteras en sus vistas de historial de transacciones, y tu negocio puede especificar la información a mostrar acerca de la transacción.

# dev.env
SEP6_MORE_INFO_URL_BASE_URL=http://example.com
SECRET_SEP6_MORE_INFO_URL_JWT_SECRET="your encryption key shared with your business server"

Los negocios pueden establecer una fecha límite para acciones del usuario sobre transacciones mediante el campo user_action_required_by. Para ejemplos, consulta los Métodos JSON-RPC. Además, el parámetro initial_user_deadline_seconds establece un tiempo por defecto (en segundos) que tiene el usuario para actuar antes de que la transacción pase al estado EXPIRED.

# dev.env
SEP6_INITIAL_USER_DEADLINE_SECONDS=1209600

Probar con la Billetera Demo

Las billeteras ahora deberían poder descubrir, autenticar y comenzar transacciones con tu servicio. Tu proyecto y archivos fuente ahora deberían verse algo así.

├── dev.env
├── docker-compose.yaml
├── config
│ ├── dev.assets.yaml
│ ├── dev.stellar.toml

Tu entorno ahora debería verse similar al siguiente.

# dev.env
ASSETS_TYPE=file
ASSETS_VALUE=/home/dev.assets.yaml

SEP1_ENABLED=true
SEP1_TOML_TYPE=file
SEP1_TOML_VALUE=/home/dev.stellar.toml

SEP6_ENABLED=true
SEP6_DEPOSIT_INFO_GENERATOR_TYPE=none
SEP6_MORE_INFO_URL_BASE_URL=http://example.com
SECRET_SEP6_MORE_INFO_URL_JWT_SECRET="your encryption key shared with your business server"

SEP10_ENABLED=true
SEP10_HOME_DOMAIN=localhost:8080
SECRET_SEP10_SIGNING_SEED="a Stellar private key"
SECRET_SEP10_JWT_SECRET="a secret used to sign JWTs"

SEP12_ENABLED=true

SEP38_ENABLED=true

CALLBACK_API_BASE_URL=http://business-server:3000/callbacks
CALLBACK_API_AUTH_TYPE=jwt
CALLBACK_API_AUTH_JWT_EXPIRATION_MILLISECONDS=30000
CALLBACK_API_AUTH_JWT_HTTP_HEADER=Authorization
SECRET_CALLBACK_API_AUTH_SECRET="a secret used to sign JWTs"

Para probar esto, ve a la Billetera Demo Stellar.

Inicia una transacción de depósito haciendo lo siguiente:

  • Crear un nuevo par de claves
  • Haz clic en el botón "Add Asset" e ingresa
    • el código del activo Stellar en tu archivo stellar.toml
    • tu dominio principal, localhost:8080
  • Selecciona el desplegable y haz clic en "SEP-6 Deposit", luego haz clic en "Start"

La billetera demo debería poder encontrar tu archivo stellar.toml, autenticar usando el par de claves Stellar que acabas de crear e iniciar una transacción.