What are Prysm's major components? What databases did Prysm consider and decide on?
Are there elements in Prysm's architecture that are particularly differentiated from the other beacon chain clients?
Ethereum Stack Exchange is a question and answer site for users of Ethereum, the decentralized application platform and smart contract enabled blockchain. It only takes a minute to sign up.Sign up to join this community
Raul Jordan here from the Prysm project. The Prysm client is an open source implementation of the Ethereum 2.0 blockchain written in Go, just as the familiar go-ethereum project was for Ethereum 1.0 today. It is a radical departure from the current way Ethereum works, as it implements proof of stake and sharding according to a specification created by the Ethereum Research team.
The Prysm project aims to be useful to most users of Ethereum 2.0 that are either participating in consensus as a validator of the chain, or simply running a full node in the network. At its core, Ethereum 2.0 is comprised of two main things:
The Prysm codebase is a monorepo, meaning it contains all sorts of tools in there that are useful for the entire eth2 runtime. A complete implementation of a beacon node and a validator client are available in the
./validator folders at the top level of the project, respectively.
Go is the language of cloud servers, networking, and infrastructure. We believe for Eth2 to be successful, many individuals and companies will need to have easy ways of running nodes in their production deployments, with strong tooling for monitoring and instrumentation. Prysm makes this easy by leveraging the tech stack in use by some of the largest companies in the world today for production Golang applications, using proven technologies that serve billions of users across the world in companies such as Google, Uber, and more.
We believe sticking to industry best practices and providing tooling many are familiar with in the Go and cloud infrastructure ecosystem will allow Prysm to be a successful eth2 client.
Here are some of the technologies used by Prysm which are used at many companies with large, production-grade Go deployments.
The Prysmatic Labs team runs a production Kubernetes deployment for eth2 leveraging this tech stack, so we put a lot of emphasis into constantly improving it and aligning with standard engineering practices in our day to day.
Ethereum has always had a reputation for doing things differently than what folks are used to in traditional software engineering disciplines, such as picking its own JSON-API format. At Prysm, we are abandoning those norms and instead utilizing more proven technologies for our stack.
At runtime, the beacon node initializes and maintains a number of services that are all vital to providing all the features of Ethereum 2.0. In no particular order, these services include:
You can read our documentation at docs.prylabs.network