Commit Graph

224 Commits

Author SHA1 Message Date
Drazen Urch 4a86b24ff5 Use rocket 0.5-rc1, remove rocket-contrib (#672)
* Use rocket 0.5-rc1, remove rocket-contrib

* Revert thread_rng

* Continue on error for beta as well

* Add Drazen to authors

* Remain paranoid for unstable crates

* fmt again :/

* Most paranoid versions
2021-07-05 18:07:18 +02:00
Jędrzej Stuczyński 8f98de4abc Feature/validator api config (#671)
* Modified NymConfig trait to make id optional

* Basic validator-api config definition

* Optionally using the config during startup + flag to enable monitoring
2021-07-05 13:48:55 +02:00
Drazen Urch 3aafe54887 Remove mut where possible, parallel cache requests (#668) 2021-07-02 10:50:49 +02:00
Bogdan-Ștefan Neacşu 57df77a995 Layer selection (#664)
* mixnode: Remove layer computation from mixnode

The layer is currently computed locally. This should be moved to
the validator, and the mixnode should find this information via
a query. Until the query is actually processed, we keep the layer
field as None.

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* contracts: Compute layer of bonding mixnode

Predictably compute the best layer of a bonding mixnode by putting it on
the layer with the fewest mixnodes and, in case of equality, with the
smallest index e.g. layer 1 is better then layer 3 if both have
the fewest mixnodes.

The layer received from the client app is regarded as a preferred option
and is only accepted if the number of nodes on the preferred layer is not
bigger then the one on the best layer.

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* contracts: Add tests for layer selection

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* mixnode: Upgrade from 0.10.2 to 0.10.3

The config file is changed so that it's only containing the layer if
the layer exists.

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* contracts: Move the layer from MixNode to MixNodeBond

Remove the option of a client app to propose a preferred
layer.

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* contracts: Move from u64 to Layer representation

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* contracts: Remove Layer::Invalid as it no longer makes sense...

... because layer choice is now present only in the contract.

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* contracts: Move layer selection algorithm in `choose_with_fewest` method

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* mixnode: Remove layer altogether

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* mixnode: Refactor upgrading system

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* mixnode: Remove layer from template as well

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>

* Remove invalid field from LayerDistribution

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
2021-07-01 17:56:57 +03:00
Bogdan-Ștefan Neacşu bb0257ccc6 Merge pull request #656 from nymtech/feature/configurable-verloc-http-ports
Feature/configurable verloc http ports
2021-06-28 14:52:54 +03:00
Bogdan-Ștefan Neacșu 12ddf80fe9 Applied feedback:
- Use concrete location for example
- Removed `Location` from displayed information
- Replace tuple with a type alias
- Commit description to disk once the upgrade is finalized
- Other minor changes

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
2021-06-25 14:21:48 +03:00
Bogdan-Ștefan Neacșu 34fcca052b mixnode: Fix clippy warning
This fixes the warning caused by `clippy::field-reassign-with-default`

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
2021-06-25 14:20:21 +03:00
Bogdan-Ștefan Neacșu e06e7aa8f3 mixnode: Add tests for upgrade to 10.0.2
Add a positive and a negative unit test for upgrading to 10.0.2.

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
2021-06-25 14:20:21 +03:00
Bogdan-Ștefan Neacșu 4d701be053 mixnode: Add location to describe command
Removed location from the init output and added it as input in the
describe command.

Because this creates a different format of the description file, the
patch version number must also be increased.

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
2021-06-25 14:20:20 +03:00
Bogdan-Ștefan Neacșu 3bf02c558c mixnode: Refactor upgrade functions
Renaming the function to have a clear separation between different
parts of the version, especially for future patch upgrade functions.

Also switch to a Result return value for these functions, to gather
all the
```
eprintln!
print_failed_upgrade
exit(1)
```
calls in one place.

Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
2021-06-25 14:13:21 +03:00
Jędrzej Stuczyński b7f197d278 Feature/host ip split (#654)
* Updated smart contract to work with future cosmwasm 0.14.0 update

* Updated the rest of the codebase

* Reordered imports

* Missing imports

* cargo fmt

* More cargo fmt action

* Introduced type alias for IdentityKey reference

* Constant defined arguments for gateway and mixnode

* Spliting host into explicit address and port(s)

* Using more type restrictive IpAddr rather than String for listening address

* Updated config templates

* Tentative upgrade commands, probably to be further changed before release

* Fixed mixnet contract test fixtures

* Further missing test adjustments
2021-06-25 10:33:12 +01:00
Jędrzej Stuczyński f0fafe97fe Using verloc with custom ports 2021-06-23 16:08:48 +01:00
Jędrzej Stuczyński 035a2554ee Configurable http api port 2021-06-23 15:49:38 +01:00
Jędrzej Stuczyński 4c8f8ff1b6 Renamed 'rtt_measurement' to verloc to avoid confusion 2021-06-23 15:38:52 +01:00
Jędrzej Stuczyński 35cddab3bd Introduced cli arguments for verloc and http ports 2021-06-23 15:33:57 +01:00
Jędrzej Stuczyński 0a5f6f2ca7 Added verloc and http port fields to config 2021-06-23 15:25:23 +01:00
Jędrzej Stuczyński 1d4026ec71 Tentative upgrade commands, probably to be further changed before release 2021-06-23 12:26:06 +01:00
Jędrzej Stuczyński 6524fa3f9c Updated config templates 2021-06-23 12:25:40 +01:00
Jędrzej Stuczyński 6e24b2681b Using more type restrictive IpAddr rather than String for listening address 2021-06-23 12:25:29 +01:00
Jędrzej Stuczyński a6be3e763f Spliting host into explicit address and port(s) 2021-06-22 16:39:07 +01:00
Jędrzej Stuczyński 29ac119127 Constant defined arguments for gateway and mixnode 2021-06-22 16:38:14 +01:00
Jędrzej Stuczyński 29fd8b8805 Chore/clippy nightly fixes (#636)
* Removed needless borrow in upgrade args matches

* Pathfinder needless borrows

* cmp needless borrow

* Network monitor needless borrows

* Topology control needless borrows

* Received buffer needless borrow

* Key manager needless borrows

* Network requester needless borrow

* Gateway client needless borrow

* Gateway requests needless borrow

* Nymsphinx needless borrows

* verloc needless borrows

* Socks5 needless borrow

* Clone on copy type
2021-06-07 14:52:11 +01:00
Jędrzej Stuczyński 82def1349f Feature/stats endpoint (#631)
* Idea for stats endpoint

* Introduced /stats endpoint replacing sending data to metrics server

* Removed metrics client

* Removed old metrics file

* cargo fmt
2021-06-07 12:01:43 +01:00
Jędrzej Stuczyński 50f65aa698 Feature/per layer count (#628)
* Initial struct

* WIP

* Added test for migration

* unused import
2021-06-07 11:59:33 +01:00
Jędrzej Stuczyński 93e9dc5c1e Bugfix/verloc fixes and adjustments (#618)
* Using new display trait for identity key

* Establishing verloc connection with timeout

* Further decrease in log severity

* Writing echo packets with timeout

* Sender formatting

* ConnectionWriteTimeout error definition

* Writing verloc results in chunks

* Added run started and run finished fields to verloc

* Reordered the fields

* Storing the timestamps as options to indicate run in progress
2021-06-02 12:50:36 +01:00
Jędrzej Stuczyński d9087bf2a9 Upgrade commands 2021-05-24 11:52:31 +01:00
Jędrzej Stuczyński abc5a58b19 Version bumps 2021-05-24 11:15:59 +01:00
Jędrzej Stuczyński a47bbf1e67 Disabled metrics reporting to the central server (#609) 2021-05-20 09:09:52 +01:00
Dave Hrycyszyn 190d3c4972 Feature/add node description api (#605)
* Starting to build out node descriptions

* Renamed the mod to node_description instead of descriptor

* Returning results loaded from file

* Taking user input for node describe command

* Readline without new dependencies

* Adding input format hint

* Making sure the node can still start even when the descriptor file isn't there yet

* Adding some additional runtime checks

* Removing -dev from minimum node version

* Removing initial :: on serde

* Fixing comment on the /description endpoint

* Swapped json for toml

* Being a bit more specific with my startup message.

* Cleaning up path building

* Nicer runtime checks

* Put path building inside the file methods
2021-05-19 14:25:11 +01:00
Jędrzej Stuczyński ea62d01e65 Feature/updated network monitor (#604)
* Connecting to gateway with a timeout

* Added address value to InvalidAddress error

* Initial updated network monitor (does not submit results yet)

* Created client for node status api

* Changed default address to the local one

* Removed old validator client

* Renamed validator client rest to validator client

* Print conversion warnings using Display rather than Debug formattingn

* WIP for adding owner field in monitor

* Preserving changes before branch switch

* Keeping track of node owners during monitoring + using those for node status api

* Removed temporary log statement

* Dont notify node status api if good nodes are broken

* Changed default monitor interval to 5min

* Post merge issues

* Allowing dead version field in seocksrequest

* Updated monitor run interval to 15min

* Reporting gateways and mixnodes separately with the new api

* Unused imports

* Decreased testing interval to temporarily bypass the silent timeout issue

* Formattingn
2021-05-18 17:33:31 +01:00
Jędrzej Stuczyński a8299e867d Feature/ping timings (#603)
* WIP

* WIP for time measurement

* In theory working sender and listener

* Further additions + main.rs for local testing

* Further improvements + config builder

* Initial integration into mixnode

* Verifying mixnode version

* 1.52+ clipy warning

* 1.54 nightly clippy fixes

* Changed HTTP Api to bind to the same ip as used for mix packets

* Changed measurements to instead write to shared object

* Required dependencies

* Connecting with the http api

* Updated mixnode common rand dependency
2021-05-12 11:20:03 -04:00
Dave Hrycyszyn 7dc4d653c2 Feature/add rocket (#600)
* Added rocket at a git tag

* Adding Rocket to the mixnode

* Verloc route now in place

* Adding an http api startup notification

* Updated version number to 0.10.1-dev

* Fixing clippy warnings

* Compressing split a bit

* Adjusted used version of js-sys

Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
2021-05-11 17:40:29 +01:00
Jędrzej Stuczyński a521bc0f54 Logging adjustment (#585)
* Reduced severity of common harmless warnings

* Changed the same ip node warning

* More explicit error on network address binding failure
2021-04-28 09:11:04 -04:00
Jędrzej Stuczyński e8e966b67a Feature/multiple validator endpoints (#583)
* Rust half done

* Removed the temporary 'test'

* Using multiple validator endpoints in the javascript client

* Dont attempt any switches with a single validator endpoint

* Removed the unused temporary function

* Updated validator-client version
2021-04-23 16:41:39 +01:00
Jędrzej Stuczyński 4e339f1788 Fixed nightly clippy warnings (#572)
* Fixed nightly clippy warnings

* Using string literal in panic message
2021-04-14 16:41:47 +01:00
Jędrzej Stuczyński dca9c7079c Merge branch 'develop' of github.com:nymtech/nym into develop 2021-04-14 11:42:23 +01:00
Jędrzej Stuczyński 52a8909e77 Updated default mixnet contract address 2021-04-14 11:42:05 +01:00
Dave Hrycyszyn 9d2c445bb7 Adding the wallet url in startup instructions (#569) 2021-04-13 14:13:13 +01:00
Dave Hrycyszyn 6a1c2fa5dd Feature/cli signing (#566)
* Adding hex output and coloured terminal output crates

* Adding a `sign` command to the mixnode

* IntelliJ's non-use of rustftm is non-IntelliJent. Whitespace commit.

* Removing hex, using base58 everywhere.
2021-04-12 11:11:20 +01:00
Jędrzej Stuczyński 800af218a5 Updated default validator url and contract address (#557) 2021-04-06 13:22:30 +01:00
Jędrzej Stuczyński 4a908e7e14 Feature/bonding info on init (#555)
* Mixnode bonding info on init

* Gateway bonding info on init
2021-04-01 12:08:16 +01:00
Jędrzej Stuczyński 2be0ab6474 Feature/upgrade update (#551)
* Native client upgrade command capable of upgrading to 0.10.0

* Ibid for the socks5 client

* Mixnode upgrade command for 0.10.0

* Fixed clippy warnings

* Gateway upgrade command for 0.10.0

* Removed unused import
2021-04-01 12:08:16 +01:00
Jędrzej Stuczyński 596bc76cc6 Chore/dependency updates (#549)
* Updated all non-breaking dependencies

* Updated common/crypto dependencies

* Updated all tokio [and associated] dependencies to most recent version

* Bumped version of rand_distr

* Fixed api changes in tests

* Made clippy happier about the acronym

* Fixed the type while trying to make clippy even happier

* nightly cargo fmt
2021-03-29 15:32:34 +01:00
Jędrzej Stuczyński 9e0bb80163 Feature/topology conversion (#536)
* Removed reputation field from existing topology

* ibid for registration time

* Basic bond to topology conversion

* Made existing tests compilable

* Added owner and stake fields to mix and gateway topology entries

* Moved node conversion to topology crate

* Added mixnet contract field to clients configs

* topology refresher trying to use new validator

* Removed clients depepdency on the old validator client

* Removed mixnode dependency on the old validator client

* Removed gateway dependency on the old validator client

* Removed location field fron mixnode and gateway configs

* Removed incentives address from mixnodes and gateways

* Cargo.lock changes

* Ignoring clippy warnings originating from codegen from JsonSchema

* no longer formating string with a literal
2021-03-24 10:52:27 +00:00
Jędrzej Stuczyński 2e7cd451ec Feature/mix contract identity key (#533)
* Added identity_key field to mixnodes

* Printing out required bond information on mixnode startup
2021-03-18 15:05:32 +00:00
Jędrzej Stuczyński 6f8ae53f0c Feature/socks5 adjustments (#510)
* Increased default connection buffer size to help with packet bursts

* Informing remote about failure to establish connection

* Properly closing outbound proxy on failure to read from socket

* Split proxy runner into separate inbound and outbound files

* Flag indicating whether socks client actually started proxying

* Clearing stale proxies if other side is closed

* Decreased log level on not a warning

* Closing proxy if no messages were received in a while

* Dont print harmless false-positive errors

* Formatting + future notes

* Fixed packet delay in higher volume traffic

* Don't attempt writing empty messages to connection
2021-02-01 14:45:50 +00:00
Dave d03af9de05 Merge branch 'develop' of https://github.com/lnceballosz/nym into lnceballosz-develop 2021-01-29 10:28:47 +00:00
Jędrzej Stuczyński 4013d0c939 Checking if the delay has already expired before attempting to put it in delay queue (#508) 2021-01-29 10:18:24 +00:00
Jędrzej Stuczyński c67e0fee37 More human-readable errors on mixnode/gateway startup (#503)
* More human-readable errors on mixnode/gateway startup

* Missing dots

* Fixed comment moved to incorrect line during formatting
2021-01-29 10:16:38 +00:00
Jędrzej Stuczyński 2d3b4f4b91 Feature/GitHub actions and clippy cleanup (#493)
* Added github actions templates

* removed travis .yml file

* initial clippy cleanup pass

* fixed the rest of clippy warnings

* Made github badges more fancy and consistent with the ones in sphinx

* Updated local rustc version and removed compilation warningns

* ... and fresh clippy warnings

* formatting

* beta clippy specific warnings fixed

* Fixed all nightly clippy warnings

* Fixed trying to unwrap a ()

* Actually running all tests

* Correctly passing the --all flag

* Hopefullly third time's a charm in fixing argument passing
2021-01-18 11:50:29 +00:00