Origin document: https://docs.google.com/document/d/1uBomaVieGAjsyHeqSlwmqOyPOln1CemVlWXZjQXUMRY/edit#
The aim of this project is to allow V0 to scale within guard rails in order to accommodate growth while V1 is still in development. This is meant to be a non-functional roadmap, meaning the requirements and work performed in this project can be done in parallel to the functional roadmap of features and bug fixes in v0.
Tl;dr Automate data collection for network capacity previously done in an ad-hoc matter.
Originally performed by Andrew Nguyen Guard Rails was a project that aimed to benchmark a series of data points in the Pocket Network from which scalability guard rails would be derived from. The original work resulted in the following document: https://docs.google.com/document/d/1QcsPfhj636zBazw2jAay8H6gdBKXcIMmohY0o321hhQ/edit
The idea of this step in the project is to automate the experiments realized in the original Guard Rails project and build a series of infrastructure components that monitor nodes in the Mainnet network continuously, which allows to establish a baseline, and subsequently measure how that baseline moves with different changes such as the ones proposed in the subsequent steps of this project.
The reasoning of why this is the first step is that this creates a mechanism that allows several scalability modifications to be safely tested in isolated environments and measured against the Mainnet environment for a safer and more predictable release.
Tl;dr Reducing block times and increasing block sizes requires coordination but is low-hanging fruit with some risk that can help scale the network.
As part of the RC-0.9.0 release, a new DAO parameter was included which allows the modification of the block size dynamically via a DAO parameter transaction. On top of that, block timing is a configuration which is established in the “config.json” configuration file of nodes, which controls block timing. In this step we are proposing a series of experiments that would test the impact of modifying these 2 parameters in a network to understand their impact on several metrics, specifically those outlined in the Guard Rails described in Step 1.
Proposed experiments are:
These experiments must be carried out with vigor and maximum visibility, deploying the wrong combination to production could have catastrophic implications for the network and very hard recoveries via social coordination.
Tl;dr Move from a one-app/one-chain/one-node tree design to a multi-app/multi-chain/one-node design, which is complex, has open-ended questions and comes with security tradeoffs.