Saltar al contenido principal
Versión: 3.0.0

Comenzar

Instalación

La forma más fácil de instalar la Anchor Platform es extraer la imagen de docker.

docker pull stellar/anchor-platform:latest

Configurar el Entorno de Desarrollo

En esta guía, utilizaremos docker compose por simplicidad, pero también puedes ejecutar la Anchor Platform utilizando otras herramientas que admiten docker, como minikube o un clúster completo de kubernetes.

Creemos un archivo de compose mínimo para empezar.

# docker-compose.yml
services:
sep-server:
image: stellar/anchor-platform:latest
command: --sep-server
ports:
- "8080:8080"
env_file:
- ./dev.env
volumes:
- ./config:/home
platform-server:
image: stellar/anchor-platform:latest
command: --platform-server
ports:
- "8085:8085"
env_file:
- ./dev.env
volumes:
- ./config:/home

La opción --sep-server indica a la Anchor Platform que haga disponibles los endpoints de la API definidos por las SEPs que has habilitado a través de la configuración en el puerto 8080.

La opción --platform-sever hace que la API de la Plataforma esté disponible, que es la API de backend que tu(s) servicio(s) utilizarán para comunicarse con la Anchor Platform. Estará disponible en el puerto 8085

Configuración

La Anchor Platform admite dos enfoques para la configuración:

  • usando variables de entorno
  • usando un archivo de configuración YAML

Se puede utilizar uno o una combinación de ambos enfoques. Las variables anidadas en el archivo YAML se expresan usando guiones bajos o puntos (_, .) al usar variables de entorno. Demostraremos ambos enfoques aquí, pero utilizaremos exclusivamente variables de entorno en las secciones posteriores. Consulta el conjunto completo de opciones de configuración en el archivo de valores predeterminados de la Anchor Platform.

información

La Anchor Platform no permite secretos de aplicación en el archivo de configuración YAML. En su lugar, los secretos de aplicación, que todos tienen el prefijo SECRET_, deben especificarse en el entorno.

Creamos el archivo de entorno especificado en nuestro archivo de docker compose.

touch dev.env

Y si estás utilizando un archivo de configuración YAML, también crearemos ese archivo.

mkdir config
touch config/dev.services.yaml

Necesitarás informar a la Anchor Platform dónde puede encontrar tu archivo de configuración. Así que añadimos una variable de entorno para eso.

# dev.env
STELLAR_ANCHOR_CONFIG=/home/dev.services.yaml

Especifica la versión del esquema de configuración en tu archivo YAML.

# dev.services.yaml
version: 1

Cambiar el Puerto del Servidor de la Plataforma

Por ejemplo, cambiemos el puerto del servidor de la plataforma.

Usando variables de entorno, esto es simplemente:

# dev.env
PLATFORM_SERVER_PORT=8085

O si utilizas configuración YAML:

# dev.services.yaml
platform_server:
port: 8085

Especifica los Activos de tu Servicio

Añadamos los activos que tu implementación de la Anchor Platform utilizará. Esta configuración se especifica en un archivo YAML. Si solo estás utilizando la Anchor Platform para alojar un archivo stellar.toml SEP-1 o para ejecutar la Autenticación Stellar SEP-10, puedes omitir este paso.

touch config/dev.assets.yaml

En esta guía, construiremos servicios de anclaje para el USDC de Circle en la red de prueba de Stellar. Actualiza los valores anteriores según los activos que emitirás. Asegúrate de especificar el emisor de testnet en tu archivo de desarrollo y crear tu propia cuenta_distribution utilizando una herramienta como Stellar Lab. La cuenta_distribution será utilizada por tus clientes como la cuenta de destino para los pagos a tu servicio.

# dev.assets.yaml
assets:
- schema: stellar
code: USDC
issuer: GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
distribution_account: GBLSAHONJRODSFTLOV225NZR4LHICH63RIFQTQN37L5CRTR2IMQ5UEK7
significant_decimals: 2

Este archivo necesita ser referenciado en nuestra configuración para que la Anchor Platform pueda encontrarlo.

Usando variables de entorno:

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

Usando un archivo YAML:

# dev.services.yaml
assets:
type: file
value: /home/dev.assets.yaml

Añadir Persistencia de Datos

La Anchor Platform admite PostgreSQL y Aurora PostgreSQL para su uso en producción, pero también admite H2 o SQLite para su uso en desarrollo. Para gestionar migraciones, la Anchor Platform utiliza Flyway. La última versión de PostgreSQL admitida por Flyway es PostgreSQL 14.

