diff --git a/README.md b/README.md index c75bcc7c3e..9f0e97d181 100644 --- a/README.md +++ b/README.md @@ -7,86 +7,66 @@ SPDX-License-Identifier: Apache-2.0 The platform is composed of multiple Rust crates. Top-level executable binary crates include: -* nym-mixnode - shuffles [Sphinx](https://github.com/nymtech/sphinx) packets together to provide privacy against network-level attackers. -* nym-client - an executable which you can build into your own applications. Use it for interacting with Nym nodes. -* nym-socks5-client - a Socks5 proxy you can run on your machine and use with existing applications. -* nym-gateway - acts sort of like a mailbox for mixnet messages, which removes the need for direct delivery to potentially offline or firewalled devices. -* nym-network-monitor - sends packets through the full system to check that they are working as expected, and stores node uptime histories as the basis of a rewards system ("mixmining" or "proof-of-mixing"). -* nym-explorer - a (projected) block explorer and (existing) mixnet viewer. -* nym-wallet - a desktop wallet implemented using the [Tauri](https://tauri.studio/en/docs/about/intro) framework. +* `nym-node` - a tool for running a node within the Nym network. Nym Nodes containing functionality such as `mixnode`, `entry-gateway` and `exit-gateway` are fundamental components of Nym Mixnet architecture. Nym Nodes are ran by decentralised node operators. Read more about `nym-node` in [Operators Guide documentation](https://nymtech.net/operators/nodes/nym-node.html). Network functionality of `nym-node` (labeled with `--mode` flag) can be: + - `mixnode` - shuffles [Sphinx](https://github.com/nymtech/sphinx) packets together to provide privacy against network-level attackers. + - `gateway` - acts sort of like a mailbox for mixnet messages, which removes the need for direct delivery to potentially offline or firewalled devices. Gateways can be further categorized as `entry-gateway` and `exit-gateway`. The latter has an extra embedded IP packet router and Network requester to route data to the internet. +* `nym-client` - an executable which you can build into your own applications. Use it for interacting with Nym nodes. +* `nym-socks5-client` - a Socks5 proxy you can run on your machine and use with existing applications. +* `nym-explorer` - a (projected) block explorer and (existing) mixnet viewer. +* `nym-wallet` - a desktop wallet implemented using the [Tauri](https://tauri.studio/en/docs/about/intro) framework. + + +```ascii + ┌─►mix──┐ mix mix + │ │ + Entry │ │ Exit +client ───► Gateway ──┘ mix │ mix ┌─►mix ───► Gateway ───► internet + │ │ + │ │ + mix └─►mix──┘ mix + +``` [![Build Status](https://img.shields.io/github/actions/workflow/status/nymtech/nym/build.yml?branch=develop&style=for-the-badge&logo=github-actions)](https://github.com/nymtech/nym/actions?query=branch%3Adevelop) ### Building -Platform build instructions are available on [our docs site](https://nymtech.net/docs/binaries/pre-built-binaries.html). -Wallet build instructions are also available on [our docs site](https://nymtech.net/docs/wallet/desktop-wallet.html). +* Platform build instructions are available on Nym [Operators Guide documentation](https://nymtech.net/operators/binaries/building-nym.html). +* Wallet build instructions are available on Nym [Technical docs](https://nymtech.net/docs/wallet/desktop-wallet.html). ### Developing -There's a `.env.sample-dev` file provided which you can rename to `.env` if you want convenient logging, backtrace, or other environment variables pre-set. The `.env` file is ignored so you don't need to worry about checking it in. +There's a [`sandbox.env`](https://github.com/nymtech/nym/envs/sandbox.env) file provided which you can rename to `.env` if you want convenient testing environment. Read more about sandbox environment in our [Operators Guide page](https://nymtech.net/operators/sandbox.html). -For Typescript components, please see [ts-packages](./ts-packages). +References for developers: + +* [Developers Portal](https://nymtech.net/developers) +* [Typescript SDKs](https://sdk.nymtech.net/) +* [Technical Documentation - Nym network overview](https://nymtech.net/docs/) +* [Release Cycle - git flow](https://nymtech.net/operators/release-cycle.html) ### Developer chat -> We used to use Keybase for developer chats, but we have since migrated to Matrix and Discord. We no longer check the old **nymtech.friends** Keybase team. - You can chat to us in two places: * The #dev channel on [Matrix](https://matrix.to/#/#dev:nymtech.chat) -* The various developer channels on [Discord](https://discord.gg/nym) +* The various developer channels on [Discord](discord.gg/nymproject) -### Rewards +### Tokenomics & Rewards -Node, node operator and delegator rewards are determined according to the principles laid out in the section 6 of [Nym Whitepaper](https://nymtech.net/nym-whitepaper.pdf). Below is a TLDR of the variables and formulas involved in calculating the epoch rewards. Initial reward pool is set to 250 million Nym, making the circulating supply 750 million Nym. - -|Symbol|Definition| -|---|---| -||global share of rewards available, starts at 2% of the reward pool. -||node reward for mixnode `i`. -||ratio of total node stake (node bond + all delegations) to the token circulating supply. -||ratio of stake operator has pledged to their node to the token circulating supply. -||fraction of total effort undertaken by node `i`, set to `1/k`. -||number of nodes stakeholders are incentivised to create, set by the validators, a matter of governance. Currently determined by the `reward set` size, and set to 720 in testnet Sandbox. -||A Sybil attack resistance parameter - the higher this parameter is set, the stronger the reduction in competitiveness for a Sybil attacker. -||declared profit margin of operator `i`, defaults to 10%. -||uptime of node `i`, scaled to 0 - 1, for the rewarding epoch -||cost of operating node `i` for the duration of the rewarding epoch, set to 40 NYMs. - -Node reward for node `i` is determined as: - - - -where: - - - - -and - - - - -Operator of node `i` is credited with the following amount: - - - - -Delegate with stake `s` receives: - - - - -where `s'` is stake `s` scaled over total token circulating supply. +Nym network economic incentives, operator and validator rewards, and scalability of the network are determined according to the principles laid out in the section 6 of [Nym Whitepaper](https://nymtech.net/nym-whitepaper.pdf). +Initial reward pool is set to 250 million Nym, making the circulating supply 750 million Nym. ### Licensing and copyright information This is a monorepo and components that make up Nym as a system are licensed individually, so for accurate information, please check individual files. As a general approach, licensing is as follows this pattern: + - applications and binaries are GPLv3 - libraries and components are Apache 2.0 or MIT - documentation is Apache 2.0 or CC0-1.0 -Again, for accurate information, please check individual files. +Nym Node Operators and Validators Temrs and Conditions can be found [here](https://nymtech.net/terms-and-conditions/operators/v1.0.0).