* initial crate * foomp * Make it work for x86_64-linux-android * remove unused stuff * Add header * another layer of hacks * additional target os locking * cleanup * bootstrap android app * android jni function * instructions + xcode project * update jni name * add native socks5 class * typo * gitkeep android native lib path * add native socks5 class * add socks5 native lib in java * add build script * fix jni dependency declaration * wip * Update build.sh * Move build.sh to new subdir * rename to build-android.sh * fix typo in FFI function name * use a good SP * wip not crashing state * add android network permissions * android_logging * starting client on button in swift + safer ffi * set tag for libnyms5 logs * testing callbacks * android: start socks5 process in a separated thread * non-blocking client with callbacks * Remove the old non-working logger * Restore commented out functionality in socks5 client * basic file write/load + possible android fix * Fully working state (minus task manager) * Remove unused function * data persistence + cb with address * Remove stray old MyClass file from the merge * Make storage_dir and Option * Fix char_p for android * Android now works with the new branch * Tidy up a little in the jni code * Move android mod to seperate file * jni wrap start/stop * Add android build to Makefile * android: add basic UI and start/stop actions * typo * add nym word * dirty persistence restored * dirty android fixes * even dirtier workaround * Move rust crate to sdk/lib * Update cargo.toml * Strip release binary * Update lib name in android project * Move ios project to nym-connect directory * remove old gitignore file * Move ios client one step deeper * fixed xcode lib paths * removed old tracked file * move android app under new path * a bit of cleanup * hopefully fixing the CI issues (🤞) * Update Makefile * android: add better support for persistent state * updating ios UI on ffi callbacks * missing dead code * Added toggle button (wip) * swapped connect and disconnect methods around * icon * fixed android build * reset button + reuse service provider * disabling reset button * android: run proxy in a worker as foreground service * todo user cancel action * android build script: add aarch64 * add stop action from notification * add simple callbacks to the socks5 bridge * pick a sp randomly * pass stop cb to lib call * add loading state support * refactor(android): base connection state on callback calls * android: add optimistic ui * android: unique instance of libnym * removing deadcode --------- Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com> Co-authored-by: pierre <dommerc.pierre@gmail.com> Co-authored-by: Mark Sinclair <mmsinclair@users.noreply.github.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, 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 framework.
Building
Platform build instructions are available on our docs site. Wallet build instructions are also 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.
For Typescript components, please see ts-packages.
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:
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.