Configuración
Para habilitar depósitos y retiradas SEP-6, la Anchor Platform debe configurarse para hacer lo siguiente:
- Proporciona las URL de servicio necesarias para los puntos finales SEP-6, 12 y 38 en el archivo
stellar.toml
- Proporciona información sobre los activos on-chain y off-chain, así como los métodos de pago, que tu negocio apoya a través de los puntos finales
/info
SEP-6 y SEP-38 - Soporta los puntos finales y callbacks necesarios para solicitar información KYC y proporcionar tasas de cambio
Habilitar Depósitos y Retiradas Programáticas
Agrega las siguientes variables a tu archivo de entorno.
- bash
# 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
que creamos anteriormente. Las billeteras necesitan saber que la funcionalidad SEP-6 es soportada por tu negocio, y también necesitan conocer todos los activos Stellar que apoyas.
- 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"
Nota que necesitarás crear otro archivo para tu implementación de producción que use la frase de paso de la red pública, las URL de servicio de producción, las cuentas de distribución en Mainnet y la clave de firma, así como las cuentas de emisión de Mainnet de los activos 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 dependiendo de tu caso de uso. Este archivo de activos 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 métodos que se expondrán a través del punto final SEP-38 GET /info
.
Los métodos especificados en las secciones deposit
y withdraw
son los que se expondrán a través del punto final SEP-6 GET /info
. Los métodos listados deben igualar los métodos definidos en la sección SEP-38 del archivo.
También nota que los activos fiat, aquellos con el schema: iso4217
, no necesitan los objetos de configuración sep6_enabled
, deposit
o withdraw
especificados. De la misma manera, los activos Stellar, aquellos con schema: stellar
, no necesitan los objetos de configuración sep38.sell_delivery_methods
o sep38.buy_delivery_methods
especificados.
- 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
Gestionando las Cuentas de Distribución
Nota que el ejemplo anterior lista un atributo distribution_account
para la entrada de USDC. Si se especifica, esta cuenta se proporcionará junto con un memo único y generado aleatoriamente por transacción a los clientes como la dirección a la que se enviarán los fondos para las transacciones de retirada de fondos. El memo de la transacción es cómo tú o la Anchor Platform igualarán los fondos recibidos con un registro de transacción en la base de datos de la Anchor Platform.
Si no tienes tu propia cuenta Stellar y en su lugar utilizas a un tercero que te proporciona una cuenta Stellar y un memo para recibir fondos en tu nombre, como un intercambio o custodio, deberías omitir el campo distribution_account
de tu archivo de configuración de activos. En cambio, necesitarás proporcionar la cuenta Stellar y el memo que te gustaría usar para recibir fondos a través de una solicitud al request_onchain_funds
de la Anchor Platform por cada transacción.
Para configurar la Anchor Platform para esperar que la cuenta Stellar y el memo se proporcionen a través de la API en lugar de configurarse a través del archivo de activos, especifica la siguiente variable de entorno.
- bash
# dev.env
SEP6_DEPOSIT_INFO_GENERATOR_TYPE=none
Si utilizas un proveedor de billetera soportado por el servicio de custodia de la Anchor Platform, como Fireblocks, también puedes configurar la Anchor Platform para conectarse directamente a tu proveedor de billetera para obtener tus cuentas de distribución y memos. Si esto está configurado, la Anchor Platform 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 función, pero primero deberás especificar un valor diferente para la variable de entorno mencionada anteriormente.
- bash
# dev.env
SEP6_DEPOSIT_INFO_GENERATOR_TYPE=custody
Habilitar Callbacks al Servidor del Negocio
Los negocios necesitan recopilar y validar la información KYC de los clientes para los que están facilitando transacciones. Los clientes preguntan a tu negocio qué información KYC necesita ser recopilada y envían esa información a través de la API KYC SEP-12 alojada por la Anchor Platform, pero la Anchor Platform nunca almacena información personal identificable (PII). En cambio, 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 de Rates para verificar las tasas de cambio que están ofreciendo entre los activos on-chain y off-chain soportados por el negocio. Si la tasa es competitiva, los clientes también deben poder solicitar un compromiso con la tasa que se está ofreciendo actualmente por parte del negocio por un corto período de tiempo. De manera similar a la API KYC, la Anchor Platform 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 de negocio, primero necesitarás agregar tu servidor de negocio al archivo docker compose. Luego, para soportar solicitudes a tu servidor de negocio 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 hechas 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 Rates para obtener detalles sobre los puntos finales que deben implementarse en tu servidor de negocio.
Configuración Adicional Opcional
more_info_url
es una URL opcional proporcionada por tu servidor de negocio para que las aplicaciones de billetera muestren información sobre transacciones iniciadas previamente. Esta URL se utiliza comúnmente 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 de los usuarios en las transacciones utilizando el campo user_action_required_by
. Para ejemplos, consulta JSON-RPC Methods. Además, el parámetro initial_user_deadline_seconds
establece un tiempo predeterminado (en segundos) que un 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 Billetera Demo
¡Las billeteras ahora deberían poder descubrir, autenticar y iniciar transacciones con tu servicio! Tu proyecto y archivos fuente ahora deberían verse algo así.
- Ejemplo
├── dev.env
├── docker-compose.yaml
├── config
│ ├── dev.assets.yaml
│ ├── dev.stellar.toml
Tu entorno ahora debería verse algo como 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 Billetera Demo Stellar.
Inicia una transacción de depósito haciendo lo siguiente:
- Crea un nuevo par de claves
- Haz clic en el botón "Agregar Activo" y entra
- 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 "Depósito SEP-6", luego haz clic en "Iniciar"
La billetera demo debería ser capaz de encontrar tu archivo stellar.toml
, autenticarse usando el par de claves Stellar que acabas de crear, e iniciar una transacción.