Requisitos previos
Puedes instalar Stellar Core de varias maneras diferentes, y una vez lo hagas, puedes configurarlo para participar en la red en varios niveles diferentes: puede ser un Validador Básico o un Validador Completo. No importa cómo instales Stellar Core o qué tipo de nodo ejecutes, sin embargo, necesitas configurar y conectarte a la red peer-to-peer y almacenar el estado del ledger en una base de datos SQL.
Requisitos de Hardware
El CPU, RAM, Disco y red dependen de la actividad de la red. Si decides colocalizar ciertas cargas de trabajo, necesitarás tener esto en cuenta.
En el momento de escribir esto (abril de 2024), Stellar Core con PostgreSQL funcionando en la misma máquina funcionó bien en una instancia de c5d.2xlarge en AWS (8x Intel Xeon vCPUs a 3,4 GHz; 16 GB RAM; 100 GB NVMe SSD (10.000 iops)).
Stellar Core está diseñado para funcionar en hardware relativamente modesto para que una amplia gama de individuos y organizaciones puedan participar en la red, y los nodos básicos deberían poder funcionar bastante bien sin una gran sobrecarga. Dicho esto, cuanto más pidas a tu nodo, mayores serán los requisitos.
Tipo de Nodo | CPU | RAM | Disco | SKU de AWS | SKU de Google Cloud |
---|---|---|---|---|---|
Nodo Validador Principal | 8x Intel Xeon @ 3,4 GHz | 16 GB | 100 GB NVMe SSD | c5d.2xlarge | n4-highcpu-8 |
* Suponiendo una ventana de retención de 30 días para el almacenamiento de datos.
Acceso a la Red
Stellar Core interactúa con la red peer-to-peer para mantener un ledger distribuido sincronizado, lo que significa que tu nodo necesita hacer ciertos puertos TCP disponibles para la comunicación entrante y saliente.
Entrante
Un nodo Stellar Core necesita permitir que todas las IPs se conecten a su PEER_PORT
a través de TCP. Puedes especificar un puerto cuando [configuras] Stellar Core, pero la mayoría de la gente usa el predeterminado, que es 11625.
Saliente
Un nodo Stellar Core necesita conectarse a otros nodos en internet a través de su PEER_PORT
sobre TCP. Puedes encontrar información sobre los PEER_PORT
s de otros nodos en un explorador de red como Stellarbeat, pero la mayoría también usa el puerto predeterminado para esto, que es (nuevamente) 11625.
Acceso al Sistema Interno
Stellar Core también necesita conectarse a ciertos sistemas internos, aunque exactamente cómo se logra esto puede variar según tu configuración.
Entrante
- Stellar Core expone un endpoint HTTP sin autenticar en su
HTTP_PORT
. Puedes especificar un puerto cuando [configuras] Stellar Core, pero la mayoría de la gente usa el predeterminado, que es 11626. - El
HTTP_PORT
es utilizado por otros sistemas (como Horizon) para enviar transacciones, así que este puerto puede tener que ser expuesto al resto de tus direcciones IP internas. - También es utilizado para consultar la info de Stellar Core y proporcionar métricas.
- Y para realizar comandos administrativos como programar actualizaciones y cambiar niveles de registro
- Para más sobre eso, consulta comandos
Si necesitas exponer este endpoint a otros hosts en tu red local, te recomendamos encarecidamente que uses un servidor proxy inverso intermedio para implementar la autenticación. No expongas el endpoint HTTP a la cruda e inhumana Internet abierta.
Saliente
- Stellar Core requiere acceso a una base de datos (PostgreSQL, por ejemplo). Si esa base de datos reside en una máquina diferente en tu red, necesitarás permitir esa conexión. Especificarás la base de datos cuando [configures] Stellar Core.
- Puedes bloquear de manera segura todas las demás conexiones.
Almacenamiento
La mayoría de las necesidades de almacenamiento provienen de la base de datos backend de stellar-core, que necesita almacenar todo el estado del ledger. En su mayor parte, el contenido tanto de la base de datos como de los directorios relacionados (como buckets
) pueden ser ignorados, ya que son completamente gestionados por Stellar Core. En términos de espacio de almacenamiento, 100 GB son suficientes (a partir de abril de 2024).
Base de datos
La base de datos se consulta durante el consenso y se modifica atómicamente cuando se aplica un conjunto de transacciones al ledger. Es de acceso aleatorio, granular y rápido.
A partir de agosto de 2024, Stellar Core cambió oficialmente a BucketListDB como su backend de base de datos principal. Ten en cuenta que BucketListDB aún requiere una base de datos SQL, ya sea SQLite o Postgres (recomendado).
Si usas PostgreSQL, te recomendamos que configures tu base de datos local para que sea accesible a través de un socket de dominio Unix, así como actualizar los siguientes parámetros de configuración de PostgreSQL:
# !!! DB connection should be over a Unix domain socket !!!
# shared_buffers = 25% of available system ram
# effective_cache_size = 50% of available system ram
# max_wal_size = 5GB
# max_connections = 150
Bolsas
Stellar-core almacena el estado del ledger en forma de archivos XDR planos llamados "buckets." Los archivos de buckets se utilizan para el hashing y la transmisión de diferencias del ledger a archivos de historia. Si se utiliza BucketListDB, el directorio buckets
también se usa como un backend principal de base de datos. Si se utiliza SQL, el directorio buckets
solo se utiliza para hashing y archivos de historia, y simplemente representa una copia del estado del ledger almacenado en SQL.
Los buckets deben estar almacenados en un disco local rápido con suficiente espacio para almacenar varias veces el tamaño del ledger actual. El tamaño actual del ledger es aproximadamente 10 GB (a partir de abril de 2024), así que por favor planifica en consecuencia.