mirror of
https://github.com/vacp2p/vac.dev.git
synced 2026-01-08 22:28:01 -05:00
feat: upgrade docusaurus version to v3
This commit is contained in:
@@ -13,7 +13,7 @@ discuss: https://forum.vac.dev/t/waku-version-2-pitch/52
|
||||
|
||||
Read about our plans for Waku v2, moving to libp2p, better routing, adaptive nodes and accounting!
|
||||
|
||||
<!--truncate-->
|
||||
{/* truncate */}
|
||||
|
||||
**tldr: The Waku network is fragile and doesn't scale. Here's how to solve it.**
|
||||
|
||||
@@ -44,7 +44,7 @@ Figure 1-5:
|
||||

|
||||

|
||||
|
||||
See <https://colab.research.google.com/drive/1Fz-oxRxxAFPpM1Cowpnb0nT52V1-yeRu#scrollTo=Yc3417FUJJ_0> for the full report.
|
||||
See https://colab.research.google.com/drive/1Fz-oxRxxAFPpM1Cowpnb0nT52V1-yeRu#scrollTo=Yc3417FUJJ_0 for the full report.
|
||||
|
||||
What we need to do is:
|
||||
|
||||
@@ -88,7 +88,7 @@ Here's where we are at now. In reality, the amplification factor are likely even
|
||||
|
||||
Moving to PubSub over libp2p wouldn't improve amplification per se, but it would be stepping stone. Why? It paves the way for GossipSub, and would be a checkpoint on this journey. Additionally, FloodSub and GossipSub are compatible, and very likely other future forms of PubSub such as GossipSub 1.1 (hardened/more secure), EpiSub, forwarding Kademlia / PubSub over Kademlia, etc. Not to mention security This would also give us access to the larger libp2p ecosystem (multiple protocols, better encryption, quic, running in the browser, security audits, etc, etc), as well as be a joint piece of infrastructured used for Eth2 in Nimbus. More wood behind fewer arrows.
|
||||
|
||||
See more on libp2p PubSub here: <https://docs.libp2p.io/concepts/publish-subscribe/>
|
||||
See more on libp2p PubSub here: https://docs.libp2p.io/concepts/publish-subscribe/
|
||||
|
||||
As part of this move, there are a few individual pieces that are needed.
|
||||
|
||||
@@ -104,11 +104,11 @@ Why can't we use Waku topics for routing directly? PubSub over libp2p isn't buil
|
||||
|
||||
Moving to FloodSub over libp2p would also be an opportunity to clean up and simplify some components that are no longer needed in the Waku v1 protocol, see point below.
|
||||
|
||||
Very experimental and incomplete libp2p support can be found in the nim-waku repo under v2: <https://github.com/status-im/nim-waku>
|
||||
Very experimental and incomplete libp2p support can be found in the nim-waku repo under v2: https://github.com/status-im/nim-waku
|
||||
|
||||
### 2. Simplify the protocol
|
||||
|
||||
Due to Waku's origins in Whisper, devp2p and as a standalone protocol, there are a lot of stuff that has accumulated (<https://rfc.vac.dev/waku/standards/legacy/6/waku1/>). Not all of it serves it purpose anymore. For example, do we still need RLP here when we have Protobuf messages? What about extremely low PoW when we have peer scoring? What about key management / encryption when have encryption at libp2p and Status protocol level?
|
||||
Due to Waku's origins in Whisper, devp2p and as a standalone protocol, there are a lot of stuff that has accumulated (https://rfc.vac.dev/waku/standards/legacy/6/waku1/). Not all of it serves it purpose anymore. For example, do we still need RLP here when we have Protobuf messages? What about extremely low PoW when we have peer scoring? What about key management / encryption when have encryption at libp2p and Status protocol level?
|
||||
|
||||
Not everything has to be done in one go, but being minimalist at this stage will the protocol lean and make us more adaptable.
|
||||
|
||||
@@ -120,7 +120,7 @@ As early as possible we want to integrate with Core via Stimbus in order to miti
|
||||
|
||||
### 4. Topic interest behavior
|
||||
|
||||
While we target full node traffic here, we want to make sure we maintain the existing bandwidth requirements for light nodes that Waku v1 addressed (<https://vac.dev/fixing-whisper-with-waku>). This means implementing topic-interest in the form of Waku topics. Note that this would be separate from app topics notes above.
|
||||
While we target full node traffic here, we want to make sure we maintain the existing bandwidth requirements for light nodes that Waku v1 addressed (https://vac.dev/fixing-whisper-with-waku). This means implementing topic-interest in the form of Waku topics. Note that this would be separate from app topics notes above.
|
||||
|
||||
### 5. Historical message caching
|
||||
|
||||
@@ -128,7 +128,7 @@ Basically what mailservers are currently doing. This likely looks slightly diffe
|
||||
|
||||
Also see section below on adaptive nodes and capabilities.
|
||||
|
||||
### 6. Waku v1 <\> Libp2p bridge
|
||||
### 6. Waku v1 `<\>` Libp2p bridge
|
||||
|
||||
To make the transition complete, there has to a be bridge mode between current Waku and libp2p. This is similar to what was done for Whisper and Waku, and allows any nodes in the network to upgrade to Waku v2 at their leisure. For example, this would likely look different for Core, Desktop, Research and developers.
|
||||
|
||||
@@ -140,7 +140,7 @@ This is where we improve the amplification factors.
|
||||
|
||||
This is a subprotocol of FloodSub in the libp2p world. Moving to GossipSub would allow traffic between full nodes to go from an amplification factor of ~25 to ~6. This basically creates a mesh of stable bidirectional connections, together with some gossiping capabilities outside of this view.
|
||||
|
||||
Explaining how GossipSub works is out of scope of this document. It is implemented in nim-libp2p and used by Nimbus as part of Eth2. You can read the specs here in more detail if you are interested: <https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md> and <https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md>
|
||||
Explaining how GossipSub works is out of scope of this document. It is implemented in nim-libp2p and used by Nimbus as part of Eth2. You can read the specs here in more detail if you are interested: https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md and https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md
|
||||
|
||||

|
||||
|
||||
@@ -160,7 +160,7 @@ This one is slightly more speculative in terms of its ultimate impact. The basic
|
||||

|
||||

|
||||
|
||||
Note that this means a light node that listens to several topics would have to be connected to more full nodes to get connectivity. For a more exotic version of this, see <https://forum.vac.dev/t/rfc-topic-propagation-extension-to-libp2p-pubsub/47>
|
||||
Note that this means a light node that listens to several topics would have to be connected to more full nodes to get connectivity. For a more exotic version of this, see https://forum.vac.dev/t/rfc-topic-propagation-extension-to-libp2p-pubsub/47
|
||||
|
||||
This is orthogonal from the choice of FloodSub or GossipSub, but due to GossipSub's more dynamic nature it is likely best combined with it.
|
||||
|
||||
@@ -172,11 +172,11 @@ Not a primary focus, but worth a look. Looking at the scaling model, there might
|
||||
|
||||
This is where we make sure the network isn't fragile, become a true p2p app, get our users excited and engaged, and allow us to scale the network without creating an even bigger cluster.
|
||||
|
||||
To work in practice, this has a soft dependency on node discovery such as DNS based discovery (<https://eips.ethereum.org/EIPS/eip-1459>) or Discovery v5 (<https://vac.dev/feasibility-discv5>).
|
||||
To work in practice, this has a soft dependency on node discovery such as DNS based discovery (https://eips.ethereum.org/EIPS/eip-1459) or Discovery v5 (https://vac.dev/feasibility-discv5).
|
||||
|
||||
### 1. Adaptive nodes and capabilities
|
||||
|
||||
We want to make the gradation between light nodes, full nodes, storing (partial set of) historical messages, only acting for a specific shard, etc more flexible and explicit. This is required to identify and discover the nodes you want. See <https://github.com/vacp2p/specs/issues/87>
|
||||
We want to make the gradation between light nodes, full nodes, storing (partial set of) historical messages, only acting for a specific shard, etc more flexible and explicit. This is required to identify and discover the nodes you want. See https://github.com/vacp2p/specs/issues/87
|
||||
|
||||
Depending on how the other tracks come together, this design should allow for a desktop node to identify as a full relaying node for some some app topic shard, but also express waku topic interest and retrieve historical messages itself.
|
||||
|
||||
@@ -190,7 +190,7 @@ This is based on a few principles:
|
||||
2. We can account for the difference in contribution in some fashion
|
||||
3. We want to incentivize nodes to tell the true, and be incentivized not to lie
|
||||
|
||||
Accounting here is a stepping stone, where accounting is the raw data upon which some settlement later occurs. It can have various forms of granularity. See <https://forum.vac.dev/t/accounting-for-resources-in-waku-and-beyond/31> for discussion.
|
||||
Accounting here is a stepping stone, where accounting is the raw data upon which some settlement later occurs. It can have various forms of granularity. See https://forum.vac.dev/t/accounting-for-resources-in-waku-and-beyond/31 for discussion.
|
||||
|
||||
We also note that in GossipSub, the mesh is bidrectional. Additionally, it doesn't appears to be a high priority issue in terms of nodes misreporting. What is an issue is having people run full nodes in the first place. There are a few points to that. It has to be possible in the end-user UX, nodes have to be discovered, and it has to be profitable/visible that you are contributing. UX and discovery are out of scope for this work, whereas visibility/accounting is part of this scope. Settlement is a stretch goal here.
|
||||
|
||||
@@ -206,7 +206,7 @@ While accounting for individual resource usage is useful, for the ultimate end u
|
||||
- online time
|
||||
- completeness of storage
|
||||
|
||||
This can be gradually enhanced and strengthened, for example with proofs, consistency checks, Quality of Service, reputation systems. See <https://discuss.status.im/t/network-incentivisation-first-draft/1037> for one attempt to provide stronger guarantees with periodic consistency checks and a shared fund mechanism. And <https://forum.vac.dev/t/incentivized-messaging-using-validity-proofs/51> for using validity proofs and removing liveness requirement for settlement.
|
||||
This can be gradually enhanced and strengthened, for example with proofs, consistency checks, Quality of Service, reputation systems. See https://discuss.status.im/t/network-incentivisation-first-draft/1037 for one attempt to provide stronger guarantees with periodic consistency checks and a shared fund mechanism. And https://forum.vac.dev/t/incentivized-messaging-using-validity-proofs/51 for using validity proofs and removing liveness requirement for settlement.
|
||||
|
||||
All of this is optional at this stage, because our goal here is to improve the status quo for user run nodes. Accounting at this stage should be visible and correspond to the net benefit a node provides to another.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user