Comenzar
Instalación
La forma más fácil de instalar la Anchor Platform es descargar la imagen de docker.
- bash
docker pull stellar/anchor-platform:2.11.0
Configurar el Entorno de Desarrollo
En esta guía, usaremos docker compose por simplicidad, pero puedes ejecutar la Anchor Platform utilizando otras herramientas que también admiten docker, como minikube o un clúster completo de kubernetes.
Vamos a crear un archivo de composición mínimo para comenzar.
- YAML
# docker-compose.yml
services:
sep-server:
image: stellar/anchor-platform:2.11.0
command: --sep-server
ports:
- "8080:8080"
env_file:
- ./dev.env
volumes:
- ./config:/home
platform-server:
image: stellar/anchor-platform:2.11.0
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 puntos finales de la API definidos por los SEPs que has habilitado a través de la configuración en el puerto 8080.
La opción --platform-server
hace disponible la API de la Plataforma, que es la API de backend que tu(s) servicio(s) usará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 usar uno o una combinación de ambos enfoques. Las variables anidadas en el archivo YAML se expresan usando guiones bajos o puntos (_
, .
) al utilizar variables de entorno. Demostraremos ambos enfoques aquí, pero utilizaremos exclusivamente variables de entorno en secciones posteriores. Consulta el conjunto completo de opciones de configuración en el archivo de valores predeterminados de la Anchor Platform.
La Anchor Platform no permite secretos de aplicación en el archivo de configuración YAML. En su lugar, los secretos de la aplicación, que todos tienen el prefijo SECRET_
, deben ser especificados en el entorno.
Vamos a crear el archivo de entorno especificado en nuestro archivo de composición de docker.
- bash
touch dev.env
Y si estás usando un archivo de configuración YAML, vamos a crear ese también.
- bash
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 vamos a añadir una variable de entorno para eso.
- bash
# dev.env
STELLAR_ANCHOR_CONFIG=/home/dev.services.yaml
Especifica la versión del esquema de configuración en tu archivo YAML.
- YAML
# dev.services.yaml
version: 1
Cambiar el Puerto del Servidor de la Plataforma
Por ejemplo, vamos a cambiar el puerto del servidor de la plataforma.
Usando variables de entorno, esto es simplemente:
- bash
# dev.env
PLATFORM_SERVER_PORT=8085
O si usas la configuración YAML:
- YAML
# dev.services.yaml
platform_server:
port: 8085
Especifica los Activos de tu Servicio
Vamos a añadir los activos que tu implementación de Anchor Platform utilizará. Esta configuración se especifica en un archivo YAML. Si solo estás usando la Anchor Platform para alojar un archivo SEP-1 stellar.toml o para ejecutar la Autenticación SEP-10 de Stellar, puedes omitir este paso.
- bash
touch config/dev.assets.yaml
En esta guía, vamos a desarrollar servicios de anchor para el USDC de Circle en la red de prueba de Stellar. Actualiza los valores anteriores basados en los activos que emitirás. Asegúrate de especificar el issuer
de testnet en tu archivo de desarrollo, y crea tu propio distribution_account
usando una herramienta como Stellar Lab. El distribution_account
será utilizado por tus clientes como la cuenta de destino para los pagos a tu servicio.
- YAML
# dev.assets.yaml
assets:
- schema: stellar
code: USDC
issuer: GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
distribution_account: GBLSAHONJRODSFTLOV225NZR4LHICH63RIFQTQN37L5CRTR2IMQ5UEK7
significant_decimals: 2
Este archivo debe ser referenciado en nuestra configuración para que la Anchor Platform pueda encontrarlo.
Usando variables de entorno:
- bash
# dev.env
ASSETS_TYPE=file
ASSETS_VALUE=/home/dev.assets.yaml
Usando un archivo YAML:
- YAML
# dev.services.yaml
assets:
type: file
value: /home/dev.assets.yaml
Agregar Persistencia de Datos
La Anchor Platform admite PostgreSQL y Aurora PostgreSQL para uso en producción, pero también admite H2 o SQLite para 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 avanzar, vamos a añadir una base de datos a nuestro entorno de desarrollo para que las transacciones que iniciemos persistan después de detener el servicio.
Una base de datos solo es necesaria si se usa la Anchor Platform para facilitar transacciones.
- YAML
# docker-compose.yml
version: "3.8"
services:
sep-server:
image: stellar/anchor-platform:2.11.0
command: --sep-server
env_file:
- ./dev.env
volumes:
- ./config:/home
ports:
- "8080:8080"
depends_on:
- db
platform-server:
image: stellar/anchor-platform:2.11.0
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 vamos a actualizar nuestro entorno para que el servidor de la plataforma pueda conectarse al servidor de la base de datos.
- bash
# 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 usando la configuración YAML, 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 ser especificados en el entorno.
- YAML
# dev.services.yaml
data:
type: postgres
server: db
database: platform
flyway_enabled: true
Debemos 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.
- bash
touch init.sql
- SQL
-- init.sql
CREATE DATABASE platform;
Intenta ejecutar el servidor de la plataforma además de la base de datos.
- bash
docker compose up
Deberías ver los registros reportando una conexión exitosa con la base de datos postgres.
Configurar la Autenticación de la API de la Plataforma
Para facilitar pagos transnacionales o transacciones de depósito y retirada de fondos, tu negocio necesitará obtener y actualizar registros de transacciones desde la API interna de la Anchor Platform. Actualmente, la opción --sep-server
hace disponibles las APIs públicas de SEP, mientras que la API interna de la Plataforma está disponible en el servidor de la Plataforma, iniciada 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.
Agrega las siguientes variables de entorno.
- bash
# 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 realizar 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 portador.
PLATFORM_API_BASE_URL
utiliza platform
en lugar de localhost
como el host porque estarás realizando solicitudes a la API de la Plataforma dentro de la red local creada por docker compose. Al configurar tu servicio en un entorno de pruebas o producción, asegúrate de actualizar las URLs de tu servicio.
Pasar flags de JVM
La Anchor Platform utiliza JVM para ejecutarse. A veces, es deseable cambiar los flags de JVM para ejecutar el servicio. Para hacerlo, establece la variable de entorno JVM_FLAGS
al valor apropiado
# dev.env
JVM_FLAGS="-Xms256m -Xmx2048m"
Si necesitas pasar una variable de entorno desde tu máquina al contenedor, debes usar la opción environment
de composición para establecer variables en su lugar. Aquí hay un ejemplo de usar el almacén de claves de tu máquina local en el contenedor:
# docker-compose.yml
version: "3.8"
services:
sep-server:
image: stellar/anchor-platform:2.11.0
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 local del almacén de claves y KEYSTORE_PASSWORD
es la contraseña local del almacén de claves.