Skip to content
Snippets Groups Projects
Commit f99c1657 authored by Keith Millette's avatar Keith Millette
Browse files

Remove some categories in favor of single page enties.

parent 6a5ef578
No related branches found
No related tags found
No related merge requests found
Showing
with 40 additions and 285 deletions
{ {
"label": "cMixx Dashboard", "label": "cMixx Design Specs",
"position": 2, "position": 2,
"link": { "link": {
"type": "generated-index", "type": "generated-index",
"description": "How to get things done" "description": "All things related to cMix"
} }
} }
todo # About dApps
\ No newline at end of file
dApps are generally 3rd Party applications.
Support
Links
Etc.
\ No newline at end of file
# Phoenixx
\ No newline at end of file
# Speakeasy
\ No newline at end of file
...@@ -5,7 +5,7 @@ slug: / ...@@ -5,7 +5,7 @@ slug: /
# xx network Documentation # xx network Documentation
This documentation aims to help understand the core concepts of xx network, its blockchain (xxChain) and its communication layer (cMixx). You will also find documentation covering advanced topics, end-user tools, use-cases and tutorials. This documentation aims to help understand the core concepts of xx network, its blockchain ([xxChain](xxchain/)) and its communication layer ([cMixx](cmixx/)). You will also find documentation covering advanced topics, end-user tools, use-cases and tutorials.
As an open-source project, suggesting new topics, adding new content, and providing corrections are welcome. All documentation can be edited via GitLab. If you're unsure how, follow these instructions (TODO). As an open-source project, suggesting new topics, adding new content, and providing corrections are welcome. All documentation can be edited via GitLab. If you're unsure how, follow these instructions (TODO).
......
File moved
# xx Network Software Overview
![](@site/static/img/Codebase_Overview_Figure_-v3.0-.png)
The xx Network codebase is combined between xx Labs’ consensus software
and Elixxir’s cMixx protocol.
Elixxir software is organized into four groups of repositories as shown
in the figure: Core, Services, Clients, and Tools. The *Core* libraries
handle functionality across Clients and Services, which contain data
structures, interfaces, and cryptography common to many xx Network
components. *Services* implement various messenger features, as well as
authorizing Clients and Nodes to join the network. *Clients* interact
with the network using a shared [Client API (xxDK)](../cmix/xxdk/overview.md). *Tools* provide several
interfaces and utilities to deploy, test, and debug the network.
Most of the Elixxir code found in the Core and Services is written in
the Go programming language. The repositories listed as public below can
be found on the public [Elixxir](https://git.xx.network/elixxir) and [xx
network](https://git.xx.network/xx_network) Git pages. Most software is
posted on a git server run by xx Network.
xx Labs' software is based on Substrate and involves a fork of Substrate
and custom "pallets" implementing xx Network-specific features. This
software is mainly hosted on public [GitHub](https://github.com/xx-labs)
repositories but will be mostly moved to the [xx
labs](https://git.xx.network/xx-labs) on the xx Network git shortly.
To follow the setup guide, most Node operators will likely elect to
download the prepackaged tarballs containing the compiled binaries. To
learn more, refer to the *Node and Gateway Software* section.
## [xx network Codebase](https://git.xx.network/xx_network/)
:::note
TODO Public/Private note
:::
### xx network/[Primitives](https://git.xx.network/xx_network/primitives)
The xx network Primitives repository contains the basic data structures
and utilities used in the Elixxir and Praxxis codebases. This includes
the ID structure for Nodes, Gateways, and users and the NDF structure.
Additional generic structures and utilities are also contained in
Primitives, such as file access and rate-limiting utilities.
### xx network/[Crypto](https://git.xx.network/xx_network/crypto)
The xx Network Crypto repository contains cryptographic primitives that
are shared between Elixxir and Praxxis codebases. Primarily lower-level
primitives, randomness generation, TLS handling, and nonce handling.
### xx network/[Comms](https://git.xx.network/xx_network/comms)
The Comms repository handles all network communication functionality as
well as all of the core connectivity logic. It includes generic comms
handlers and protocols and not specific implementations, which are
implemented in the respective Comm branches for each project.
### xx network/[Scheduling-Scripts](https://git.xx.network/xx_network/scheduling-scripts)
Scripts used to direct the scheduling server based upon blockchain
state, as well as return state for tokenomics
## [Elixxir Codebase](https://git.xx.network/elixxir/)
### Elixxir/[Primitives](https://git.xx.network/elixxir/primitives)
The Elixxir Primitives repository contains the basic data structures and
utilities that are used by all Elixxir repositories. This includes the
user fact structure, the cMixx message structure, and the version object.
### Elixxir/[Crypto](https://git.xx.network/elixxir/crypto)
The Crypto repository encompasses all of the base cryptographic
functionality found in the codebase. Relying heavily on Go’s *big
integer* implementation, Crypto features a cryptographically secure
random number generator implementation, libraries for working with large
integers in modulo cyclic groups for cMixx operations, and basic
encrypt/decrypt functionality. Like Primitives, Crypto only contains
code that is generic to the larger system. A core approach to this
repository is to supply wrappers for operations that may require
migration to other implementations in the future.
### Elixxir/[Comms](https://git.xx.network/elixxir/comms)
Comms builds on the generic utilities of xx Network Comms to provide
specific functionality for Elixxir. It holds a gRPC protocol file along
with a thin Client/Server implementation. The repository currently uses
TLS certificates with RSA keys for encryption and identification, which
will migrate to xx consensus-based quantum secure authenticated channels
as development progresses.
### Elixxir/[GPUMaths](https://git.xx.network/elixxir/gpumathsgo)
The GPUMaths repository accelerates the math used by Server, especially
for precomputations. It provides a subset of the math implemented in the
Crypto repository but accelerated on GPUs. Underlying the acceleration is a publicly available CUDA arbitrary-precision math library, CGBN2.
Components of this written in CUDA are in a separate repository
[gpumathsnative](https://gitlab.com/elixxir/gpumathsnative).
## Services
### Elixxir/[Server](https://git.xx.network/elixxir/server)
The Server repository implements the core cMixx functionality and is the
software that a Node runs. It performs precomputation and real-time
computation and processes messages. In addition, it receives batches of
messages from the Gateways as well as performs network team operations.
### Elixxir/[Gateway](https://git.xx.network/elixxir/gateway)
The Gateway repository contains the API for Clients to interact with the
network. Every Node runs a Gateway and the Gateways collect and store
messages for Clients. Gateway is designed to be a scalable front-end to
the xx Network.
### Elixxir/[Scheduling](https://git.xx.network/elixxir/registration)
Permissioning, also referred to as Scheduling, manages the NDF for
Clients and Servers and schedules cMixx rounds within the network.
Eventually, this functionality will be managed by the distributed xx
consensus. For now, this code handles admission, manages which Nodes are
part of the network, and orchestrates when Nodes operate.
### Elixxir/[Notifications](https://git.xx.network/elixxir/notifications-bot)
Implements a private notifications system, allowing users to receive
notifications on their phone when using the xx messenger. Does so via
Firebase for Android and Apple APNs for iOS.
### Elixxir/[Authorizer](https://git.xx.network/elixxir/authorizer) :lock:
Edge server that Nodes contact to get let through the firewall to talk
to the Scheduling server.
### Elixxir/[Client Registrar](https://git.xx.network/elixxir/client-registrar)
Edge server which authorizes clients into the network
## Clients
### Elixxir/[Client API (xxDK)](https://git.xx.network/elixxir/client)
All Clients use the Client API to interact and send messages with the
cMixx network. In addition, it uses Go mobile to produce a library
compatible with iOS and Android.
### Elixxir/[User Discovery (UD)](https://git.xx.network/elixxir/user-discovery-bot)
User Discovery helps users make the first contact with other users.
Using the "singe use" package within the xxDK, User Discovery implements
a completely private user lookup, where the system cannot determine
which user is querying. The system leverages Twilio to verify emails and
phone numbers if the user would like to do so.
### Elixxir/Mobile Clients
* [xx Messenger - Android](https://gitlab.com/elixxir/client-android)
* [xx Messenger - iOS](https://gitlab.com/elixxir/client-ios)
Currently, clients exist for iOS and Android operating systems. These
both use the Go mobile libraries produced in the Client API.
## Tools
### Elixxir/[Wrapper Script](https://git.xx.network/elixxir/wrapper)
The Wrapper Script is a Node and Gateway management script that
simplifies the running of the xx Network software. The script automates
the management of the xx Network software log files. For easy management
or in the event of an error, it starts, stops, and restarts the software
without requiring the operator to revisit the command line. Optionally,
it can automatically update the Node and Gateway with the latest xx
network binaries and configuration files. To learn more, refer to the
Wrapper Script Arguments section.
### Elixxir/[DevOps](https://git.xx.network/elixxir/) :lock:
DevOps is a deployment platform for Microsoft Azure, Google Cloud
Platform, and Amazon Web Services (AWS) written in Terraform. DevOps
allows for the deployment of test networks, management of deployments of
individual Nodes, and the deployment of multi-cloud implementations of
xx Network.
### Elixxir/[Integration](https://git.xx.network/elixxir/integration)
The Integration repository is a series of end-to-end tests designed to
test different functionality of the cMixx protocol. For example, several
tests focus on different batch sizes with Nodes only. Another test
covers all the Client-level interactions within the network.
### Elixxir/[Local Environment](https://git.xx.network/elixxir/localenvironment)
The Local Environment repository contains a set of scripts designed to
allow testing the entire platform on a single machine.
## Version Scheme
Both Gateway and Node binaries have a version string embedded in them,
consisting of a major version, a minor version, and a patch string,
separated by a period.
| Major | | Minor | | Patch |
|-------|-----|-------|-----|-------|
| ┌┴┐ | | ┌┴┐ | | ┌─┴─┐ |
| 4 | . | 2 | . | 6ab |
To participate in the network, a Node or Gateway has to have a
compatible version with the required version reported by the Scheduling
server. For a version to be compatible, the major version must be equal
to the required major version and the minor version must be greater than
or equal to the required minor version. The patch can be anything, but
it will always be present.
## [xx labs Codebase](https://github.com/xx-labs)
### xx-labs/[sleeve](https://github.com/xx-labs/sleeve)
The xx labs sleeve repository contains code to generate Sleeve wallets.
The sleeve is a novel way of embedding a quantum secure key in the
generation of curve-based, non-quantum secure keys. In addition, the
repository contains an implementation of the WOTS+ signature scheme,
which is used as the quantum-secure fallback for Sleeve wallets.
### xx-labs/[xxchain](https://github.com/xx-labs/xxchain)
The xxchain repository contains the code for the xx Network blockchain
node, which is based on Substrate. It contains the following pallets
(modules) that are necessary for xx Network, among others:
- **xx-betanet-rewards:** allows users to select an option for the
BetaNet Staking Rewards program, which can only be accepted and
enacted after a Referendum passes using Democracy;
- **xx-cmix:** hosts cMixx variables and software hashes on-chain, and
allows scheduling server to push points information according to
cMixx rounds completed/failed;
- **xx-economics:** Implements the unique token economics of xx
network. This includes a rewards pool from which staking rewards are
taken, only leading to inflation of the total supply after the pool
is empty, and an adjustable maximum inflation value according to
block number, which allows xx Network’s inflation to be decreasing
over multiple years.
### xx-labs/[substrate](https://github.com/xx-labs/substrate)
The xx labs substrate repository is a fork of the [Substrate framework](https://github.com/paritytech/substrate). The xx-network
branch of this repository contains Staking pallet modifications specific
to the xx Network, such as the inclusion of cMixx IDs.
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
sidebar_position: 2 sidebar_position: 2
--- ---
# What is xx Chain? # What is xxChain?
xx Chain is the unique consensus protocol that protects and secures the xx Network blockchain. After transactional data is neutralized through cMixx, payments are passed to the decentralized xx Nodes running the xx Chain protocol. The nodes then confirm transactions and add them to the xx blockchain. Learn more in the xx consensus whitepaper. xx Chain is the unique consensus protocol that protects and secures the xx Network blockchain. After transactional data is neutralized through cMixx, payments are passed to the decentralized xx Nodes running the xxChain protocol. The nodes then confirm transactions and add them to the xxChain. Learn more in the xx consensus whitepaper.
\ No newline at end of file \ No newline at end of file
...@@ -2,25 +2,26 @@ ...@@ -2,25 +2,26 @@
sidebar_position: 1 sidebar_position: 1
--- ---
# What is xx Network? # What is xx network?
xx network is the secure and efficient decentralized ecosystem of the future. Founded by the godfather of digital currency and privacy technology David Chaum, the xx network MainNet launched in November 2021. xx network consists of a fast, low-fee quantum-ready layer 1 blockchain built in tandem with the most private communications network in the world (cMixx). By leveraging the xxDK, any application or blockchain can route their traffic through the xx network's communications layer in order to provide metadata privacy and quantum-secure encryption for all types of data communications. xx network is a secure and efficient decentralized ecosystem. Founded by the "Godfather of Digital Currency", [David Chaum](https://en.wikipedia.org/wiki/David_Chaum). The xx network MainNet launched in November 2021. xx network consists of a fast, low-fee quantum-ready layer 1 blockchain, [xxChain](xxchain), built in tandem with the most private communications network in the world, [cMixx](cmixx). By leveraging the "xx Developer Kit" ([xxDK](../cmixx/xxdk/overview.md)), any application or blockchain can route their traffic through the xx network's communications layer in order to provide metadata privacy and quantum-secure encryption for all types of data communications.
## Current xx Network Architecture ## Current xx network Architecture
The MainNet is generally composed of three components: Nodes, Gateways, and clients. Within themselves, all three of these components handle two functions: interacting with cMixx, the private communications layer, and the xx Chain.
The MainNet is generally composed of three components: Nodes, Gateways, and clients. Within themselves, all three of these components handle two functions: interacting with cMixx, the private communications layer, and the xxChain.
![Current Network Structure](@site/static/img/Present_Network_Chart.png) ![Current Network Structure](@site/static/img/Present_Network_Chart.png)
* Nodes: The core operators of the network; they execute the cMixx protocol and act as validators within the xx Chain. * Nodes: The core operators of the network; they execute the cMixx protocol and act as validators within the xxChain.
* Gateways: The public-facing components of Nodes, one exists per Node. They store received messages, provide public access to data, and run a light node for public access. * Gateways: The public-facing components of Nodes, one exists per Node. They store received messages, provide public access to data, and run a light node for public access.
* Clients: Clients come in two versions, cMixx clients and xx Chain clients. cMixx clients access the communications layer and can send and receive private communications. xx Chain clients are currently limited to block explorers and other interactions with the blockchain. * Clients: Clients come in two versions, cMixx clients and xxChain clients. cMixx clients access the communications layer and can send and receive private communications. xxChain clients are currently limited to block explorers and other interactions with the blockchain.
## Full xx network Decentralization
## Full xx Network Decentralization
In a future update, the scheduling server will be eliminated and replaced by an on-chain consensus operation which will work as follows: In a future update, the scheduling server will be eliminated and replaced by an on-chain consensus operation which will work as follows:
![Future Network Structure](@site/static/img/Future_Network_Chart.png) ![Future Network Structure](@site/static/img/Future_Network_Chart.png)
* To be scheduled, a Node will submit a transaction to the network known as a waiting bid. Once accepted into a block, the Node will be written into the “waiting pool” for a maximum number of blocks. * To be scheduled, a Node will submit a transaction to the network known as a waiting bid. Once accepted into a block, the Node will be written into the “waiting pool” for a maximum number of blocks.
* The waiting pool will not be exhausted below 30% of the total number of online xx Nodes (in the waiting pool + currently running rounds) to ensure proper mixing between Nodes in a team. Every block producer will use the block randomly to execute a fisher-yates shuffle on the waiting pool, selecting Nodes 1 through 5 as the first team, nodes 6 through 10 as the second team, etcetera until the waiting pool is exhausted. * The waiting pool will not be exhausted below 30% of the total number of online xx Nodes (in the waiting pool + currently running rounds) to ensure proper mixing between Nodes in a team. Every block producer will use the block randomly to execute a [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle) on the waiting pool, selecting Nodes 1 through 5 as the first team, nodes 6 through 10 as the second team, etc. until the waiting pool is exhausted.
* The teams will see their formation and work together to execute their precomputation. Once completed, they will select a time to execute their realtime based upon network congestion and generate a joint certificate on the round realtime start. This will be passed to the Gateways and gossiped throughout the Gateway network. * The teams will see their formation and work together to execute their precomputation. Once completed, they will select a time to execute their realtime based upon network congestion and generate a joint certificate on the round realtime start. This will be passed to the Gateways and gossiped throughout the Gateway network.
* Clients, who are polling the Gateways, will see realtime certificates as well as the scheduling of the team within the block and select a round to submit messages to. * Clients, who are polling the Gateways, will see realtime certificates as well as the scheduling of the team within the block and select a round to submit messages to.
* Once a realtime time has been reached, the nodes will begin the realtime, rapidly anonymizing the messages. * Once a realtime time has been reached, the nodes will begin the realtime, rapidly anonymizing the messages.
* Once complete, the mixed messages will be delivered to the Gateway and the team will form a joint certificate stating the completion of the round. This will be submitted as a transaction to the blockchain. * Once complete, the mixed messages will be delivered to the Gateway and the team will form a joint certificate stating the completion of the round. This will be submitted as a transaction to the blockchain.
* Once the certificate of completion is received from the team, they will be awarded points towards compensation for the era and entered back into the waiting pool automatically. If the certificate does not get received by the blockchain before a predefined number of blocks, the round will be considered failed and the team will not be re-entered back into the waiting pool until they submit another waiting bid. At any time, any member of the team can submit a failure certificate for the round, canceling it and allowing the team members to bid back into the waiting pool. * Once the certificate of completion is received from the team, they will be awarded points towards compensation for the era and entered back into the waiting pool automatically. If the certificate does not get received by the blockchain before a predefined number of blocks, the round will be considered failed and the team will not be re-entered back into the waiting pool until they submit another waiting bid. At any time, any member of the team can submit a failure certificate for the round, canceling it and allowing the team members to bid back into the waiting pool.
# About # cMixx Dashboard
# [Quick View](https://dashboard.xx.network/) # [Quick View](https://dashboard.xx.network/)
The above link will bring you to cMix Dashboard Quick View. The above link will bring you to cMix Dashboard Quick View.
......
# xxChain Explorer
https://explorer.xx.network https://explorer.xx.network
\ No newline at end of file
{
"label": "xxChain Explorer",
"position": 1,
"link": {
"type": "generated-index",
"description": "How to get things done"
}
}
# Simple Staking
https://staking.xx.network
\ No newline at end of file
{
"label": "Simple Staking",
"position": 4,
"link": {
"type": "generated-index",
"description": "How to get things done"
}
}
File moved
{
"label": "Sleeve Wallet Generator",
"position": 2,
"link": {
"type": "generated-index",
"description": "How to get things done"
}
}
--- ---
sidebar_position: 3 sidebar_position: 3
--- ---
\ No newline at end of file
# Account Types
\ No newline at end of file
--- ---
sidebar_position: 6 sidebar_position: 6
--- ---
\ No newline at end of file
# Add Contacts
\ No newline at end of file
# Voting
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment