forked from nymtech/nym
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* update landing page icons * new architecture diagram * force dark theme * new nyx consolidated page * epoch page * overhaul traffic flow + add diagram * note on dvpn mode * fix formatting of lists * remove old todo
- Loading branch information
1 parent
102cd10
commit 07544d9
Showing
35 changed files
with
1,672 additions
and
246 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,8 @@ | ||
# Network Components | ||
|
||
Core components: | ||
* A **Mixnet**, which encrypts and mixes Sphinx packet traffic so that it cannot be determined who is communicating with whom. Our mixnet is based on a modified version of the [**Loopix** design](concepts/loopix). This is made up of [Nym nodes](architecture/mixnet/nodes) runnning on servers around the world. | ||
* A **Mixnet**, which mixes Sphinx packet traffic so that it cannot be determined who is communicating with whom. Our mixnet is based on a modified version of the [**Loopix** design](concepts/loopix). This is made up of [Nym nodes](architecture/mixnet/nodes) runnning on servers around the world maintained by a decentralised group of Operators. | ||
* Various [**Nym clients**](architecture/mixnet/clients) which manage sending and receiving Sphinx packets, encrypting/decrypting traffic, and providing [cover traffic](./concepts/cover-traffic) to hide 'real' traffic timing. | ||
* A CosmWasm-enabled blockchain called [**Nyx**](architecture/nyx), the home of the various smart contracts used by the mixnet. | ||
* A CosmWasm-enabled blockchain called [**Nyx**](architecture/nyx), the home of the various smart contracts used by the mixnet. A subset of Nyx Validators run [NymAPI]() TODO LINK instances, taking part in also producing and verifying [zk-nym credentials](cryptography/zk-nym). | ||
|
||
![arch_overview](/images/network/arch/overall-arch.png) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,54 @@ | ||
import { Callout } from 'nextra/components' | ||
|
||
// TODO REDIRECTS FROM PREVIOUS PAGES TO THESE NEW SUBSECTIONS | ||
|
||
|
||
# Mixnet Components | ||
The mixnet is made up of nodes running in several different roles: | ||
* **Mix Nodes** provide network security for network content _and_ metadata by performing packet-mixing on traffic travelling through the network. | ||
* **Gateways** act as message storage for clients which may go offline and come back online again, and (once zk-nyms are enabled) check for anonymous proof of access credentials. They represent the first and last hop Mixnet packets travel through when travelling between clients. | ||
* **Services** are applications that communicate with nym clients, listening and sending traffic to the mixnet. This is an umbrella term for a variety of different pieces of code, such as the Network Requester. | ||
|
||
> **Clients** are used to connect to and send messages through the Mixnet to other clients, utilising Gateways for ingress and exit. These are however on the 'user' side and not a Mixnet component per se. | ||
## Nym Nodes | ||
|
||
<Callout type="info" emoji="ℹ️"> | ||
|
||
If you want to run a node, the setup and maintenance guides can be found in the [Operator Docs](../../../operators/introduction). | ||
|
||
</Callout> | ||
|
||
Although a large proportion of the Nym mixnet's functionality is implemented client-side, several key anonymity features rely on the decentralised node network that make up the Mixnet that run in different modes: | ||
|
||
* Nym Nodes running in **Mix Node** mode provide network security for network content _and_ metadata by performing packet-mixing on traffic travelling through the network: accepting incoming Sphinx packets from other Nym nodes and, using a variable delay, 'mixing' them with other packets (not forwarding on received packets according to FIFO but instead relying on a randomised delay function). | ||
* Nym Nodes running in **Entry Gateway** mode act as message storage for clients which may go offline and come back online again, and (once zk-nyms are enabled) check for anonymous proof of access credentials. They represent the first hop Mixnet packets travel through when travelling between clients. | ||
* Nym Nodes running in **Exit Gateway** mode act as message storage for clients which may go offline and come back online again, and communicate with the wider internet on behalf of Nym Clients. They represent the last hop Mixnet packets travel through when travelling between clients and/or external services. These can be thought of somewhat analogously to Tor Exit Nodes. | ||
* **Services** are applications that communicate with Nym Clients, listening and sending traffic to the Mixnet. | ||
|
||
## Smoosh Status | ||
See the [traffic flow](../traffic) page for detailed information on how traffic moves through the Mixnet as well as the [Loopix](https://arxiv.org/pdf/1703.00536) design paper for overview of the stratified nature of the Mixnet. | ||
|
||
## Node Smoosh Status | ||
The various Mixnet components were originally completely separate binaries. They are in the process of being 'smooshed' together into a single `nym-node` binary which runs in different modes for ease of use, as well as to allow for a more developed and responsive Mixnet design, where the role of a node in a given time period is decided and changed automatically based on network conditions (more on this in the future). | ||
|
||
Completed: | ||
* The `nym-network-requester` is now part of a `nym-node` running in as an Exit Gateway. | ||
* All nodes are now a `nym-node`. A node's role is defined manually at runtime by the operator. | ||
* The `nym-network-requester` is now part of a `nym-node` running in Exit Gateway mode. | ||
|
||
Upcoming: | ||
* Whether a `nym-node` is running as a Gateway or Mix Node will be set based on network conditions, and change epoch to epoch. Currently the role is set manually by the operator and does not change automatically over time. A node will be able to be running in the role of a Mix Node, an Entry Gateway, or an Exit Gateway. | ||
|
||
## Nym Clients | ||
|
||
<Callout type="info" emoji="ℹ️"> | ||
You can read about setting up and using various clients in the [Developer Docs](../../developers/clients). | ||
</Callout> | ||
|
||
A large proportion of the Nym Mixnet's functionality is implemented client-side. | ||
|
||
Clients perform the following actions on behalf of users: | ||
|
||
* Determine network topology - what nodes exist, their public encryption keys and IP, etc. | ||
* Register with a Gateway | ||
* Authenticate with a Gateway | ||
* Receive and decrypt messages from the Gateway | ||
* Create layer-encrypted [Sphinx packets](../cryptography/sphinx) | ||
* Send Sphinx packets with real messages | ||
* Send Sphinx packet [cover traffic](../concepts/cover-traffic) when no real messages are being sent | ||
* Retransmit [un-acknowledged packet sends](../traffic/acks) | ||
|
||
> At the moment due to the fact that Nym clients are [message-based](../../developers/concepts/messages), using the Mixnet requires another client on the 'other side' of the mixet to send packets to, unless you're using the `nymvpn` client (part of the NymVPN app) or the `socks5` client, which operates as a SOCKS4,4a, or 5 proxy and is able to utilise the client embedded within the `nym-node`'s Exit Gateway functionality (prev. this functionality was a standalone service, the Network Requester). In the future we wish to remove this point of friction and have all Nym clients construct IP packets instead, easing the integration burden and abstracting away the message-based nature of client communication. |
4 changes: 0 additions & 4 deletions
4
documentation/docs/pages/network/architecture/mixnet/_meta.json
This file was deleted.
Oops, something went wrong.
22 changes: 0 additions & 22 deletions
22
documentation/docs/pages/network/architecture/mixnet/clients.mdx
This file was deleted.
Oops, something went wrong.
19 changes: 0 additions & 19 deletions
19
documentation/docs/pages/network/architecture/mixnet/nodes.mdx
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.