Configuración
Para habilitar los depósitos y retiradas SEP-6, la Anchor Platform debe estar configurada para hacer lo siguiente:
- Proporcionar las URLs de servicio necesarias para los endpoints SEP-6, 12 y 38 en el archivo
stellar.toml - Proporcionar información sobre los activos on y off-chain, así como las vías de pago admitidas por tu negocio vía los endpoints
/infode SEP-6 y SEP-38 - Admitir los endpoints y callbacks necesarios para solicitar información KYC y proporcionar tasas de cambio
Habilitar Depósitos y Retiradas Programáticos
Agrega las siguientes variables a tu archivo de entorno.
- bash
# dev.env
SEP6_ENABLED=true
SEP12_ENABLED=true
SEP38_ENABLED=true
Modificar un Archivo Stellar Info
Vamos a modificar el archivo stellar.toml creado antes. Las billeteras necesitan saber que tu negocio admite la funcionalidad SEP-6, y también necesitan conocer todos los activos Stellar que admites.
- TOML
# 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 clave de paso de la red pública, tus URLs de servicio de producción, tus cuentas de distribución y claves de firma de Mainnet, así como las cuentas emissoras de activos de Mainnet que utiliza tu servicio.
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 activos de ejemplo habilita el soporte para USDC de Circle y un fiat USD para depositar y retirar.
Los métodos especificados en las secciones sep38 son métodos que el endpoint SEP-38 GET /info expondrá.
Los métodos especificados en las secciones deposit y withdraw son los métodos que el endpoint SEP-6 GET /info expondrá. Los métodos listados deben coincidir con los métodos definidos en la sección SEP-38 del archivo.
También ten en cuenta que los activos fiat, aquellos con schema: iso4217, no necesitan especificar los objetos de configuración sep6_enabled, deposit o withdraw. De manera similar, los activos Stellar, aquellos con schema: stellar, no necesitan especificar los objetos de configuración sep38.sell_delivery_methods o sep38.buy_delivery_methods.
- YAML
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
Ten en cuenta que el ejemplo anterior lista un atributo distribution_account para la entrada USDC. Si se especifica, esta cuenta será proporcionada junto con un memo único y generado aleatoriamente por transacción a los clientes como la dirección a la cual enviar fondos para transacciones de retirada. El memo de la transacción es cómo tú o la Anchor Platform harán coincidir los fondos recibidos con un registro de transacción en la base de datos de Anchor Platform.
Si no dispones de tu propia cuenta Stellar y en su lugar usas un tercero que te proporciona una cuenta Stellar y memo para recibir fondos en tu nombre, como un exchange o custodio, debes omitir el campo distribution_account de tu archivo de configuración de activos. En su lugar, deberás proporcionar la cuenta Stellar y memo que desees usar para recibir fondos mediante una solicitud al Anchor Platform request_onchain_funds para cada transacción.
Para configurar la Anchor Platform para esperar que la cuenta Stellar y memo se proporcionen vía API en lugar de configurarse vía archivo de activos, especifica la siguiente variable de entorno.
- bash
# dev.env
SEP6_DEPOSIT_INFO_GENERATOR_TYPE=none
Habilitar Callbacks al Servidor del Negocio
Los negocios necesitan recolectar y validar la información KYC de los clientes para quienes están facilitando transacciones. Los clientes preguntan a tu negocio qué información KYC debe recopilarse y envían esa información mediante la API KYC SEP-12 alojada por la Anchor Platform, pero la Anchor Platform nunca almacena información de identificación personal (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 deben proporcionar a los clientes una API Rates para consultar las tasas de cambio que están ofreciendo entre los activos onchain y offchain admitidos por el negocio. Si la tasa es competitiva, los clientes también deben poder solicitar un compromiso con la tasa actualmente ofrecida por el negocio por un corto período de tiempo. De manera similar a la API KYC, la Anchor Platform realiza solicitudes a tu servidor empresarial para obtener tasas de cambio y cotizaciones y las devuelve a los clientes.
Para habilitar estas solicitudes a tu servidor empresarial, primero necesitarás agregar tu servidor al archivo docker compose. Luego, para admitir solicitudes a tu servidor empresarial desde la Anchor Platform, necesitas habilitar callbacks.
- bash
# 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 Anchor Platform que incluya un JWT, firmado con el secreto configurado, en el encabezado Authorization de las solicitudes realizadas a /callbacks/<callback endpoint> para que tu servidor pueda autenticar a la Anchor Platform antes de procesar las solicitudes.
Consulta la API KYC y la API de Tasas para detalles sobre los endpoints que deben implementarse en tu servidor empresarial.
Configuración Opcional Adicional
more_info_url es una URL opcional proporcionada por tu servidor empresarial para que las aplicaciones de billeteras muestren información sobre transacciones iniciadas previamente. Esta URL es usada típicamente por las billeteras en sus vistas de historial de transacciones, y tu negocio puede especificar la información que se mostrará sobre la transacción.
- bash
# 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 un plazo para las acciones del usuario en las transacciones usando 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 predeterminado (en segundos) que el usuario tiene para actuar antes de que la transacción pase al estado EXPIRED.
- bash
# dev.env
SEP6_INITIAL_USER_DEADLINE_SECONDS=1209600
Probar con la Demo Wallet
Las billeteras ahora deberían poder descubrir, autenticarse e iniciar transacciones con tu servicio. Tu proyecto y archivos fuente deberían verse ahora algo así.
- Ejemplo
├── dev.env
├── docker-compose.yaml
├── config
│ ├── dev.assets.yaml
│ ├── dev.stellar.toml
Tu entorno ahora debería verse algo parecido a lo siguiente.
- bash
# 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 Stellar Demo Wallet.
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
- el código del activo Stellar en tu archivo
- Selecciona el desplegable y haz clic en "SEP-6 Deposit", luego haz clic en "Start"
La demo wallet debería poder encontrar tu archivo stellar.toml, autenticarse usando el par de claves Stellar que acabas de crear e iniciar una transacción.