|
| 1 | +# SDF - packages |
| 2 | + |
| 3 | +1. [Adding the SDF stable repository to your system](adding-the-sdf-stable-repository-to-your-system.md) |
| 4 | +2. [Quickstart](quickstart.md) |
| 5 | +3. [Installing individual packages](installing-individual-packages.md) |
| 6 | +4. [Upgrading](upgrading.md) |
| 7 | +5. [Bleeding Edge](bleeding-edge-unstable-repository.md) |
| 8 | +6. [Debug Symbols](debug-symbols.md) |
| 9 | +7. [Running Horizon in production](running-horizon-in-production.md) |
| 10 | +8. [Building Packages](building-packages.md) |
| 11 | +9. [Running a Full Validator](running-a-full-validator.md) |
| 12 | +10. [Publishing a History archive](publishing-a-history-archive.md) |
| 13 | +11. [Monitoring](monitoring.md) |
| 14 | +12. [Testnet Reset](testnet-reset.md) |
| 15 | + |
| 16 | +## Running a Full Validator |
| 17 | +When deciding to run a Full Validator it is important to understand the requirements and benefits of doing so, it is also worth noting that to become a **Tier 1 validator operator** one must run at least 3 full validators and have a demonstrable [high validator uptime](https://www.stellarbeat.io/nodes). |
| 18 | + |
| 19 | +### Benefits |
| 20 | +Running a full validator is not only beneficial to the operator but is also a great way to contribute to the general health of the Stellar network. Full validators are the true measure of how decentralized and redundant the network is as they are the only type of validators that perform all functions on the network. Listed below are some of the operator level benefits. |
| 21 | + |
| 22 | +* Enables deeper integrations by clients and business partners |
| 23 | +* Official endorsement of specific ledgers in real time (via signatures) |
| 24 | +* Quorum Set aligned with business priorities |
| 25 | +* Additional checks/invariants enabled |
| 26 | + * Validator can halt and/or signal that for example (in the case of an issuer) that it does not agree to something |
| 27 | + |
| 28 | +### Requirements |
| 29 | +Running a full validator is a fairly straightforward process and depending on your capacity requirements needs very little computing resources. |
| 30 | + |
| 31 | +* server/instance to run the stellar-core application and corresponding postgres database |
| 32 | +* secrets management to securely store the seed(s) |
| 33 | +* access to an Object store such as S3/Spaces/Azure Blob for storing history (optional, can also be stored and served locally) |
| 34 | +* monitoring (optional, can also be plugged into existing monitoring) |
| 35 | + |
| 36 | +For more in-depth requirements please see the main [admin guide](https://www.stellar.org/developers/stellar-core/software/admin.html#full-validators) |
| 37 | + |
| 38 | +#### Required Steps |
| 39 | + |
| 40 | +1. install stellar-core |
| 41 | +2. configure validation |
| 42 | +3. publish history |
| 43 | + |
| 44 | +### Installing stellar-core |
| 45 | +For this guide we will be documenting the process of installing the `stellar-core-postgres` Debian package. As described in more detail [here](quickstart.md#moving-on-from-quickstart), the `stellar-core-postgres` package pulls in the `stellar-core` package and configures a local PostgreSQL database server ready for use by stellar-core, please note that by default this package connects `stellar-core` to the **Testnet** as a simple watcher node. |
| 46 | + |
| 47 | +Install stellar-core and a local postgres database using PostgreSQL's `peer authentication method` for authentication/security: |
| 48 | + |
| 49 | +* `apt-get install stellar-core-postgres` |
| 50 | + |
| 51 | +Accessing the locally configured `stellar` PostgreSQL database and running stellar-core commands such as `new-db` is described in more detail [here](quickstart.md#accessing-the-quickstart-databases). |
| 52 | + |
| 53 | +Alternatively if you prefer to install and configure PostgreSQL yourself, you will only need to install the `stellar-core` package. |
| 54 | + |
| 55 | +* `apt-get install stellar-core` |
| 56 | + |
| 57 | +### Configuration |
| 58 | + |
| 59 | +Once you have configured your stellar-core node and it's respective database, you will need to configure your stellar-core instance to become a **Full Validator**. The simplest way to create a validator configuration is to start off with a working `watcher` config and simply add the required validator configuration parameters (`NODE_IS_VALIDATOR`, `NODE_SEED`). |
| 60 | + |
| 61 | +As mentioned previously, the configuration installed by the `stellar-core-postgres` package configures `stellar-core` to connect to the SDF **Testnet** as a basic watcher node. Connecting to the **Pubnet** as a watcher is simply a matter of modifying the `stellar-core` configuration to point to **Pubnet** and running `sudo -u stellar stellar-core --conf /etc/stellar/stellar-core.cfg new-db` to reset the database and buckets directory. |
| 62 | + |
| 63 | +If you want to create a **Pubnet** validator, you can use the [**Pubnet Watcher**](stellar-core_pubnet_watcher.cfg) config. |
| 64 | + |
| 65 | +#### Validation |
| 66 | +Configuring a node to participate in SCP and sign messages is a 3 step process consisting of securely generating a `seed`, adding this seed to your configuration file and finally setting the `NODE_IS_VALIDATOR=true` parameter. |
| 67 | + |
| 68 | +* create a keypair `stellar-core gen-seed` |
| 69 | +* add `NODE_SEED="SD7DN..."` to your configuration file |
| 70 | +* add `NODE_IS_VALIDATOR=true` to your configuration file |
| 71 | + |
| 72 | +You will most likely want to share the public portion of your keypair to other validator operators so that they can add your nodes to their quorum set. This is best achieved by publishing a [.well-known/stellar.toml](https://www.stellar.org/.well-known/stellar.toml) on your homedomain, you can also use it to share other aspects of your nodes configuration, such as history archive location, organisation name, etc. |
| 73 | + |
| 74 | +#### Quorum Set |
| 75 | +The quorum set is used by stellar-core to define which nodes on the network you trust as well as to configure stellar-core's behaviour during arbitrary node failures. More information can be found in the [quorum set](https://www.stellar.org/developers/stellar-core/software/admin.html#crafting-a-quorum-set) section of the main admin guide. |
| 76 | + |
| 77 | +### Publishing History |
| 78 | +Full validators participate in consensus and publish their history data either to a blob store such S3, Spaces or Azure Blob. This aspect of the full validator is incredibly important as it enables other network users to connect and sync to the network using your validator thus increasing network resiliency and decentralisation. |
| 79 | + |
| 80 | +The process of publishing `stellar-core` history is described in detail [here](publishing-a-history-archive.md) |
0 commit comments