Antes de continuar, añadamos una base de datos a nuestro entorno de desarrollo para que las transacciones que iniciamos persistan después de detener el servicio.

Una base de datos solo es necesaria si se utiliza la Anchor Platform para facilitar transacciones.

# docker-compose.yml
version: "3.8"
services:
sep-server:
image: stellar/anchor-platform:latest
command: --sep-server
env_file:
- ./dev.env
volumes:
- ./config:/home
ports:
- "8080:8080"
depends_on:
- db
platform-server:
image: stellar/anchor-platform:latest
command: --platform-server
env_file:
- ./dev.env
volumes:
- ./config:/home
ports:
- "8085:8085"
depends_on:
- db
db:
image: postgres:14
ports:
- "5432:5432"
env_file:
- ./dev.env
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql

Ahora actualicemos nuestro entorno para que el servidor de la plataforma pueda conectarse al servidor de la base de datos.

# dev.env
DATA_TYPE=postgres
DATA_SERVER=db
DATA_DATABASE=platform
DATA_FLYWAY_ENABLED=true

SECRET_DATA_USERNAME=postgres
SECRET_DATA_PASSWORD=password

POSTGRES_USER=postgres
POSTGRES_PASSWORD=password

Si estás utilizando configuración YAML en su lugar, las variables de entorno POSTGRES_ deben estar siempre en el entorno, ya que son para tu servidor de base de datos, no para la Anchor Platform. Los secretos también deben especificarse en el entorno.

# dev.services.yaml
data:
type: postgres
server: db
database: platform
flyway_enabled: true

Tenemos que crear la base de datos platform antes de que el servidor de la plataforma pueda conectarse a ella, así que hagamos un script para crear nuestra base de datos.

touch init.sql
-- init.sql
CREATE DATABASE platform;

Intenta ejecutar el servidor de la plataforma además de la base de datos.

docker compose up

Deberías ver los registros informando una conexión exitosa a la base de datos postgres.

Configurar la Autenticación de la API de la Plataforma

Para facilitar los pagos transnacionales o las transacciones de depósito y retirada de fondos, tu negocio necesitará recuperar y actualizar los registros de transacciones de la API interna de la Anchor Platform. Actualmente, la opción --sep-server hace que las API públicas de SEP estén disponibles, mientras que la API interna de la Plataforma está disponible en el servidor de la Plataforma, iniciado por la opción --platform-server. El negocio debe hacer que el Servidor de la Plataforma sea accesible solo en la red interna, sin embargo, es posible añadir autenticación para acceder a la API interna de la Plataforma.

Añade las siguientes variables de entorno.

# dev.env
PLATFORM_API_BASE_URL=http://platform-server:8085
PLATFORM_API_AUTH_TYPE=jwt
SECRET_PLATFORM_API_AUTH_SECRET=[your jwt encryption key]

Al hacer solicitudes a la API de la Plataforma, añade un JWT firmado por el secreto definido en tu entorno al encabezado Authorization como un token bearer.

PLATFORM_API_BASE_URL usa platform en lugar de localhost como el host porque harás solicitudes a la API de la Plataforma dentro de la red local creada por docker compose. Al configurar tu servicio en un entorno de staging o producción, asegúrate de actualizar tus URLs de servicio.

Pasando flags de JVM

La Anchor Platform utiliza JVM para ejecutarse. A veces, se desea cambiar los flags de JVM para ejecutar el servicio. Para hacerlo, establece la variable ambiental JVM_FLAGS al valor apropiado

# dev.env
JVM_FLAGS="-Xms256m -Xmx2048m"
consejo

Si necesitas pasar una variable de entorno desde tu máquina al contenedor, debes usar la opción de compose environment para establecer las variables en su lugar. Aquí tienes un ejemplo de usar el keystore de tu máquina local en el contenedor:

# docker-compose.yml
version: "3.8"
services:
sep-server:
image: stellar/anchor-platform:latest
command: --sep-server
env_file:
- ./dev.env
environment:
JVM_FLAGS: -Djavax.net.ssl.trustStore=/keystore.jks -Djavax.net.ssl.trustStorePassword=${KEYSTORE_PASSWORD}
volumes:
- ${KEYSTORE_LOCATION}:/keystore.jks
# ...

Donde KEYSTORE_LOCATION es la ubicación del keystore local y KEYSTORE_PASSWORD es la contraseña del keystore local.