* Upgraded code to be cosmwasm 1.0-beta.2 compatible (#923) * Upgraded code to be cosmwasm 1.0-beta.2 compatible * [ci skip] Generate TS types Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com> * Feature/cosmwasm plus storage (#924) * Upgraded code to be cosmwasm 1.0-beta.2 compatible * Added cw-storage-plus dependency * Experimentally replaced storage for config and layers with cw plus Item * The same for main mixnode storage * Usingn IndexedMap for mixnodes * Split delegations from mixnodes into separate module * MixnodeIndex on Addr directly * Moved namespace values to constants * Outdated comment * [ci skip] Generate TS types * Removed redundant identity index on mixnodes * IndexMap for gateways storage * Moved total delegation into a Map * Compiling contract code after delegation storage upgrades Tests dont compile yet and neither, I would assume, the client code * Delegation type cleanup * Client fixes * Migrated delegation tests + fixed them * Moved Rewarding Status to rewards * Reward pool * Rewarding status migrated * Made clippy happier * Added explorer API to default workspace members * Updated delegation types in explorer-api * Fixed tauri wallet Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com> * Vesting contract (#900) * Initial interface spec * .gitignore * Finalize implementation * Correct assumptions, use wasm_execute * Cleanup * Track delegation balance * Add delegation flow img * Proper messaging from the vesting side * Add proxy_address to RawDelegationData * Wrap up (un)delegation * Add proxy: Addr to MixNodeBond * Stub in bonding/unbonding * Migrate vesting to cosmwasm 1.0 * Rebase on top of 1.0.0-pre1 * Reimplement delegations tracking with a Map * Migrate to cw-storage-plus * Restructure code, add tests * Streamline contract code, as per review * Address review comments * Pre-merge rebase * Few more nits * Few more nits * Fix test * cargo fmt * Fix beta CI Co-authored-by: Drazen Urch <durch@users.noreply.guthub.com> Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com> Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com> Co-authored-by: Drazen Urch <durch@users.noreply.guthub.com>
The Nym Privacy Platform
The platform is composed of multiple Rust crates. Top-level executable binary crates include:
- nym-mixnode - shuffles 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, removing the need for directly 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 (currently in development)- a desktop wallet implemented using the Tauri framework.
Building
Platform build instructions are available on our docs site.
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.
Developer chat
You can chat to us in Keybase. Download their chat app, then click Teams -> Join a team. Type nymtech.friends into the team name and hit continue. For general chat, hang out in the #general channel. Our development takes places in the #dev channel. Node operators should be in the #node-operators channel.
Rewards
Node, node operator and delegator rewards are determined according to the principles laid out in the section 6 of Nym Whitepaper. 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.
Node reward for node i is determined as:
where:
and
Operator of node i is credited with the following amount:
Delegate with stake s recieves:
where s' is stake s scaled over total token circulating supply.
Licensing and copyright information
This program is available as open source under the terms of the Apache 2.0 license. However, some elements are being licensed under CC0-1.0 and MIT. For accurate information, please check individual files.