diff --git a/content/_index.md b/content/_index.md index 31511cc5d..f4a3df3c6 100644 --- a/content/_index.md +++ b/content/_index.md @@ -6,6 +6,7 @@ This site attempts to inform the previous, current, and future work required to ## Navigation - [Network Requirements](requirements/overview.md) - Research and Development Roadmap + - [Networking](roadmap/networking/overview.md) - [Consensus](roadmap/consensus/overview.md) - [Virtual Machines](roadmap/virtual-machines/overview.md) - Economics diff --git a/content/roadmap/networking/overview.md b/content/roadmap/networking/overview.md new file mode 100644 index 000000000..5f3d4ce67 --- /dev/null +++ b/content/roadmap/networking/overview.md @@ -0,0 +1,27 @@ +--- +title: "P2P Networking Overview" +tags: +- "networking" +- "overview" +--- + +This page summarizes the work around the P2P networking layer of the Nomos project. + +## Waku +[Waku](https://waku.org) is an privacy-preserving, ephemeral, peer-to-peer (P2P) messaging suite of protocols which is developed under [Vac](https://vac.dev) and maintained/productionized by the [Logos Collective](https://logos.co). + +It is hopeful that Nomos can leverage the work of the Waku project to provide the P2P networking layer and peripheral services associated with passing messages around the network. Below is a list of the associated work to investigate the use of Waku within the Nomos Project. + +### Scalability Studies +Currently, the amount of research and analysis of the scalability of Waku is not sufficient to give enough confidence that Waku can serve as the networking layer for the Nomos project. Thusly, it is our effort to push this analysis forward by investigating the various boundaries of scale for Waku. Below is a list of endeavors in this direction which we hope serves the broader community: +- [Status' use of Waku study w/ Kurtosis](./status-waku-kurtosis.md) + + + +### Rust implementations +We have created and maintain a stop-gap solution to using Waku with the Rust programming language, which is wrapping the [go-waku](https://github.com/status-im/go-waku) library in Rust and publishing it as a crate. This library allows us to do tests with our [Tiny Node](roadmap/development/prototypes.md#Tiny-Node) implementation more quickly while also providing other projects in the ecosystem to leverage Waku within their Rust codebases more quickly. + +It is desired that we implement a more robust and efficient Rust library for Waku, but this is a significant amount of work. + +Links: +- [Rust bindings to go-waku repo](https://github.com/waku-org/waku-rust-bindings) \ No newline at end of file diff --git a/content/roadmap/networking/status-network-agents.md b/content/roadmap/networking/status-network-agents.md new file mode 100644 index 000000000..8af443c35 --- /dev/null +++ b/content/roadmap/networking/status-network-agents.md @@ -0,0 +1,32 @@ +--- +title: "Status Network Agents Breakdown" +tags: +- "status" +- "waku" +- "scalability" +--- + +This page creates a model to describe the impact of the various clients within the Status ecosystem by describing their individual contribution to the messages within the Waku network they leverage. + +This model will serve to create a realistic network topology while also informing the appropriate _dimensions of scale_ that are relevant to explore in the [Status Waku Scalability Study](./status-waku-kurtosis.md) + +Status has three main clients that users interface with (in increasing "network weight" ordering): +- Status Web +- Status Mobile +- Status Desktop + +Each of these clients has differing (on average) resources available to them, and thusly, provides and consumes different Waku protocols and services within the Status network. Here we will detail their associated messaging impact to the network using the following model: + +``` +Agent + - feature + - protocol + - contentTopic, messageType, payloadSize, frequency +``` + +By describing all `Agents` and their associated feature list, we should be able do the following: + +- Estimate how much impact per unit time an individual `Agent` impacts the Status network +- Create a realistic network topology and usage within a simulation framework (_e.g._ Kurtosis) +- Facilitate a Status Specification of `Agents` +- Set an example for future agent based modeling and simulation work for the Waku protocol suite \ No newline at end of file diff --git a/content/roadmap/networking/status-waku-kurtosis.md b/content/roadmap/networking/status-waku-kurtosis.md new file mode 100644 index 000000000..a7300e802 --- /dev/null +++ b/content/roadmap/networking/status-waku-kurtosis.md @@ -0,0 +1,20 @@ +--- +title: "Status' use of Waku - A Scalability Study" +tags: +- "networking" +- "scalability" +- "waku" +--- + +[Status](https://status.im) is the largest consumer of the Waku protocol, leveraging it for their entire networking stack. THeir upcoming release of Status Desktop and the associated Communities product will heavily push the limits of what Waku can do. As mentioned in the [Networking Overview](./overview.md) page, rigorous scalability studies have yet to be conducted of Waku (v2). + +While these studies most immediately benefit the Status product suite, it behooves the Nomos Project to assist as the lessons learned immediately inform us the limits of what the Waku protocol suite can handle, and how that fits within our [Technical Requirements](../../requirements/overview.md). + +This work has been kicked off as a partnership with the [Kurtosis](https://kurtosis.com) distributed systems development platform. It is our hope that the experience and accumen gained during this partnership and study will serve us in the future with respect to Nomos developme, and more broadly, all projects under the Logos Collective. + +As such, here is an overview of the various resources towards this endeavor: +- [Status Network Agent Breakdown](./status-network-agents.md) - A document that describes the archetypal agents that participate in the Status Network and their associated Waku consumption. +- [Wakurtosis repo](https://github.com/logos-co/wakurtosis) - A Kurtosis module to run scalability studies +- [Waku Topology Test repo](https://github.com/logos-co/Waku-topology-test) - a Python script that facilitates setting up a reasonable network topology for the purpose of injecting the network configuration into the above Kurtosis repo +- [Initial Vac forum post introducing this work](https://forum.vac.dev/t/waku-v2-scalability-studies/142) +- [Initial Waku V2 theoretical scalability study](https://vac.dev/waku-v1-v2-bandwidth-comparison) \ No newline at end of file