* Add placeholder client for implementing coconut interactions
* Add db for persistance
* Add nymd client
* Add new coconut-bandwidth contract
* Call deposit function
* Introduce error handling
* Call the old flow of getting a signature
* List available tx hashes
* Add signed req in body
* Save signature received
* Add event generation
* Checks in validator-api
* Fail with error instead of panic in validator-api route
* Fix contract address and small bug
* Add file db for storing previous signatures
* Encrypt and store data in validator-api
* Decrypt the received signature
* Remove tx hashes after getting credentials
* Small listing changes in client
* Change response so that it easier to serialize
* Error message is sent to client for display
* Remove already signed error and return the previous sig
* Merge signature with deposit data in client
* Entrypoint for getting the encrypted signature
* Refactor blinding stuff so that it can be backed up
* Backed up the blind sign request
* Client can re-request the encrypted signature shares
* Update crypto features
* Fix clippy
* Activate instantiate test and remove unused code
* Add tx tests
* Add verification key endpoint test
* Voucher consistency test
* Test for some errors and a race condition on blind signing
* Refactor and add client trait for enabling better testing env
* Test some more of blind sign
* Finished testing all extract_encryption_key paths
* Split into function test and endpoint test
* Test for correct signature
* Test for state functions
* Remove print
* Test blind_sign endpoint
* Test for cached signature endpoint
* Stricter types in voucher
* Rename signature with partial_bandwidth_credential
* Extra route levels
* Length check and remove some unused code from coconut interface
* Renamed coconut-bandwidth common crate
* Renamed verification_key to identity_key
* Use const instead of hardcoded values
* Use type aliases for crypto algorithms
* Remove unused mods, until needed
* Remove unneeded unwrap
* Fix some coconut issues that were blocking the wasm client build
* Move from sled to existing sql database
* Update tests for new db type
* Fix wasm for coconut too
* Remove sled from dependencies
* Remove check for bandwidth for incoming packets
We should only accunt for packets that the client inputs to the mixnet
* Introduce BandwidthController for both types of bandwidth creds
* Add some non-coconut token bandwidth handling
* Use thiserror for gateway-client lib
* Add error handling
* Unable to build for wasm for now
* Fix wasm strange error
* Disable non-coconut credentials for wasm client
* Check for status and throw the error up
* Send encrypted token cred from client
* Gateway receive message and signature validation
* Put the correct amount of tokens that were burned
* [ci skip] Generate TS types
* Eth endpoint and secret key as config parameters
* Add eth_endpoint config argument for gateway
* Update test as well
* Separate panicable code from the safe one
* Move some bandwidth controller panics up the call stack
* Save contract corresponding to the eth endpoint
* Fix template
* Pass the web3 interface as well
* Made event reads possible in gateway
* Add checks for event data
* Cosmos contract for double spending prevention
* Add workflow for the new contract
* Add validator rest URL to config
* Rename eth_events to erc20_bridge
* Pass cosmos mnemonic as well, and put the nymd client in ERC20Bridge
* Call cosmos contract for final verification
* Ask for config parameters in cli
* Fix various stuff
* Increase timeout to allow gateway to check the two chains
* Put some logs for the new flow
* Set consumed bandwidth invariantly of coconut feature
* Fix clippy error
* Add non-coconut checks
* Use 2018 rust instead of 2021
* More verbose nymd error
* Explicitly specify TOKENS_TO_BURN constant
* Put eth burn function in a constant
* Replace to_vec & append with iter & chain
* Test for (de)serialization of TokenCredential
* Minor rename
* Separate credential creation from bandwidth claiming
* Switch from panics to errors when claiming coconut bandwidth
* Another append changed to chain
* Update QA cosmos contract address
* Simplify build/test/clippy separation on coconut feature
* Fix bad features arg positioning
* Use the start_after in cosmos contract query
* Set a limit in line with a range on cosmos queries
* Added unit tests for new cosmos contract
* Fix bandwidth_remaining comparation
* Get remaining bandwidth from gateway
* Add contract build flag
* Add a useful info log
* Use a more robust eth depth for release builds
* Include recipt logs in error message
* Fix clippy for tests
* Use Arc instead of clone
* Rename as_bytes to to_bytes
* Make signature verification in contract more verbose
* Missed rename of paging constant
* Fix gateway start with coconut enabled
* Rename function to claim_token
* Simplify nymd client setup
* Check with block buffer on gateway as well
* Update comment of double spending protection
* Correct contract address
* Backup the keypairs used for buying tokens, in case of error cases
* Don't take any chances with the gateway timeout
* [ci skip] Generate TS types
* Updated cosmos contract to latest QA address
* Add cli options for eth
* Update network monitor timeout value as well
Co-authored-by: neacsu <neacsu@users.noreply.github.com>
* 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
* Update the version to 0.11.0 for non-upgradable crates
* Fix target version for the current upgrade functions
* Upgrade native client
* Upgrade socks5 client
* Upgrade mixnode
* Upgrade gateway
* 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
* 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
* 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
* Feature/wasm update (#341)
* Split text and binary client apis
* Very initial attempt at new serialization
* Defined ser+de for Recipient and ReplySURB
* Response errors
* builds with changes
* Working WS API + moved to separate crate
* updated python examples
* Fixed parsing bug
* Updated go examples
* Updated rust examples
* formatting
* Removed unused imports
* dependency updates
* Further dependency changes
* nymsphinx exposingn framing only if not in wasm32
* Cargo lock changes before develop merge
* Pending work
* Actually sending and receiving websocket from rust!
* more WIP
* Initial wasm client + establishing shared key with gateway!
* Splitting and sending a message!
* WIP
* WIP
* Initial wasm-ification of the gateway client
* Passing reconstruction result to js callback!
* Initial WASM cleaning pass
* Dependency pruning
* Moved processing loop to received_processor + at least ack unwrappingn
* Post merge fix
* Kinda updated react example
* Old print statement removed
* Removed yarn.lock
* Fixed building issue for other clients
* Fixed travis test command
* Updated wasm publishing instructions
* Feature/instant sending (#359)
* Ability to set client in vpn mode
* Connection handler for mixnode
* Initial vpn mode for mixes
* Updated SphinxCodec to contain more metadata
* Renaming
* Removed handle from mixnet client and introduced forwarder
* Mixnode using new forwarder
* Mixnode common module containing shared packet processing
* ibid. incorporated inside mixnode
* New processing for gateway
* Type cleanup
* Wasm fix
* Fixed client config
* Fixed mixnode runtime issues
* Formatting
* Client re-using secret on 'normal' packets
* Using the same key for acks
* WIP
* vpn key manager cleanup
* wasm fix
* VPN_KEY_REUSE_LIMIT moved to config
* Moved AckDelayQueue to separate common crate
* Key cache invalidator
* Updated dashmap used in gateway
* Old typo
* Additional comment
* Cargo fmt
* Fixed tests
* Sphinx update
* cache ttl as config option
* Cargo fmt
* Feature/network monitor (#369)
* WIP commit
* Further into errors (WIP)
* WIP commit, more stuff compiling, but now we switch to sneaky Jedrzej trick
* Websocket connections starting to work
* WIP
* Constructing the socket stream in one go
* Nicer connections. Getting topology now works.
* Fixing startup message
* Injecting directory uri
* Injecting good mixndodes
* Deleting old healthcheck
* Starting to wrap gateway client
* Splitting out good topology contstruction
* Starting to breathe finally
* Fixed layer assignment error
* Starting gateway client in a better spot
* Cleanup
* Renamed construct() to new()
* Injected channels, removed websockets
* Added a MixnetListener to deal with returned packet traffic
* Simplification
* Renaming and commenting a few things
* Renamed temp variables
* Fixed variable names
* Made errors a bit more explicit on message reconstruction
* Added the mixmining route / object to the directory server client
* Recipient is always "me", a bit easier to understand what's going on
* Subbing in test nodes works
* Using QA directory
* Noting which directory server we're using at monitor start
* Adding Debug to MixStatus so we can print it more easily
* Prettification of startup messages
* Notifying directory of successful packet receipt
* All nodes now being tested
* Now able to do timer-based test runs and detect the last node tested
* Renamed mixnet_listener to notifier
* Moved message chunking into its own home
* Starting to pull out packet sends
* Basic functionality working!
* Enabled timer runs forever
* License notices
* Depdendency cleanup
* Import cleanup
* Moved to implicit tokio runtime
* Removed some unnecessary data clones
* Fixed monitor doing two runs at startup rather than one
* dalek version updates
* This should have been split but got carried away
* Initial ipv6 support
* Don't test outdated nodes
* Added network monitor to default workspace members
* Actually sending reports
* Batch-sending mix status
* Cargo fmt
* Minor cleanup
* Malformed Cargo.lock
* Post-merge fixes
* Defined constant in main.rs for enabling detailed reporting
* Updated package versions of the system
* Checking version compatibility on startup
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
* Added sphinx socks to default workspace members (#358)
* Feature/version in config (#376)
* Added version field to config files
* Removed built dependency
* Missing non-removed call to built
* Corrected version on client-core (#377)
* Feature/remove validator (#380)
* Replacing Rust validator sketch with Cosmos-based code.
* Removing old build instructions
* go fmt on generated code
* Removing build files for github and pi
* Starting transplant surgery
* Directory now running in validator, sans metrics
* Updating go sum
* A partly-working directory startup integrated into the nymcli app.
* Removing the Swagger docs header from nymcli, it can live in server.go
* Working swagger docs.
* Updating test title on Swagger docs
* Directory server now integrated into validator (primitive but working)
* Noted location of mixmining reports database.
* Bumped golang version
* Removing validator cargo files.
* Moving directory API init method into the nymd module
* Ditching a test which is causing tooling problems - presence will go away soon anyway
* Removing the validator and merging develop
* Update README.md
* Update README.md
* Feature/upgrade command (#381)
* Exposed version parsing from version checker
* Ability to upgrade mixnode from 0.8.X to 0.9.0
* Ability to upgrade gateway from 0.8.X to 0.9.0
* Ability to upgrade native client from 0.8.X to 0.9.0
* Ability to upgrade socks5 client from 0.8.X to 0.9.0
* Typo
* Minor renaming
* Preventing upgrade if current is not a release version
* Additional upgrade restrictions
* Corrected version bound
* Feature/mix ed25519 identity (#388)
* Introduced identity keypair to mixnode
* Updated upgrade 0.9.0 mix upgrade instructions
* Printing failed upgrade notice when it failed
* Moved printing upgrade start notice to beginning of function
* Feature/double init prevention (#386)
* Updated NymConfig trait making id always obligatory. Also added extra default method implementations
* Preventing init on mixnodes that were initialised before
* Quotes before mix id
* Preventing init on gateways that were initialised before
* Preventing init on native clients that were initialised before
* Preventing init on socks5 clients that were initialised before
* Feature/duration cleanup (#391)
* Mixnode using Duration for time intervals + human readable config fields for them
* Removed old comment
* Native client using Duration for time intervals + human readable config fields for them
* Socks5 client using Duration for time intervals + human readable config fields for them
* Gateway using Duration for time intervals + human readable config fields for them
* Config compatibility with 0.8.0 debug values
* Fixed previous merge issue
* Moving subsidiary functions down below main so we can see where thing start
* Feature/fix dependabot alerts (#393)
* Fixing a dependabot alert
* Fixing npm audit failures in js example for webassembly client
* Fixed some more npm audit problems
* Explicitly handling base58 key recovery errors (#396)
* Fix compiler warnings for unneeded mut (#398)
* moved new_v4_with_node to test only section (#392)
* moved new_v4_with_node to test only section
* cargo fmt
* Feature/directory server transition (#401)
* Initial changes to validator client API
* Updated models
* GatewayRegistrationInfo constructor
* Change validator topology to convert into NymTopology without failure
* Mixnode registering and unregistering presence
* Directory -> Validator renamings + adjustments
* Updated upgrade command for mixnode
* Extracted metrics part of directory client into separate library
* Removed no longer needed traits
* Integrated new metrics client into mixnode
* Introduced the same set of changes to the gateway
* Getting active topology in client core via validator client
* Updated clients to get correct topology
* Introduced mix mining endpoints to validator client
* Network monitor using validator client
* Removed directory client
* Updated wasm client
* Temporarily disabled the test
* Checking ok status for validator client response
* Updated upgrade command for clients
* Allowing using old presence directory as new validator endpoint for mixnodes and gateways
* Fixed tests in non-default crates
* Feature/validator api update (#402)
* Updated validator API routes
* missing comment
* Feature/wasm client fix (#399)
* Disabling wasm optimization for the moment, it isn't working on my machine
* Updating the React example back to a working state, 0.8.1 npm package is published.
* Merging develop into bugfix
* Upgrading react-scripts to fix a major vulnerability
* Using metrics interval received from server (#403)
* Using metrics interval received from server
* Test fix
* Feature/error on noninit (#404)
* More graceful shutdown in case of uninitialised client/node
* Performing version check on binary `run`
* Feature/no run config flag (#405)
* Removed `--config` parameter in `run` commands
* Removed old tests that were doing disk IO
* Renamed directory arguments to validator (#408)
* Feature/max retry (#409)
* Maximum number of allowed reconnection attempts
* Requiring initial internode connection to be successful
* Decreased logging level for failing to establish initial connection
* Feature/controlled reinit (#410)
* Allowing init with existing id but keeps existing keys
* Removed unused imports
* Removed debug print statement (#411)
* Updated upgrade commands to set new default validator (#413)
* Feature/network monitor file topology (#412)
* Network monitor loading 'good' topology from files instead
* Update .gitignore
* Passing address of validator as an argument
* Made detailed report const flag into an argument
* Flag to start network requester in open proxy mode (#418)
* Renamed 'sphinx-socks' to 'network-requester' (#417)
* Added option to set incentives address during mix and gateway init (#419)
* Updated validator topology (#420)
* Bugfix/upgrade fix (#421)
* Added default for incentives address when deserializing
* Ability to optionally pass incentives address during upgrade
* Feature/socks improvements (#423)
* Changed AvailableReader from Future to Stream
* comment formatting
* WIP
* Maximum number of bytes read per poll
* More detailed socks5 printing
* Split up socks5 service provider runner
* Fixed closing proxy too soon on one side
* Additional log information
* Printing connection id in log target
* Adjusted some constants
* Target field in log
* Removed dead code
* Decreased logging level
* Explicitly seperated 'Send' and 'Connect' request + data buffering
* Temporarily commented out test that fails due to not understanding limitations of tokio test io builder
* Fixed socks5 tests
* Starting cover traffic stream under correct condition (#422)
* Fixed bunch of clippy warnings (#427)
* Updated default sending rates (#430)
* Feature/explorer (#431)
* Initial commit of the new dashboard code.
* Periodically grabbing topology json
* Pulling file saving out into its own module
* Ignoring downloaded topology file
* Moved everything public into a public folder
* Refreshing the mixmining report
* Mounting static files from /public
* Including mixminiming report grabber
* Leaving the route in place to pick up later. It's not used right now.
* Removing json download from git
* Ignoring topology download
* Moving recurrent jobs in to a jobs module
* Adding websocket dependencies
* Starting to get client/server websocket functionality running.
* Fixing unused imports
* Separating client and server functionality a bit more cleanly
* WIP to sketch out the ws client and server a bit more
* Initial metrics broadcaster
* Import fixup
* Spawning rocket in tokio task
* Removed outdated comment
* removed the js file
Co-authored-by: Dave <futurechimp@users.noreply.github.com>
* Bugfix/metrics fixes (#434)
* Updated dashboard html file
* Changed explorer to listen on the same port as old dashboard
* Using correct field names in js file
* Sending correct key in metrics
* Added nym prefix to binary names (#436)
* Passing validator base url as an argument (#439)
* Spawning rocket as a blocking task (#440)
* Update main.js (#441)
* Update main.js
* Changed websocket port to 1648
* Changing default validator location to make it clear we're testnet (#437)
* Changing default validator location to make it clear we're on a testnet here.
* Updated validator url
* Updated metrics url
Co-authored-by: jstuczyn <jedrzej.stuczynski@gmail.com>
* Adding keybase to allowed.list.sample (#442)
* Updated nym-run gateway id (#445)
* Adjusted 'fastmode' settings (#444)
* Added validators to dashboard + validator and block count (#443)
* Slightly friendlier upgrade argument description (#446)
* Slightly friendlier upgrade argument description
* Added right format examples
* Explorer public folder being relative to the binary (#447)
* Explorer public folder being relative to the binary
* Qualifying the public mounting path
Co-authored-by: Dave <futurechimp@users.noreply.github.com>
* Extra argument to specify metrics websocket + long attribute (#448)
* Extra argument to specify metrics websocket + long attribute
* Default testnet values
* Fixed the URL of the websocket (#449)
* Removed hardcoded 'good gateways' in favour of pseusorandom choice from the active set (#450)
* Adding graceful de-registration to service
* Removed incentives form url (#451)
* Updated version numbers
* Updated generate changelog script
* Updated changelog
* wasm examples fixes
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
Co-authored-by: Ethan Frey <ethanfrey@users.noreply.github.com>
* Feature/wasm update (#341)
* Split text and binary client apis
* Very initial attempt at new serialization
* Defined ser+de for Recipient and ReplySURB
* Response errors
* builds with changes
* Working WS API + moved to separate crate
* updated python examples
* Fixed parsing bug
* Updated go examples
* Updated rust examples
* formatting
* Removed unused imports
* dependency updates
* Further dependency changes
* nymsphinx exposingn framing only if not in wasm32
* Cargo lock changes before develop merge
* Pending work
* Actually sending and receiving websocket from rust!
* more WIP
* Initial wasm client + establishing shared key with gateway!
* Splitting and sending a message!
* WIP
* WIP
* Initial wasm-ification of the gateway client
* Passing reconstruction result to js callback!
* Initial WASM cleaning pass
* Dependency pruning
* Moved processing loop to received_processor + at least ack unwrappingn
* Post merge fix
* Kinda updated react example
* Old print statement removed
* Removed yarn.lock
* Fixed building issue for other clients
* Fixed travis test command
* Updated wasm publishing instructions
* Increased default presence and metrics sending interval (#354)
* Defaulting to mix layer with fewest node if no argument provided (#353)
* Defaulting to mix layer with fewest node if no argument provided
* cargo fmt
* Selecting the gateway randomly from 2 known good ones. (#355)
* Selecting the gateway randomly from 2 known good ones. There's a problem with the config file in this commit though.
* Saving value of chosen gateway
* Removed duplicate printing of gateway being used
Co-authored-by: jstuczyn <jedrzej.stuczynski@gmail.com>
* More detailed error response on authentication/registration failure (#356)
* Updated changelog
* Updated version numbers
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
* Updated built dependency
So that it wouldn't fail on nwindows
* Concurrent RW client-side
* Draft of a ProxyRunner
* Super experimental proxy runner for provider
Very much WIP
* Extracting shared code + cleanup
* Logging cleanup
* Removed redundant close request
* Adding a client-core crate.
* Moved config into client_core
* Socks5 client now depends on client-core/config
* Native client now mostly using client-core internals
* Socks client now uses client-core internals.