Configurando
Antes de intentar configurar stellar-core, se recomienda encarecidamente intentar ejecutar primero una red privada o unirse a la red de prueba.
Conceptos Básicos de Configuración
Después de que hayas instalado Stellar Core, tu próximo paso es completar un archivo de configuración que especifique cosas cruciales sobre tu nodo, como si se conecta a la red pública de Testnet o a la Mainnet, a qué base de datos escribe, y qué otros nodos están en su conjunto de quórum.
Toda la configuración de stellar-core se realiza con un archivo TOML. Por defecto, Stellar Core carga ese archivo desde ./stellar-core.cfg
, pero puedes especificar un archivo diferente para cargar en la línea de comandos:
stellar-core --conf betterfile.cfg <COMMAND>
Los ejemplos en esta documentación no especifican --conf betterfile.cfg
por brevedad.
Esta página te guiará a través de los campos clave que necesitarás incluir en tu archivo de configuración para poner tu nodo en funcionamiento.
Esta página intenta (tan estrictamente como sea posible) enfocarse en los campos y valores específicos que puedes necesitar modificar en tu archivo de configuración de Stellar Core. Para mantener esta página concisa, intentamos evitar el contexto conceptual y la información de fondo. Probablemente encontrarás parte de esa información relacionada en las páginas de prerrequisitos o preparación del entorno, si quieres.
Ejemplos de Configuración
Mientras revisamos algunos de los conceptos básicos de configuración en esta página, hemos escrito este contenido para que funcione mejor junto con ejemplos de configuración concretos, así que, mientras lo lees, es posible que quieras revisar lo siguiente:
-
El [ejemplo completo de configuración] no es una configuración real, sino que documenta a fondo todos los elementos de configuración posibles, así como sus valores predeterminados. Tiene todos los controles que puedes ajustar y todas las configuraciones que puedes modificar junto con explicaciones detalladas sobre cómo ajustarlos y configurarlos. No necesitas poner todo desde el ejemplo completo de configuración en tu archivo de configuración. Los campos que omitas asumirán la configuración predeterminada, y la configuración predeterminada generalmente te servirá bien. Sin embargo, hay algunos campos requeridos, y esta página explicará cuáles son.
-
Si quieres conectarte a la red de Testnet, consulta el [ejemplo de configuración de Testnet]. Como puedes ver, la mayoría de los campos del [ejemplo completo de configuración] se han omitido ya que la configuración predeterminada funciona bien. Puedes adaptar fácilmente esta configuración para satisfacer tus necesidades de Testnet.
-
Si deseas conectarte a la red de Mainnet, consulta este [ejemplo de configuración de Mainnet] para un validador completo. Incluye un conjunto de quórum adecuadamente configurado con todos los actuales validador Tier 1, que es un buen lugar para comenzar para la mayoría de las configuraciones. Este nodo está configurado para validar y escribir el historial en un archivo público, pero puedes deshabilitar cualquiera de estas características ajustando esta configuración para que sea un poco más ligera.
La auditoría de la red P2P está habilitada por defecto, consulta la sección de topología de superposición para más detalles si deseas desactivarla.
Frase de Contraseña de Red
Utiliza el campo NETWORK_PASSPHRASE
para especificar si tu nodo se conecta a la red de Testnet o a la red de Mainnet network.
NETWORK_PASSPHRASE="Test SDF Network ; Septiembre 2015"
NETWORK_PASSPHRASE="Public Global Stellar Network ; Septiembre 2015"
Para más información sobre la Frase de Contraseña de Red y cómo funciona, consulta la entrada de la enciclopedia.
Base de Datos
Especificas la base de datos de tu nodo utilizando el campo llamado adecuadamente DATABASE
de tu archivo de configuración, sobre el cual puedes leer más en el [ejemplo completo de configuración][complete-example-database]. Por defecto, utiliza una base de datos en memoria, pero puedes especificar una ruta según el ejemplo.
Buckets
Los archivos XDR planos de Stellar Core se colocan en un directorio especificado en el archivo de configuración como BUCKET_DIR_PATH
, que por defecto es buckets
.
Nodo Validador
:::noteSi no tienes la intención de que tu nodo participe en las votaciones de consenso, puedes avanzar directamente a la configuración de tu conjunto de quórum:::
Si deseas validar, debes generar una clave pública/privada para tu nodo. Los nodos no deben compartir claves. Debes asegurarte de asegurar tu clave privada. Si se ve comprometida, alguien puede enviar mensajes falsos a la red y esos mensajes parecerán provenir de ti.
Genera un par de claves para tu nodo validador así:
stellar-core gen-seed
Tu salida debería verse algo así:
Secret seed: SBAAOHEU4WSWX6GBZ3VOXEGQGWRBJ72ZN3B3MFAJZWXRYGDIWHQO37SY
Public: GDMTUTQRCP6L3JQKX3OOKYIGZC6LG2O6K2BSUCI6WNGLL4XXCIB3OK2P
Agrega esta semilla secreta a tu archivo de configuración y marca el nodo como "validador":
NODE_SEED="SBAAOHEU4WSWX6GBZ3VOXEGQGWRBJ72ZN3B3MFAJZWXRYGDIWHQO37SY mynode"
NODE_IS_VALIDATOR=true
NODE_HOME_DOMAIN=<your domain name here - i.e., stellar.org>
[[HOME_DOMAINS]]
HOME_DOMAIN=<your domain name here, same as NODE_HOME_DOMAIN>
QUALITY="MEDIUM"
Si no incluyes un NODE_SEED
o configuras NODE_IS_VALIDATOR=true
, tu nodo seguirá observando SCP y viendo todos los datos en la red, pero no enviará mensajes de validación.
Si ejecutas múltiples validadores, asegúrate de establecer un HOME_DOMAIN
común para ellos configurando la propiedad NODE_HOME_DOMAIN
al mismo valor. Esto asegurará que tus nodos se agrupan correctamente durante la generación del conjunto de quórum. También necesitas incluir tus otros nodos en el ARRAY DE VALIDADORES
de tu archivo de configuración.
Si deseas que otros validadores agreguen tu nodo a sus conjuntos de quórum, también debes compartir tu clave pública (GDMTUTQ...
) publicando un archivo stellar.toml
en tu dominio de origen siguiendo las especificaciones establecidas por SEP-20.
Elegir tu Conjunto de Quórum
Para crear tu conjunto de quórum, Stellar Core se basa en dos matrices de tablas: [[HOME_DOMAINS]]
y [[VALIDATORS]]
. Consulta la MATRIZ HOME_DOMAINS
del ejemplo de configuración y la MATRIZ VALIDATORS
para verlas en acción.
Es beneficioso hacer una breve pausa aquí y explorar algo de información de fondo sobre los quórums de validadores y el consenso de la red. Si deseas, puedes avanzar y comenzar a crear tu matriz de dominios de origen ahora. ¡De lo contrario, sigue leyendo, amigo!
No importa qué tipo de nodo ejecutes — Validador Básico o Completo — necesitas seleccionar un conjunto de quórum, que consiste en validadores (agrupados por organización) con los que tu nodo verifica si debe aplicar un conjunto de transacciones a un ledger. Si deseas saber más sobre cómo funcionan los conjuntos de quórum, consulta este artículo sobre [cómo Stellar aborda los quórums]. Si deseas ver cómo se ve un conjunto de quórum que consiste en todos los validados Tier 1 — una configuración probada y verdadera — consulta la configuración de red pública para un Validador Completo.
Un buen conjunto de quórum:
- se alinea con las prioridades de tu organización,
- tiene suficiente redundancia para manejar fallas arbitrarias de nodos y
- mantiene una buena intersección de quórums.
Dado que crear un buen conjunto de quórum es algo difícil de hacer, stellar core genera automáticamente un conjunto de quórum para ti basado en la información estructurada que proporcionas en tu archivo de configuración. Tú eliges los validadores en los que quieres confiar; stellar core los configura en un conjunto de quórum óptimo.
Para generar un conjunto de quórum, stellar core:
- Agrupa validadores de la misma organización en un subquórum
- Establece el umbral para cada uno de esos subquórums
- Asigna pesos a esos subquórums según la calidad
Si bien esto no te exonera de toda responsabilidad — aún necesitas elegir validadores de confianza y vigilar su funcionamiento para asegurarte de que son consistentes y confiables — facilita tu vida y reduce las posibilidades de error humano.
Descubrimiento de Validadores
Cuando añades un nodo validador a tu conjunto de quórum, generalmente es porque confías en la organización que ejecuta el nodo: confías en SDF, no en una clave pública de Stellar anónima.
Para crear un enlace autovalidado entre un nodo y la organización que lo ejecuta, un validador declara un dominio de origen on-chain utilizando una operación set_options
y publica información organizacional en un archivo stellar.toml
alojado en ese dominio. Para descubrir cómo funciona eso, consulta SEP-20.
Como resultado de ese enlace, puedes buscar un nodo por su clave pública de Stellar y verificar el archivo stellar.toml
para averiguar quién lo ejecuta. Es posible hacerlo manualmente, pero también puedes consultar la lista de nodos en Stellarbeat.io. Si decides confiar en una organización, puedes utilizar esa lista para recopilar la información necesaria para agregar sus nodos a tu configuración.
Cuando miras esa lista, descubrirás que las organizaciones más confiables realmente ejecutan más de un validador, y agregar todos los nodos de una organización a tu conjunto de quórum crea la redundancia necesaria para mantener una falla arbitraria de nodos. Cuando una organización con un trío de nodos apaga uno para mantenimiento, por ejemplo, los dos nodos restantes votan en nombre de la organización, y la presencia en la red de la organización persiste.
Matriz de Dominios de Origen
[[HOME_DOMAINS]]
define un superconjunto de validadores: cuando agregas nodos alojados por la misma organización a tu configuración, comparten un dominio de origen, y la información en la tabla [[HOME_DOMAINS]]
, específicamente la calificación de calidad, se aplicará automáticamente a cada uno de esos validadores.
Para cada organización que desees agregar, crea una tabla separada [[HOME_DOMAINS]]
y completa los siguientes campos requeridos:
Campo | Requisitos | Descripción |
---|---|---|
HOME_DOMAIN | cadena | URL del dominio de origen vinculado a un grupo de validadores |
CALIDAD | cadena | Calificación para los nodos de esta organización: ALTA , MEDIA o BAJA |
Aquí hay un ejemplo de una matriz [[HOME_DOMAINS]]
, que crea dos tablas [[HOME_DOMAINS]]
:
[[HOME_DOMAINS]]
HOME_DOMAIN="testnet.stellar.org"
QUALITY="HIGH"
[[HOME_DOMAINS]]
HOME_DOMAIN="some-other-domain"
QUALITY="LOW"
Matriz de Validadores
Para cada nodo que desees agregar a tu conjunto de quórum, completa una tabla [[VALIDATORS]]
con los siguientes campos:
Campo | Requisitos | Descripción |
---|---|---|
NOMBRE | cadena | Un alias único para el nodo |
CALIDAD | cadena | Calificación para el nodo (requerida a menos que se especifique en [[HOME_DOMAINS]] ): ALTA , MEDIA o BAJA . |
HOME_DOMAIN | cadena | URL del dominio de origen vinculado al validador |
CLAVE_PÚBLICA | cadena | Clave pública de Stellar asociada con el validador |
DIRECCIÓN | cadena | Peer:puerto asociado con el validador (opcional) |
HISTORIA | cadena | comando GET del archivo asociado con el validador (opcional) |
Si el HOME_DOMAIN
del nodo se alinea con una organización definida en la matriz [[HOME_DOMAINS]]
, la calificación de calidad especificada allí se aplicará al nodo. Si estás agregando un nodo individual que no está cubierto en esa matriz, necesitarás especificar la CALIDAD
aquí.
Aquí hay un ejemplo, que crea tres tablas [[VALIDATORS]]
:
[[VALIDATORS]]
NAME="sdftest1"
HOME_DOMAIN="testnet.stellar.org"
PUBLIC_KEY="GDKXE2OZMJIPOSLNA6N6F2BVCI3O777I2OOC4BV7VOYUEHYX7RTRYA7Y"
ADDRESS="core-testnet1.stellar.org"
HISTORY="curl -sf http://history.stellar.org/prd/core-testnet/core_testnet_001/{0} -o {1}"
[[VALIDATORS]]
NAME="sdftest2"
HOME_DOMAIN="testnet.stellar.org"
PUBLIC_KEY="GCUCJTIYXSOXKBSNFGNFWW5MUQ54HKRPGJUTQFJ5RQXZXNOLNXYDHRAP"
ADDRESS="core-testnet2.stellar.org"
HISTORY="curl -sf http://history.stellar.org/prd/core-testnet/core_testnet_002/{0} -o {1}"
[[VALIDATORS]]
NAME="rando-node"
QUALITY="LOW"
HOME_DOMAIN="rando.com"
PUBLIC_KEY="GC2V2EFSXN6SQTWVYA5EPJPBWWIMSD2XQNKUOHGEKB535AQE2I6IXV2Z"
ADDRESS="core.rando.com"
Tu conjunto de quórum se configura automáticamente basado en la información que proporcionas en las tablas [[VALIDATORS]]
y/o [[HOME_DOMAINS]]
. Eliminar un validador resultará en la generación de un nuevo conjunto de quórum y puede tener consecuencias inesperadas para ti y otros participantes de la red. Asegúrate de considerar cuidadosamente las implicaciones de eliminar un validador de tu configuración y sigue la guía para coordinarte con otros validadores antes de realizar cambios.
Calidad del Validador
CALIDAD
es un campo requerido para cada nodo que añadas a tu conjunto de quórum. Ya sea que la especifiques para un conjunto de nodos en una tabla [[HOME_DOMAINS]]
, o para un solo nodo en una tabla [[VALIDATORS]]
, significa lo mismo, y tienes las mismas tres opciones de calificación: ALTA
, MEDIA
o BAJA
.
Calidad ALTA
Los validadores de calidad ALTA reciben el mayor peso en la configuración automática del conjunto de quórum. Antes de asignar una calificación de calidad alta a un nodo, asegúrate de que tenga baja latencia y buen tiempo de actividad, y que la organización que ejecuta el nodo sea confiable y de confianza.
Un validador de alta calidad:
- publica un archivo, y
- pertenece a un conjunto de nodos que brinda redundancia.
Elegir nodos redundantes es una buena práctica. El requisito de archivo se hace cumplir programáticamente.
Calidad MEDIA
Los validadores de calidad MEDIA están anidados por debajo de los validadores de calidad alta, y su peso combinado es equivalente a una única entidad de alta calidad. Si un nodo no publica un archivo, pero tú lo consideras confiable, o tienes un interés organizacional en incluirlo en tu conjunto de quórum, dale una calificación de calidad media.
Calidad BAJA
Los validadores de calidad BAJA están anidados por debajo de los validadores de calidad media, y su peso combinado es equivalente a una única entidad de calidad media. Si demuestran ser confiables a lo largo del tiempo, puedes actualizar su calificación a media para darles un papel más importante en la configuración de tu conjunto de quórum.
Generación Automática del Conjunto de Quórum
Es ideal configurar al menos 4 entidades en tu quórum si vas a utilizar generación automática de conjuntos de quórum. El compromiso aquí es sobre la tolerancia a fallos: un quórum con menos de 4 entidades tolerará cero fallas de nodos. Tómate este momento para asegurarte de que tu quórum configurado cumpla con la tolerancia a fallos requerida.
Una vez que agregues validadores a tu configuración, stellar core genera automáticamente un conjunto de quórum utilizando las siguientes reglas:
- Los validadores con el mismo dominio de origen se agrupan automáticamente y se les da un umbral que requiere una simple mayoría (
2f+1
) - Los grupos heterogéneos de validadores tienen un umbral que asume fallo bizantino (
3f+1
) - El peso combinado de las entidades de calidad
BAJA
es equivalente a una sola entidad de calidadMEDIA
- Las entidades se agrupan por
CALIDAD
y se anidan deALTA
aBAJA
- Diagrama: Representación de los niveles de calidad anidados y cómo interactúan.
- Quórum y Red de Superposición
Diagrama: Representación de los niveles de calidad anidados y cómo interactúan.
Quorum y Red de Superposición
Para sincronizarse y ejecutar el consenso, tu validador necesita poder conectarse a la Stellar Network. En la mayoría de los casos, es suficiente confiar en el descubrimiento de usuarios integrado en el nodo. Sin embargo, tu validador puede configurarse para conectarse a usuarios específicos a través de KNOWN_PEERS
y PREFERRED_PEERS
en el archivo de configuración. Estos pueden ser nombres de dominio o IPs. Esto puede ser útil para solucionar problemas.
Además, configurar PREFERRED_PEER_KEYS
con las claves de tu quorum set podría ser una buena idea para dar prioridad a los nodos que te permiten alcanzar consenso.
Sin esa configuración, tu validador depende de otros nodos en la red para reenviar los mensajes correctos, lo cual se suele hacer como un esfuerzo adicional.
Impacto de la Calidad del Validador en la Nominación
El Stellar Consensus Protocol utiliza niveles de calidad de validadores para determinar qué validador debe nominar el siguiente conjunto de transacciones para su inclusión en un ledger. Este proceso de elegir el validador que nominará el siguiente conjunto de transacciones se llama elección de líder. Para empezar, el algoritmo de elección de líder asigna a organizaciones y validadores pesos de la siguiente manera:
- Sea el conjunto de todas las organizaciones con un nivel de calidad dado . incluye todas las organizaciones explícitamente definidas en el archivo de configuración a nivel de calidad , así como una sola organización virtual que contiene donde es el siguiente nivel de calidad por debajo de .
- Todas las organizaciones de algún nivel de calidad tienen peso .
- Si una organización de calidad tiene nodos, entonces el peso de cada nodo es .
- es
1
, donde es el valor de calidad más alto asignado a cualquier organización. - .
- Esto permite a un validador participar en algunas actividades SCP sin ser confiado para nominar conjuntos de transacciones.
- Para todos los demás valores , donde es el siguiente valor de calidad por encima de .
El algoritmo de elección de líder luego asigna a cada validador una probabilidad de ganar la elección de líder del peso del validador dividido por el peso total de todos los validadores. En conjunto, estas probabilidades de ganar aseguran que el algoritmo de elección de líder de Stellar Core tenga las siguientes propiedades:
- Las organizaciones de mayor calidad tienen una mayor oportunidad de ganar la elección de líder que las organizaciones de menor calidad.
- Las organizaciones de calidad igual tienen una igual posibilidad de ganar la elección de líder.
Ejemplo de Peso de Nominación de Validador
Supongamos que hay 3 organizaciones de calidad HIGH
, 2 organizaciones de calidad MEDIUM
y 1 organización de calidad LOW
. El peso de cada organización es el siguiente:
- Cada organización de calidad
HIGH
tiene un peso de1
. - Cada organización de calidad
MEDIUM
tiene un peso de1/(10 * 3)
, o1/30
. - Cada organización de calidad
LOW
tiene un peso de0
.