* Generic prom wrapper idea
* Extend packet_statistics control with prom metrics
* Replace counters with Counters
* Add legacy mixnode api route
* fmt
* Sanitize metric names
* Format metrics
* Script to make prom targets
* More metrics
* Update script
* Make sure we dont panic in the future
* Remove fragile test
* Add metrics endpoint auth
* Remove per IP metrics
* Update target script, node_exporter setup
* Remove prom from client
* Simplify node stat
* Centralize metrice, break cpucycles temporarily
* Remove prometheus from mixnode
* Add cpu-cycles to Prom
* Further centralize Registry
* Cleanup old tracing
* Remove spurious assignment
* Move cpu-cycles to metrics
* Add features
* setup_logging before logging
* Remove cpucycle measurement in favour of time
* Cleanup, hygine
* Change mixnode, gateway, network and nym-api binary licenses to GPLv3
* Add license to cargo files
* Revert model license to match crate
* Add license to nym-node
* Revert model license to match crate
* Fix formatting
---------
Co-authored-by: Mark Sinclair <mmsinclair@users.noreply.github.com>
* changed NymConfigTemplate trait to call 'template' by reference
* network requester lib
* introduced generic parameter to 'MixTrafficController' to allow non-remote gateways
* allowing for custom gateway sender
* types cleanup
* minor gateway cmds refactor + initial NR work
* wip
* running a NR inside gateway
note: this NR isnt tied to the gateway yet
* rebase fixes
* propagating same shutdown handle
* wip
* starting NR with appropriate local transceiver
* fixed premature shutdown
* wiring up PacketRouter
* both ends wired together
* actually working
so much cleanup to do now
* started removing dead code
* wip
* temp: hardcode gateway
* further cleanup
* fixed build of other binaries
* setup-network-requester subcmd
* overriding NR config in gateway init/run
* wip making it wasm-compatible [again]
* refactored 'GatewaySetup'
* clippy and friends
* removed debug code
* rust 1.72 lints
* ensuring local gateway is available + some comments
* correctly putting network requester data in the same underlying details struct
* improved gateway errors
* changed 'network_requester_config' deserialization
* missing clap annotation for 'enabled' flag in 'setup-network-requester' command
* saving config file after 'setup-network-requester'
* removed dead code
* review comments
* make embedded NR wait for gateway to come online (for at most 70min)
* fixed shutdown on successful gateway wait
* updated NR config override
* Setting default 'id' if not provided
* Modified 'NymConfig' to always require 'id'
* moved creation of nym-api directories away from 'override_config'
* missing optional id usage in nym-connect
* changelog
* Removed default value for '--id' argument
* Renaming all instances of nymd to nyxd
* Might as well get the changelogs too
* Making it clearer that an ApiClient is a NymApiClient
* Lining up config templates with struct keys on gateway
* Changed the last references to validator_urls to nyxd_urls
* Fixed up a few type errors after refactoring
* Changed the changelog
* Fixed typo in changelog
* Further instances of renaming 'nymd' + introducing additional clap aliases
* updated environmental variables and allowed usage of deprecated variants
* missing occurences of coconut-locked environmental variables
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* fixed all uses of deprecated clap methods
* updated all uses of clap to 4.0
* unified obtaining build information
* moved around the imports
* Moved all nym-api arguments to ApiArgs and simplified parsing
* Using common shutdown signal code
* Using clap for parsing Vec<Url>
* stricter validation of socks5-client arguments
* ibid for the native client
* ibid for the gateway
* ibid for the mixnode
* clippy
* Renaming validator-api to nym-api
* nym-api: simplified crate name
* Added nym-api rename to changelog
* Changed some output messages
* Renamed validator-api-requests to nym-api requests
* Removing more references to validator-api-requests
* Additional lockfile name changes after full build
* Removing mistakenly added merge files
* ibid
* ibid
* Getting rid of ref to validator_api deep inside validator-client
* Fixing file storage paths
* Renaming struct function names referring to validator_api
* Simplifying struct init
* Fixed up all other instances of nym_api.
* Renaming validatorApi to nymApi in TypeScript client for consistency
v
* Found a few more Rust instances
* Changed examples in TypeScript SDK
* Found one more instance of the use of validator instead of nym apis
* Aliasing config key name for deserialization to preserve compatibility with old configs
* Clients use env
* Explorer api uses env
* Mainnet and qa env files
* Set CONFIGURED on the mainnet defaulting
* Gateway uses env
* Mixnode uses env
* Wallet error simplification
* Network requester takes only mainnet client address
* Validator api uses env
* Mixnet contract uses denom from instantiate
* Vesting contract uses denom from instantiate
* More contract test refactoring
* Coconut bandwidth contract uses denom from instantiate
* Bandwidth claim contract uses denom from instantiate and remove from Cargos
* More remove from Cargos and one missed DEFAULT_NETWORK
* Refactor some other missed places
* Minor fixes
* Test and clippy fixes
* Update CHANGELOG
* mixnode: make command modules private
* mixnode: make some node modules private
* mixnode: make config structs private
* mixnode: restore accidentally moved function
* Add a --wallet-adress parameter to init
* Rearranging signing code locations
* A bit more refactoring
* ibid
* Exiting if the stored bech32 address isn't valid at node start
* A few docs comments
* Moved crypto crate up to root src level
* Friendlier startup messages for node verification code
* Switching punk and nymt addresses in test
* Calculating gas fees
* Ability to set custom fees
* Added extra test
* Removed commented code
* Moved all msg types to common contract crate
* Temporarily disabling get_tx method
* Finishing up nymd client API
* Comment fix
* Remaining fee values
* Some cleanup
* Removed needless borrow
* Fixed imports in contract tests
* Moved error types around
* New ValidatorClient
* Experiment with new type of defaults
* Removed dead module
* Dealt with unwrap
* Migrated mixnode to use new validator client
* Migrated gateway to use new validator client
* Mixnode and gateway adjustments
* More exported defaults
* Clients using new validator client
* Fixed mixnode upgrade
* Moved default values to a new crate
* Changed behaviour of validator client features
* Migrated basic functions of validator api
* Updated config + fixed startup
* Fixed wasm client build
* Integration with the explorer api
* Removed tokio dev dependency
* Needless borrow
* Fixex wasm client build
* Fixed tauri client build
* Needless borrows
* Fixed client upgrade print
* Removed redundant comments
* Made note on aggregated verification key into a doc comment
* Removed mixnet contract references from verloc
* Modified default validators structure
* Reformatted validator-api Cargo.toml file
* Removed commented code
* Made the doc comment example a no-run
* Fixed a upgrade print... again
* Adjusted the doc example
* Removed unused import
* Put endpoints and contract address in one place
* Put common ports in one place
* Split cache version from route
* Share validator-api port value between server and client
* Put BECH32 prefix in defaults
* Put DENOM in defaults
* Put network monitor address in defaults
* Fix clippy
* Fix another clippy + tests import of DENOM
* Modified NymConfig trait to make id optional
* Basic validator-api config definition
* Optionally using the config during startup + flag to enable monitoring
* 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>
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>
* 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
* Idea for stats endpoint
* Introduced /stats endpoint replacing sending data to metrics server
* Removed metrics client
* Removed old metrics file
* cargo fmt
* 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
* 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
* 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>
* 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
* 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