Configuración
Para habilitar los depósitos y retiradas SEP-6, la Anchor Platform debe ser 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-chain y off-chain, así como sobre los métodos de pago, admitidos por tu negocio a través de los endpoints
/info
SEP-6 y SEP-38 - Admitir los endpoints y callbacks requeridos para solicitar información KYC y proporcionar tasas de cambio
Habilitar depósitos y retiradas programáticas
Añade 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 de Stellar
Let's modify the stellar.toml
file created earlier. Las billeteras necesitan saber que la funcionalidad SEP-6 es admitida por tu negocio, y también necesitan saber 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 implementación de producción que utilice la frase de paso de la red pública, las URLs de servicio de producción, tus cuentas de distribución de 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 según tu caso de uso. Este archivo de activos de ejemplo habilita la compatibilidad con el USDC de Circle y un USD fiat para depositar y retirar.
Los métodos especificados en las secciones sep38
son métodos que serán expuestos por el endpoint SEP-38 GET /info
.
Los métodos especificados en las secciones deposit
y withdraw
son los métodos que serán expuestos por el endpoint SEP-6 GET /info
. Los métodos listados deben coincidir con los métodos definidos en la sección SEP-38 del archivo. 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 el schema: iso4217
, no necesitan que se especifiquen los objetos de configuración sep6_enabled
, deposit
, o withdraw
. De la misma manera, los activos Stellar, aquellos con schema: stellar
, no necesitan que se especifiquen los objetos de configuración sep38.sell_delivery_methods
o sep38.buy_delivery_methods
.
- YAML
assets:
- schema: stellar
code: USDC
issuer: GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
distribution_account: GBLSAHONJRODSFTLOV225NZR4LHICH63RIFQTQN37L5CRTR2IMQ5UEK7
significant_decimals: 2
sep6_enabled: true
sep38_enabled: true
sep38:
exchangeable_assets:
- iso4217:USD
deposit:
enabled: true
methods:
- ACH
withdraw:
enabled: true
methods:
- ACH
- schema: iso4217
code: USD
significant_decimals: 2
sep38_enabled: true
sep38:
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 cuentas de distribución
Ten en cuenta 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 generado aleatoriamente y único por transacción a los clientes como la dirección a la que enviar 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 un tercero que te proporciona una cuenta Stellar y un memo para poder 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, necesitas proporcionar la cuenta Stellar y el memo que te gustaría usar para recibir fondos a través de una solicitud a la Anchor Platform request_onchain_funds
de manera individual por transacción.
Para configurar la Anchor Platform para que espere que la cuenta Stellar y el memo sean proporcionados a través de API en lugar de configurados 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 billeteras que sea admitido 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 billeteras para obtener tus cuentas de distribución y memos. Si esto está configurado, la Anchor Platform también utilizará el proveedor de billeteras para enviar fondos a los clientes. Consulta la sección [servicios de custodia] para más información sobre cómo configurar esta función, pero primero necesitarás especificar un valor diferente para la variable de entorno antes mencionada.
- 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 quienes facilitan 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 personalmente 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 Rates para verificar las tasas de cambio que están ofreciendo entre los activos on-chain y off-chain admitidos por el negocio. Si la tasa es competitiva, los clientes también deben poder solicitar un compromiso con la tasa que actualmente se ofrece por el negocio por un corto período de tiempo. De manera similar a la API KYC, la Anchor Platform hace 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 admitir 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"
The above tells the Anchor Platform to include a JWT, signed with the configured secret, in the Authorization
header of requests made to /callbacks/<callback endpoint>
so your server can authenticate the Anchor Platform before processing requests.
Consulta la API KYC y la API Rates para más detalles sobre los endpoints que deben ser implementados 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 anteriormente. Esta URL es típicamente utilizada por 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 una fecha límite para las acciones del usuario en 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
Prueba con la billetera de demostración
¡Las billeteras deberían ahora poder descubrir, autenticar e iniciar transacciones con tu servicio! Tus archivos del proyecto y de origen deberían ahora verse algo así.
- Ejemplo
├── dev.env
├── docker-compose.yaml
├── config
│ ├── dev.assets.yaml
│ ├── dev.stellar.toml
Tu entorno debería ahora verse algo así.
- 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 keypair
- Haz clic en el botón "Añadir activo" e introduce
- 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 menú desplegable y haz clic en "SEP-6 Deposit", luego haz clic en "Iniciar"
La billetera de demostración debería poder encontrar tu archivo stellar.toml
, autenticar utilizando el keypair Stellar que acabas de crear y iniciar una transacción.