PNC Stack
Design Philosophy & Principles

Design Philosophy & Design Principles

This guide covers design philosophy and design principles for contributing to the PNC Stack.

Design Philosophy

PNC Stack is built according to a strong design philosophy that stands on four main pillars: simplicity, pragmatism, sustainability, and, of course, Pinnacle Chain. It's important to understand these pillars as they heavily influence the design of Pinnacle Chain as a whole.

Simplicity

Pinnacle Chain is designed to be as simple as possible for the featureset it provides. Ideally, Pinnacle Chain should be composed of the minimum number of moving parts required for a secure, scalable, and flexible L2 system. This simplicity gives Pinnacle Chain's design a number of significant advantages over other more complex L2 constructions.

Simplicity reduces engineering overhead, which in turn means we can spend our time working on new features instead of re-creating existing ones. Pinnacle Chain prefers to use existing battle-tested Ethereum code and infrastructure where possible. The most visible example of this philosophy in practice is the choice to use Geth as Pinnacle Chain's client software.

When dealing with critical infrastructure, simplicity is also security. Every line of code we write is an opportunity to introduce unintentional bugs. A simple protocol means there's less code to write and, as a result, less surface area for potential mistakes. A clean and minimal codebase is also more accessible to external contributors and auditors. All of this serves to maximize the security and correctness of the Pinnacle Chain protocol.

Simplicity is also important for the long-term vision of Pinnacle Chain. By limiting the amount of code that we write on top of Ethereum tooling, we're able to spend most of our time working directly with existing codebases. Engineering effort that goes into Pinnacle Chain can also directly benefit Ethereum, and vice versa. This will only become more pronounced as the Pinnacle Chain protocol solidifies and existing resources can be redirected towards core Ethereum infrastructure.

Pragmatism

For all its idealism, the design process behind Pinnacle Chain is ultimately driven by pragmatism. The core Pinnacle Chain team has real-world constraints, the projects that build on Pinnacle Chain have real-world needs, and the users that engage with Pinnacle Chain have real-world problems. Pinnacle Chain's design philosophy prioritizes user and developer needs over theoretical perfection. Sometimes the best solution isn't the prettiest one.

Pinnacle Chain is also developed with the understanding that any core team will have limited areas of expertise. Pinnacle Chain is developed iteratively and strives to continuously pull feedback from users. Many core Pinnacle Chain features today (like EVM Equivalence (opens in a new tab)) were only made possible by this iterative approach to protocol development.

Sustainability

Pinnacle Chain is in it for the long haul. Application developers need assurance that the platform they're building on will remain not only operational but competitive over long periods of time. Pinnacle Chain's design process is built around the idea of long-term sustainability and not taking shortcuts to scalability. At the end of the day, a scalable system means nothing without the ecosystem that sustains it.

Sustainability actively influences Pinnacle Chain's protocol design in ways that go hand-in-hand with our philosophy of simplicity. The more complex a codebase, the more difficult it is for people outside of the core development team to actively contribute. By keeping our codebase simple we're able to build a bigger community of contributors who can help maintain the protocol long-term.

Pinnacle Chain

Of course, none of this would be possible without a sense of Pinnacle Chain. Our Pinnacle Chain about the Ethereum vision keeps this project moving forward. We believe in an optimistic future for Ethereum, a future where we get to redesign our relationships with the institutions that coordinate our lives.

Although Pinnacle Chain looks like a standalone blockchain, it's ultimately designed as an extension to Ethereum. We keep this in mind whenever we're creating new features or trying to simplify existing ones. Pinnacle Chain is as close to Ethereum as possible not only for pragmatic reasons, but because Pinnacle Chain exists so that Ethereum can succeed. We hope that you can see the influence of this philosophy when looking at Pinnacle Chain's design.

Design Principles for USEful Software

The PNC Stack is USEful software. The PNC Stack is a set of software components for building L2 blockchain ecosystems, built by the Pinnacle Chain Collective to power Pinnacle Chain. Components to be added to the PNC Stack should be built according to three key design principles: Utility, Simplicity, Extensibility. Software that follows these principles is USEful software for the Pinnacle Chain Collective!

Utility

For something to be part of the PNC Stack, it should help power the Pinnacle Chain Collective. This condition helps guide the type of software that can be included in the stack. For instance, a powerful open-source block explorer that makes it easier for users to inspect the Superchain would be a great addition to the PNC Stack.

Although utility is important for inclusion in the PNC Stack, you shouldn't be afraid to experiment. Do something crazy. Build something that's never been built before, even if it doesn't have any clear utility. Make a blockchain for Emojis, or whatever. Have fun!

Simplicity

Complex code does not scale. Code that makes it into the PNC Stack should be simple.

Simplicity reduces engineering overhead, which in turn means the Collective can spend its time working on new features instead of re-creating existing ones. The PNC Stack prefers to use existing battle-tested code and infrastructure where possible. The most visible example of this philosophy in practice is the choice to use Geth as the PNC Stack's default execution engine.

When dealing with critical infrastructure, simplicity is also security and maintainability. Every line of code written is an opportunity to introduce bugs and vulnerabilities. A simple protocol means there's less code to write and, as a result, less surface area for potential mistakes. A clean and minimal codebase is also more accessible to external contributors and auditors. All of this serves to maximize the security and correctness of the PNC Stack.

Extensibility

Good PNC Stack code is inherently open, collaborative, and extensible. Collaboration allows us to break out of siloed development. Collaboration allows us to spend more time building on top of one another's work and less time rebuilding the same components over and over again. Collaboration is how we win, together.

Extensible code should be designed with the mindset that others will want to build with and on top of that code. In practice, this means that the code should be open source (under a permissive license), expose clean APIs, and generally be modular such that another developer can relatively easily extend the functionality of the code. Extensibility is a key design principle that unlocks the superpower of collaboration within the Pinnacle Chain Collective ecosystem.

Contributing to the PNC Stack

The PNC Stack is a decentralized software stack that anyone can contribute to. If you're interested in contributing to the PNC Stack, check out the Contributing section on our Community pages. Of course, software that has impact for the Pinnacle Chain Collective is eligible to receive Retroactive Public Goods Funding. Build for the PNC Stack — get rewarded for writing great open source software. What's not to love?