add The Graph + fix node-peer phrasing

This commit is contained in:
LordGhostX 2023-05-22 11:53:23 +01:00
parent 61e6d92633
commit a3d192b14e
No known key found for this signature in database
GPG Key ID: 520CC5DC4F94FCC7
10 changed files with 41 additions and 18 deletions

View File

@ -6,7 +6,7 @@ Waku is a unified and cohesive entity that offers a rich ecosystem with three di
## Discovery Domain
Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as [`Discv5`](/overview/concepts/peer-discovery#discv5) and [`Peer Exchange`](/overview/concepts/peer-discovery#peer-exchange). These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.
Peer discovery in Waku facilitates locating other peers within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as [`Discv5`](/overview/concepts/peer-discovery#discv5) and [`Peer Exchange`](/overview/concepts/peer-discovery#peer-exchange). These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.
## Gossip Domain

View File

@ -6,15 +6,15 @@ Waku takes a modular approach, providing a range of protocols that enable applic
## [Relay](https://rfc.vac.dev/spec/11/)
The `Relay` protocol employs a Pub/Sub architecture to facilitate message routing among nodes. It extends the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship.
The `Relay` protocol employs a Pub/Sub architecture to facilitate message routing among peers. It extends the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship.
## [Filter](https://rfc.vac.dev/spec/12/)
The `Filter` protocol allows light nodes to selectively subscribe to specific messages transmitted by other nodes. It is designed to be a lightweight alternative to the `Relay` protocol, particularly tailored for devices with limited bandwidth.
The `Filter` protocol allows light nodes to selectively subscribe to specific messages transmitted by other peers. It is designed to be a lightweight alternative to the `Relay` protocol, particularly tailored for devices with limited bandwidth.
## [Store](https://rfc.vac.dev/spec/13/)
The `Store` protocol is responsible for storing messages relayed on the network, making it possible to query and retrieve them later. This functionality benefits offline nodes by enabling them to retrieve missed messages upon reconnection.
The `Store` protocol is responsible for storing messages relayed on the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection.
:::info
Using `Relay` and `Filter` protocols is recommended when a node is online, as `Store` does not guarantee data availability. The `Store` protocol is suitable for retrieving messages when connecting to the network, like when a dApp starts.

View File

@ -6,7 +6,7 @@ Transports help move data packets across a network by establishing connections b
Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended:
- **TCP:** By default, Waku nodes utilize TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes.
- **TCP:** By default, Waku nodes utilize TCP for communication. Service nodes should employ TCP for listening to and connecting with other peers.
- **Secure WebSocket:** In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely.
- Other protocols like [WebRTC](https://github.com/waku-org/js-waku/issues/20), [WebTransport](https://github.com/waku-org/js-waku/issues/697), and QUIC have been researched and studied for potential integration.

View File

@ -12,7 +12,7 @@ We have prepared a PoC implementation of this method in JS: <https://examples.wa
## Prevention of Denial of Service (DoS) and Node Incentivization
Denial of service signifies the case where an adversarial node exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: <https://github.com/vacp2p/research/issues/148>.
Denial of service signifies the case where an adversarial peer exhausts another peer's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: <https://github.com/vacp2p/research/issues/148>.
In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivizing the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in `Store` and `Filter` to protect against DoS attacks.

View File

@ -29,4 +29,4 @@ Confidentiality in Waku is ensured through data encryption, while integrity and
## [Security Considerations](https://rfc.vac.dev/spec/10/#security-considerations)
In protocols like `Store` and `Filter`, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because peers use their `PeerID` to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's `PeerID`, considered Personally Identifiable Information (PII). In `Store`, the queried node can link the querying node's `PeerID` to the topics being queried. Similarly, in `Filter`, a full node can link the `PeerID` of a light node to its content filter.
In protocols like `Store` and `Filter`, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their `PeerID` to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's `PeerID`, considered Personally Identifiable Information (PII). In `Store`, the queried node can link the querying node's `PeerID` to the topics being queried. Similarly, in `Filter`, a node can link the `PeerID` of a light node to its content filter.

View File

@ -33,5 +33,12 @@ import PoweredByCard from "@site/src/components/PoweredByCard";
>
RAILGUN uses Waku to offer private gas payments to users, ensuring anonymity and privacy for their transactions.
</PoweredByCard>
<PoweredByCard
appLink="https://github.com/graphops/graphcast-sdk"
logoSrc="/img/the-graph-logo.svg"
logoAlt="The Graph icon"
>
Waku powers the Graphcast SDK, enabling the development of gossip-powered applications within The Graph ecosystem.
</PoweredByCard>
</div>
```

View File

@ -37,6 +37,7 @@ const sidebars = {
"clients/js-waku/index"
],
community: [
"powered-by-waku",
"community"
]
};

View File

@ -6,7 +6,7 @@ const PoweredByCard = ({ appLink, logoSrc, logoAlt, children }) => (
width: "100%",
border: "1px solid #666",
borderRadius: "8px",
padding: "1.5em"
padding: "1.5rem"
}}
>
<div style={{
@ -14,7 +14,7 @@ const PoweredByCard = ({ appLink, logoSrc, logoAlt, children }) => (
flexDirection: "column",
alignItems: "center",
backgroundColor: "#fff",
marginBottom: "1em"
marginBottom: "1rem"
}}>
<img
src={logoSrc}
@ -30,7 +30,7 @@ const PoweredByCard = ({ appLink, logoSrc, logoAlt, children }) => (
<button
style={{
width: "100%",
padding: "1em",
padding: "1rem",
borderRadius: "8px",
backgroundColor: "#e6f6ff",
border: "1px solid #666",

View File

@ -1,6 +1,6 @@
.powered-by-card-container {
display: grid;
gap: 2em;
gap: 1rem;
justify-content: center;
}
@ -10,18 +10,12 @@
}
}
@media (min-width: 768px) and (max-width: 1023px) {
@media (min-width: 768px) {
.powered-by-card-container {
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 1024px) {
.powered-by-card-container {
grid-template-columns: repeat(3, 1fr);
}
}
.header-github-link:hover {
opacity: 0.6;
}

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 129 32" xmlns="http://www.w3.org/2000/svg">
<g id="The-Graph" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="The-Graph---Assets" transform="translate(-1041.000000, -488.000000)">
<g id="Logo-/-Purple-/-The-Graph-Logo-white" transform="translate(1041.000000, 488.000000)">
<path d="M46.03,22.5 L46.03,12.204 L49.468,12.204 L49.468,9.72 L40,9.72 L40,12.204 L43.402,12.204 L43.402,22.5 L46.03,22.5 Z M53.338,22.5 L53.338,18.108 C53.338,16.38 54.202,15.552 55.336,15.552 C56.362,15.552 56.92,16.344 56.92,17.64 L56.92,22.5 L59.386,22.5 L59.386,17.226 C59.386,14.886 58.09,13.302 55.912,13.302 C54.742,13.302 53.806,13.806 53.338,14.526 L53.338,9 L50.872,9 L50.872,22.5 L53.338,22.5 Z M65.794,22.698 C68.08,22.698 69.862,21.384 70.402,19.566 L67.828,19.566 C67.54,20.178 66.784,20.556 65.92,20.556 C64.39,20.556 63.598,19.638 63.49,18.576 L70.51,18.576 C70.636,15.192 68.458,13.302 65.812,13.302 C63.076,13.302 61.078,15.3 61.078,17.982 C61.078,20.718 63.04,22.698 65.794,22.698 Z M67.81,16.956 L63.58,16.956 C63.814,15.966 64.606,15.3 65.74,15.3 C66.586,15.3 67.504,15.75 67.81,16.956 Z M82.642,22.716 C86.44,22.716 89.518,20.106 88.942,14.85 L82.336,14.85 L82.336,17.298 L86.242,17.298 C85.954,19.062 84.712,20.196 82.642,20.196 C80.158,20.196 78.538,18.396 78.538,16.11 C78.538,13.824 80.158,12.024 82.606,12.024 C83.83,12.024 85.018,12.564 85.648,13.5 L88.636,13.5 C87.772,11.088 85.288,9.504 82.606,9.504 C78.736,9.504 75.91,12.402 75.91,16.11 C75.91,19.818 78.736,22.716 82.642,22.716 Z M93.244,22.5 L93.244,18.198 C93.244,16.722 94.018,15.804 95.188,15.804 C95.584,15.804 95.926,15.876 96.304,16.002 L96.304,13.5 C95.998,13.41 95.728,13.392 95.476,13.392 C94.468,13.392 93.55,14.058 93.244,14.94 L93.244,13.5 L90.778,13.5 L90.778,22.5 L93.244,22.5 Z M101.218,22.698 C102.46,22.698 103.414,22.068 103.81,21.492 L103.81,22.5 L106.276,22.5 L106.276,13.5 L103.81,13.5 L103.81,14.508 C103.414,13.932 102.46,13.302 101.218,13.302 C98.824,13.302 96.988,15.444 96.988,18 C96.988,20.556 98.824,22.698 101.218,22.698 Z M101.74,20.448 C100.39,20.448 99.472,19.404 99.472,18 C99.472,16.596 100.39,15.552 101.74,15.552 C103.09,15.552 104.008,16.596 104.008,18 C104.008,19.404 103.09,20.448 101.74,20.448 Z M111.136,26.262 L111.136,21.492 C111.55,22.068 112.504,22.698 113.746,22.698 C116.14,22.698 117.976,20.556 117.976,18 C117.976,15.444 116.14,13.302 113.746,13.302 C112.504,13.302 111.55,13.932 111.136,14.508 L111.136,13.5 L108.67,13.5 L108.67,26.262 L111.136,26.262 Z M113.206,20.448 C111.856,20.448 110.938,19.404 110.938,18 C110.938,16.596 111.856,15.552 113.206,15.552 C114.556,15.552 115.474,16.596 115.474,18 C115.474,19.404 114.556,20.448 113.206,20.448 Z M122.242,22.5 L122.242,18.108 C122.242,16.38 123.106,15.552 124.24,15.552 C125.266,15.552 125.824,16.344 125.824,17.64 L125.824,22.5 L128.29,22.5 L128.29,17.226 C128.29,14.886 126.994,13.302 124.816,13.302 C123.646,13.302 122.71,13.806 122.242,14.526 L122.242,9 L119.776,9 L119.776,22.5 L122.242,22.5 Z" id="TheGraph" fill-rule="nonzero" style="fill: rgb(0, 0, 0);"/>
<g id="Group">
<g id="Clipping-mask">
<circle cx="16" cy="16" r="16" transform="matrix(1, 0, 0, 1, 0, 0)" fill="#6F4CFF"/>
<circle cx="16" cy="16" r="16" transform="matrix(1, 0, 0, 1, 0, 0)" fill-opacity="0.08" fill="#0C0A1D"/>
</g>
<g id="Logos-/-The-Graph" mask="url(#mask-2)" fill="#FFFFFF">
<g transform="translate(9.166667, 6.000000)" id="g">
<path d="M12.7010417,14.5214743 C13.0906064,14.9093063 13.1184325,15.5207943 12.7845198,15.9405772 L12.7010417,16.0338581 L8.40403646,20.3117511 C7.98450521,20.7294163 7.30442708,20.7294163 6.88489583,20.3117511 C6.4953311,19.923919 6.46750505,19.312431 6.80141768,18.8926481 L6.88489583,18.7993673 L11.181901,14.5214743 C11.6014323,14.103809 12.2815104,14.103809 12.7010417,14.5214743 Z M6.5703125,1.375 C10.1299479,1.375 13.015625,4.24784218 13.015625,7.79164506 C13.015625,11.3354479 10.1299479,14.2082901 6.5703125,14.2082901 C3.01067708,14.2082901 0.125,11.3354479 0.125,7.79164506 C0.125,4.24784218 3.01067708,1.375 6.5703125,1.375 Z M6.5703125,3.51388169 C4.19726563,3.51388169 2.2734375,5.42902339 2.2734375,7.79164506 C2.2734375,10.1542667 4.19726563,12.0694084 6.5703125,12.0694084 C8.94348958,12.0694084 10.8671875,10.1542667 10.8671875,7.79164506 C10.8671875,5.42902339 8.94348958,3.51388169 6.5703125,3.51388169 Z M14.089974,1.375 C14.6832031,1.375 15.1640625,1.85372061 15.1640625,2.44444084 C15.1640625,3.03516108 14.6832031,3.51388169 14.089974,3.51388169 C13.4966146,3.51388169 13.0157552,3.03516108 13.0157552,2.44444084 C13.0157552,1.85372061 13.4966146,1.375 14.089974,1.375 Z"/>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB