This section outlines Prysm's various internal components and their role in the client.
Prysm client components
When a Prysm client is initialised out of the box, it starts a variety of services that run in parallel to handle everything required for the life cycle of the beacon chain. In no particular order, Prysm includes:
- A beacon node which powers the beacon chain at the core of Ethereum 2.0.
- A validator client connects to the beacon node and manages staking keypairs.
- A public RPC server to request data about network state, blocks, validators etc.
- A persistent key-value store in the form of a database (BoltDB).
- A P2P networking framework and server to connect with other beacon nodes.
- Monitoring and metrics gathering technologies Grafana and Prometheus track everything. happening across beacon nodes in the network.
Prysm client functionality
As described in this section, Ethereum 2.0 encompasses a distributed network of blockchains called shard chains which are coordinated by a root chain, known as a beacon chain. This beacon chain serves as a mechanism to manage a set of Proof-of-Stake validators and overall consensus across shards.
Shards themselves are similar to the current Ethereum 1.0 chain, which stores blocks containing user-generated transactions such as token transfers and smart contracts. Ethereum 2.0 provides a massive improvement over 1.0 by having 64 of these shard chains, each with the capacity of the existing ETH1 blockchain.
As shown above, the beacon chain runs through a distributed network of nodes known as beacon nodes. Participants who want to run a beacon node and help secure the network can stake 32 ETH to have their validator client join the overall pool of validators, whom have the responsibility of proposing and attesting to new blocks on the beacon chain. This deposit does not come out of nowhere however; validators transfer Ether from the ETH1 chain to the 2.0 system through the use of a validator deposit contract.
Each of these components and their roles in the Prysm client are explained within the following sections of this documentation. If you have any questions, please stop by our Discord.