Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7bc2c070e8 | |||
| edce7a5d3f | |||
| 04d09fba7b | |||
| 3f4361cb8a | |||
| b4157a67a2 | |||
| 33deb09da8 | |||
| 5bb59466ab | |||
| da1d7874bb | |||
| 9e692bfba4 |
@@ -1,9 +1,10 @@
|
||||
name: ci-sdk-docs-typescript
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- "sdk/typescript/**"
|
||||
- "documentation/"
|
||||
- "wasm/**"
|
||||
|
||||
jobs:
|
||||
@@ -28,7 +29,7 @@ jobs:
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v4
|
||||
with:
|
||||
go-version: '1.20'
|
||||
go-version: "1.20"
|
||||
|
||||
- name: Install wasm-pack
|
||||
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
|
||||
@@ -36,7 +37,7 @@ jobs:
|
||||
- name: Install wasm-opt
|
||||
uses: ./.github/actions/install-wasm-opt
|
||||
with:
|
||||
version: '116'
|
||||
version: "116"
|
||||
|
||||
- name: Build branch WASM packages
|
||||
run: make sdk-wasm-build
|
||||
@@ -3,10 +3,10 @@ import { Box, Grid, Typography } from "@mui/material";
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
|
||||
import networkDocs from "./images/network-docs.png";
|
||||
import developerDocs from "./images/developer-docs.png";
|
||||
import sdkDocs from "./images/sdk-docs.png";
|
||||
import operatorGuide from "./images/operator-guide.png";
|
||||
import networkDocs from "../public/images/landing/network-docs.png";
|
||||
import developerDocs from "../public/images/landing/developer-docs.png";
|
||||
import sdkDocs from "../public/images/landing/sdk-docs.png";
|
||||
import operatorGuide from "../public/images/landing/operator-guide.png";
|
||||
|
||||
export const LandingPage = () => {
|
||||
const squares = [
|
||||
@@ -21,7 +21,7 @@ export const LandingPage = () => {
|
||||
description:
|
||||
"Guides and maintenance: if you want to run a node, start here",
|
||||
|
||||
href: "/operators",
|
||||
href: "/operators/introduction",
|
||||
icon: operatorGuide,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Box } from "@mui/material";
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import matrixLogo from "../images/matrix-logo.png";
|
||||
import matrixLogo from "../public/images/matrix-logo.png";
|
||||
export const Matrix = () => {
|
||||
return (
|
||||
<Link
|
||||
|
||||
@@ -335,11 +335,127 @@ const config = {
|
||||
destination: "/developers/archive/nym-connect",
|
||||
permanent: true,
|
||||
},
|
||||
// operators:
|
||||
// specific urls that have changed
|
||||
{
|
||||
source: "/operators/nodes/wallet-preparation.html",
|
||||
destination: "/operators/nodes/preliminary-steps/wallet-preparation",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/nodes/vps-setup.html",
|
||||
destination: "/operators/nodes/preliminary-steps/vps-setup",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/nodes/proxy-configuration.html",
|
||||
destination:
|
||||
"/operators/nodes/nym-node/configuration/proxy-configuration",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/nodes/bonding.html",
|
||||
destination: "/operators/nodes/nym-node/bonding",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/nodes/nym-api.html",
|
||||
destination: "/operators/nodes/validator-setup/nym-api",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/nodes/nyx-configuration.html",
|
||||
destination: "/operators/nodes/validator-setup/nyx-configuration",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/nodes/manual-upgrade.html",
|
||||
destination: "/operators/nodes/maintenance/manual-upgrade",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/nodes/nymvisor-upgrade.html",
|
||||
destination: "/operators/nodes/maintenance/nymvisor-upgrade",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/testing/performance.html",
|
||||
destination: "/operators/nodes/performance-and-testing",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/testing/gateway-probe.html",
|
||||
destination: "/operators/nodes/performance-and-testing/gateway-probe",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/testing/node-api-check.html",
|
||||
destination: "/operators/nodes/performance-and-testing/node-api-check",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/testing/prometheus-grafana.html",
|
||||
destination:
|
||||
"/operators/nodes/performance-and-testing/prometheus-grafana",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/testing/explorenym-scripts.html",
|
||||
destination:
|
||||
"/operators/nodes/performance-and-testing/prometheus-grafana/explorenym-scripts",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/legal/community-counsel.html",
|
||||
destination: "/operators/community-counsel",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/legal/exit-gateway.html",
|
||||
destination: "/operators/community-counsel/exit-gateway",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/legal/isp-list.html",
|
||||
destination: "/operators/community-counsel/isp-list",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/legal/jurisdictions.html",
|
||||
destination: "/operators/community-counsel/jurisdictions",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/legal/swiss.html",
|
||||
destination: "/operators/community-counsel/jurisdictions/swiss",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/legal/united-states.html",
|
||||
destination: "/operators/community-counsel/jurisdictions/united-states",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/legal/landing-pages.html",
|
||||
destination: "/operators/community-counsel/landing-pages",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/operators/legal/add-content.html",
|
||||
destination: "/operators/community-counsel/add-content",
|
||||
permanent: true,
|
||||
},
|
||||
// {
|
||||
// source: "",
|
||||
// destination: "",
|
||||
// permanent: true,
|
||||
// },
|
||||
// since the filepaths are mostly the same, we otherwise just match on old URLs that end with .html
|
||||
{
|
||||
source: "/:path*.html",
|
||||
destination: "/:path*",
|
||||
permanent: false,
|
||||
},
|
||||
/*
|
||||
TODO
|
||||
/developers/examples/custom-services.html
|
||||
@@ -347,7 +463,6 @@ const config = {
|
||||
/developers/examples/browser-only.html
|
||||
/developers/examples/monorepo-examples.html
|
||||
/developers/integrations/payment-integration.html
|
||||
OPERATORS
|
||||
*/
|
||||
];
|
||||
},
|
||||
|
||||
@@ -10,7 +10,7 @@ Nym has two main codebases:
|
||||
- the [Nym platform](https://github.com/nymtech/nym), written in Rust. This contains all of our code _except_ for the validators.
|
||||
- the [Nym validators](https://github.com/nymtech/nyxd), written in Go.
|
||||
|
||||
> This page details how to build the main Nym platform code. **If you want to build and run a validator, [go here]() TODO LINK AFTER MERGE instead.**
|
||||
> This page details how to build the main Nym platform code. **If you want to build and run a validator, [go here](../operators/nodes/validator-setup) instead.**
|
||||
|
||||
## Prerequisites
|
||||
- Debian/Ubuntu: `pkg-config`, `build-essential`, `libssl-dev`, `curl`, `jq`, `git`
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# CLI Wallet
|
||||
|
||||
If you have already read our [validator setup and maintenance documentation]() TODO LINK AFTER MERGE you will have seen that we compile and use the `nyxd` binary primarily for our validators. This binary can however be used for many other tasks, such as creating and using keypairs for wallets, or automated setups that require the signing and broadcasting of transactions.
|
||||
If you have already read our [validator setup and maintenance documentation](../../operators/nodes/validator-setup) you will have seen that we compile and use the `nyxd` binary primarily for our validators. This binary can however be used for many other tasks, such as creating and using keypairs for wallets, or automated setups that require the signing and broadcasting of transactions.
|
||||
|
||||
### Using `nyxd` binary as a CLI wallet
|
||||
You can use the `nyxd` as a minimal CLI wallet if you want to set up an account (or multiple accounts). Just compile the binary as per the documentation, **stopping after** the [building your validator]() TODO LINK AFTER MERGE step is complete. You can then run `nyxd keys --help` to see how you can set up and store different keypairs with which to interact with the Nyx blockchain.
|
||||
You can use the `nyxd` as a minimal CLI wallet if you want to set up an account (or multiple accounts). Just compile the binary as per the documentation, **stopping after** the [building your validator](../../operators/nodes/validator-setup#building-your-validator) step is complete. You can then run `nyxd keys --help` to see how you can set up and store different keypairs with which to interact with the Nyx blockchain.
|
||||
|
||||
@@ -4,7 +4,7 @@ Use the following instructions to interact with the Nyx blockchain - either with
|
||||
|
||||
## Prerequisites
|
||||
* Download and install [Ledger Live](https://www.ledger.com/ledger-live).
|
||||
* Compile the `nyxd` binary as per the instructions [here]() TODO LINK AFTER MERGE. Stop after you can successfully run `nyxd` and get the helptext in your console output.
|
||||
* Compile the `nyxd` binary as per the instructions [here](../../operators/nodes/validator-setup). Stop after you can successfully run `nyxd` and get the helptext in your console output.
|
||||
|
||||
## Prepare your Ledger App
|
||||
* Plug in your Ledger device
|
||||
|
||||
@@ -4,6 +4,6 @@ RPC Nodes (which might otherwise be referred to as 'Lite Nodes' or just 'Full No
|
||||
|
||||
You may want to set up an RPC Node for querying the blockchain, or in order to have an endpoint that your app can use to send transactions.
|
||||
|
||||
In order to set up an RPC Node, simply follow the instructions to set up a [Validator]() TODO LINK AFTER MERGE, but **exclude the `nyxd tx staking create-validator` command**.
|
||||
In order to set up an RPC Node, simply follow the instructions to set up a [Validator](../../operators/nodes/validator-setup), but **exclude the `nyxd tx staking create-validator` command**.
|
||||
|
||||
If you want to fast-sync your node, check out the Polkachu snapshot and their other [resources](https://polkachu.com/seeds/nym).
|
||||
|
||||
@@ -31,7 +31,7 @@ There are several options available to developers wanting to embed a Nym client
|
||||
|
||||
</ >
|
||||
</Tabs.Tab>
|
||||
<Tabs.Tab> If your app is not written in any of the supported languages, you might still be able to send traffic through a standalone socks5 client TODO LINK but will have to think about packaging and bundling the client binary with e.g. a `systemd` file for autostart to run the client as a daemon. If you want to discuss FFI options reach out to us via our public dev channel. </Tabs.Tab>
|
||||
<Tabs.Tab> If your app is not written in any of the supported languages, you might still be able to send traffic through a standalone [socks5 client](./clients/socks5) but will have to think about packaging and bundling the client binary with e.g. a `systemd` file for autostart to run the client as a daemon. If you want to discuss FFI options reach out to us via our public dev channel. </Tabs.Tab>
|
||||
</Tabs>
|
||||
|
||||
### Interacting with Nyx
|
||||
|
||||
@@ -12,7 +12,7 @@ Although a large proportion of the Nym mixnet's functionality is implemented cli
|
||||
|
||||
As outlined on the previous page, the various types of Mixnet nodes - Mix Nodes, Gateways, and Network Requesters - are in the process of being compounded into a single `nym-node` binary which will run performing the features of all three nodes:
|
||||
- Acting as the first and last hops for traffic moving through the mixnet - a role fulfilled currently by Gateways.
|
||||
- (Once the payment system is turned on) checking client credentials to check for payment via the zk-nym TODO LINK protocol - a role fulfilled currently by Entry Gateways.
|
||||
- (Once the payment system is turned on) checking client credentials to check for payment via the [zk-nym scheme](../../cryptography/zk-nym) - a role fulfilled currently by Entry Gateways.
|
||||
- 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) - a role currently fulfilled by Mix Nodes.
|
||||
- Forwarding packets on to their final destination: the 'receiving' Nym client.
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import { Callout } from 'nextra/components'
|
||||
|
||||
If you want to interact with the chain please check the [interacting with Nyx](../../developers/chain) section of the developer docs.
|
||||
|
||||
If you want to run a Validator node, check the [Operator guides]() TODO LINK AFTER MERGE
|
||||
If you want to run a Validator node, check the [Operator guides](../../../operators/nodes/validator-setup).
|
||||
|
||||
</Callout>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"validator": "Validators",
|
||||
"nym-api": "(Coming soon) NymAPI",
|
||||
"nym-api": "Nym API",
|
||||
"smart-contracts": "Smart Contracts"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import { Callout } from 'nextra/components'
|
||||
|
||||
# Nym API
|
||||
|
||||
<Callout type="info" emoji="ℹ️">
|
||||
The Nym API setup and maintenance guide has moved to the [Operator Guides book](../../../operators/nodes/validator-setup/nym-api).
|
||||
</Callout>
|
||||
|
||||
The Nym API is a binary that will be operated by the Nyx validator set. This binary can be run in several different modes, and has two main bits of functionality:
|
||||
|
||||
* Network monitoring (calculating the routing score of Mixnet nodes)
|
||||
* Generation and validation of [zk-nyms](../../cryptography/zk-nym/zk-nym-overview), a combination of the Coconut Selective Disclosure Credential and Offline Ecash schemes.
|
||||
|
||||
This is important for both the proper decentralisation of the network uptime calculation and, more pressingly, enabling the NymVPN to utilise privacy preserving payments.
|
||||
@@ -3,7 +3,7 @@ import { Callout } from 'nextra/components'
|
||||
# Validators
|
||||
|
||||
<Callout type="info" emoji="ℹ️">
|
||||
The validator setup and maintenance guide has moved to the [Operator Guides book](../../../operators/introduction).
|
||||
The validator setup and maintenance guide has moved to the [Operator Guides book](../../../operators/nodes/validator-setup).
|
||||
</Callout>
|
||||
|
||||
Validators secure the Nyx blockchain via Proof of Stake consensus. The Nyx blockchain records the ledger of `NYM` transactions and executes the smart contracts for distributing `NYM` rewards. The Nyx validators are run via the `nyxd` binary ([codebase](https://github.com/nymtech/nyxd)), maintaining a CosmWasm- and IBC-enabled blockchain.
|
||||
|
||||
@@ -13,5 +13,3 @@ Some notable features:
|
||||
- Payloads are padded in order to remain a fixed length. This is pertinent as it means that nodes do not know which hop in the packet's route they are.
|
||||
|
||||
> You can find a detailed explanation of Sphinx packet construction and verification written by Elle Mouton [here](https://ellemouton.com/posts/sphinx/) (Sphinx is also used by the Lightning Network, amongst others).
|
||||
|
||||
TODO DIAGRAM
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"zk-nym-overview": "Overview",
|
||||
"zk-nym-overview": "Generate & Use Flow",
|
||||
"rerandomise": "Feature: Rerandomisation",
|
||||
"unlinkability": "Feature: Unlinkability",
|
||||
"double-spend-prot": "Feature: Double Spend Protection"
|
||||
|
||||
@@ -15,7 +15,7 @@ import { Callout } from 'nextra/components'
|
||||
|
||||
Generation of zk-nyms involves the following actors / pieces of infrastructure:
|
||||
- **Requester needing a zk-nym** for example a single user using the NymVPN app, or a company purchasing zk-nyms to distribute to their app users, in the instance of an app integrating a Mixnet client via one of the SDKs. The Requester is represented by a Bech32 address on the Nyx blockchain.
|
||||
- [NymAPI]() TODO LINK instances working together on signature generation and spent credential validation, referred to as the **NymAPI Quorum**. Members of the Quorum are a subset of the Nyx chain Validator set (other tasks they perform include a multisig used for triggering reward payouts to the Network Infrastructure Node Operators and maintaining the global Bloom Filter for double-spend protection).
|
||||
- [NymAPI](../../architecture/nyx/nym-api) instances working together on signature generation and spent credential validation, referred to as the **NymAPI Quorum**. Members of the Quorum are a subset of the Nyx chain Validator set (other tasks they perform include a multisig used for triggering reward payouts to the Network Infrastructure Node Operators and maintaining the global Bloom Filter for double-spend protection).
|
||||
- **OrderAPI**: an API creating crypto/fiat to `NYM` swaps and then depositing the NYM tokens in a smart contract managed by the NymAPI Quroum for payment verification. Implementation details of the API will be released in the coming months.
|
||||
|
||||
Generation happens in 3 distinct stages:
|
||||
|
||||
@@ -12,7 +12,4 @@ Which in practice, looks something like this:
|
||||
DguTcdkWWtDyUFLvQxRdcA8qZhardhE1ZXy1YCC7Zfmq.Dxreouj5RhQqMb3ZaAxgXFdGkmfbDKwk457FdeHGKmQQ@4kjgWmFU1tcGAZYRZR57yFuVAexjLbJ5M7jvo3X5Hkcf
|
||||
```
|
||||
|
||||
TODO flesh out
|
||||
Each key is a TODO KEY FORMAT
|
||||
ID keys are used for routing
|
||||
encryption keys are the public keypair used to decrypt the exterior layer of Sphinx packets addressed to the node/client.
|
||||
ID keys are used for routing, and encryption keys are the public keypair used to decrypt the exterior layer of Sphinx packets addressed to the node/client.
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
body {
|
||||
--colorPrimary: #fb6e4e;
|
||||
--textPrimary: #121726;
|
||||
/* padding: 5px 5px 10px;
|
||||
margin: 0 auto; */
|
||||
--colorPrimary: #fc8469;
|
||||
/* --textPrimary: #121726; */
|
||||
}
|
||||
|
||||
div.nextra-code-block > div {
|
||||
@@ -15,7 +13,7 @@ div.nextra-code-block > div {
|
||||
scroll-y: auto !important;
|
||||
}
|
||||
|
||||
/* whole div */
|
||||
/* set width entire div */
|
||||
.nx-mx-auto.nx-flex.nx-max-w-\[90rem\] {
|
||||
max-width: 110rem;
|
||||
padding: 0%;
|
||||
@@ -72,6 +70,7 @@ div.nextra-code-block > div {
|
||||
}
|
||||
|
||||
/* Callouts */
|
||||
/*
|
||||
.nextra-callout {
|
||||
background-color: #fb6e4e21 !important;
|
||||
}
|
||||
@@ -79,16 +78,21 @@ div.nextra-code-block > div {
|
||||
.nx-mt-6 .nx-leading-7 > p {
|
||||
color: var(--colorPrimary) !important;
|
||||
}
|
||||
*/
|
||||
|
||||
/* Callout Secondary */
|
||||
/*
|
||||
:is(html .dark\:nx-border-yellow-200\/30) {
|
||||
border-color: transparent !important;
|
||||
}
|
||||
*/
|
||||
|
||||
/* Callout Primary */
|
||||
/*
|
||||
:is(html .dark\:nx-border-blue-200\/30) {
|
||||
border-color: var(--colorPrimary) !important;
|
||||
}
|
||||
*/
|
||||
|
||||
/* Chips*/
|
||||
.chipContained {
|
||||
|
||||
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -2,8 +2,14 @@ import React from "react";
|
||||
import { DocsThemeConfig } from "nextra-theme-docs";
|
||||
import { Footer } from "./components/footer";
|
||||
import { Matrix } from "./components/matrix-link";
|
||||
import { useRouter } from "next/router";
|
||||
|
||||
const config: DocsThemeConfig = {
|
||||
useNextSeoProps() {
|
||||
return {
|
||||
titleTemplate: "%s – Nym Docs",
|
||||
};
|
||||
},
|
||||
logo: <span>Nym Docs</span>,
|
||||
project: {
|
||||
link: "https://github.com/nymtech/nym",
|
||||
@@ -23,14 +29,16 @@ const config: DocsThemeConfig = {
|
||||
},
|
||||
toc: {
|
||||
float: true, // TODO would be nice to set this to false so the TOC is in the left sidebar but this doesn't seem to work with pages that are also the top of directories: fix
|
||||
// if we do this then we also have to uncomment the editLink and feedback objects below
|
||||
},
|
||||
// gitTimestamp: TODO ,
|
||||
editLink: {
|
||||
component: null,
|
||||
},
|
||||
feedback: {
|
||||
content: null,
|
||||
},
|
||||
// editLink: {
|
||||
// component: null,
|
||||
// },
|
||||
// feedback: {
|
||||
// content: null,
|
||||
// },
|
||||
|
||||
// gitTimestamp: TODO
|
||||
};
|
||||
|
||||
export default config;
|
||||
|
||||
@@ -122,7 +122,8 @@ New Features
|
||||
- [ ] rust playground for clients + examples
|
||||
- [ ] network/arch/clients: breakdown of a client path from startup (startup, gateway connection, what keys what auth format etc, auth, message sending, poisson process)
|
||||
- [ ] network/concepts/mixing: diagram
|
||||
- [ ] network/crypto/sphinx: diagrams
|
||||
- [ ] network/crypto/sphinx: diagrams!
|
||||
- [ ] network/concepts/surbs: diagram
|
||||
- [x] network/traffic: diagram
|
||||
- [x] network/traffic/acks: diagram
|
||||
- [ ] network/clients: what are all the keys for
|
||||
|
||||