* Import cw3-flex-multisig and cw4-group contracts
* Add release_funds to coconut-bandwidth-contract
* Create contract.rs file
* Add cw multi test and a test that uses it
* Use mnemonic for coconut mode too
* Stricter access to config file, which contains mnemonic
* Update tests
* Remove signed deposits dir after merging that into sql db
* Clippy nits
* More clippy
* Remove backtraces features to pass clippy tests
* Merge the same mnemonic for rewarding and coconut
* Simplify things, letting network monitor use testnet-mode with gateways
* Unify the nymd clients
* Sqlx common storage for buying/consuming credentials
* Link credential storage to credential client
* Trigger rewarded_set update on bootstrap error
* Fix bug on message signing
* Simplify coconut feature in code and set it in validator-api
* Update some local consts
* Link clients to credential storage
* Simplify sql query and change socks5 too
* Update attr handling such that public ones are usable
* Normalize test addresses
* Fix clippy
* Merge storages for (non)coconut creds
* Fmt miss
* Disable wasm client support for now
Co-authored-by: durch <durch@users.noreply.github.com>
Resolved dependency issues in testnet-faucet
Removed the outdated react example
Updated js example dependencies
Using sandbox in js example
Feature locking imports
Running wasm client in testnet mode by default
Allow using `None` BandwidthController in testnet mode
Reverted endianness change and left it for others to deal with
Fixed up websocket js-example
Changed endianness of aes counter
* Save gateway owner for later use in erc20 bandwidth request
* Pass owner in network monitor
* Switch to variable length owner address
* Add erc20 bridge contract in validator client
* Check bandwidth credential refers to gateway
* Check the owner of the gateway from the eth event
* Fix wasm client
* Hack to avoid unused warning on coconut path
* Hacked, one-time payment
* Remove print
* Update arg format
* Fix token check
* Fix native template
* Use utokens instead of full token
... when talking to eth
* Fix parse event for new field
* Fix socks5 template
* Add estimation of gas call
* Make fs backup more reliable
* Fix clippy
* Fix unused import
* Update waiting time
* Remove defaults from run, as it they should be set on init
* Remove debugging prints
* Replaced unwrap with error
* Fix build
* Make eth contract address dependent of network
* Use tokio for sleep
* Add approve before spending token on bandwidth
* Put bandwidth claim only at the beginning of the process
* Fix wasm client
* Re-enable CI on wasm client
There is an `unused-unit` lint that will fail for now, but this is
regarded as a false positive and should eventualy get fixed:
https://github.com/rustwasm/wasm-bindgen/issues/2774
* The wasm tests would be run under native arch
* Removed outdated constant
* ClaimFreeTestnetBandwidth ClientControlRequest
* Configuration option for the testnet mode in gateway
* Made testnet mode deserialize to default value if not present
* Fixed testnet mode override
* Testnet config options for clients and validator api
* Changed error message for when gateway is not using testnet mode
* Incorporated testnet mode into gateway client
* Activating testnet mode based on config values
* Allowing clippy warnings
* Fixed use of moved value in wasm build
Co-authored-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
* 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>
* 'Coconut' feature in gateway
* Enabled coconut feature in gateway-requests
* Native client coconut feature
* Ibid for socks5 client
* Ibid for wasm client
* Coconut feature flag for validator-api
* Added coconut feature flag to our CI
* build.yml typo
* Continue on windows errors
* Missing quote
* Another typo in build.yml
* Reclaiming disk space when building for windows on CI
* Added separate gateway active set size
* Grabbing contract state
* Defined PartialOrd on MixnodeBond and GatewayBond
* Some initial stub for active set
* Unit tests for mixnode and gateway bond partialord implementation
* Obtaining active sets
* Active nodes routes
* Additional methods on validator client
* Added state migration
* Feature locking unused import
* Fixed State test fixture
* Included block height for partial_ord
* Missing post-merge imports
* api on the client for active nodes
* Native/socks5/wasm clients using active nodes
* Rewarding only active nodes
* Updated validator client StateParams definition
* Gateway active set size
* Contract migration update
* Cargo fmt
* Updated TauriStateParams
* [ci skip] Generate TS types
Co-authored-by: jstuczyn <jstuczyn@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
* Hand coconut issuance off the validator-api
* git to cargo
* Move to own module
* Integrate tauri-client, extract common interface
* cargo fmt
* Ergonomics
* Facelift
* Wrap up tauri client
* Set up publish
* Fix fmt
* Install CI dependencies
* Inline deps
* Remove mac deps
* Add dist dir
* Fix beta clippy nag
* Commit some gateway work
* Thread coconut creds through gateway handshake
* Push in progress patch
* Move State from tauri client to coconut interface
* Move get_aggregated_signature from tauri client to coconut interface
* Move prove_credential from tauri client to coconut interface
* Update sphinx version
* Mount coconut routes and manage config file in rocket
* Split default validator endpoint into host and port
* Add init for simple credential initialization
* Fix common gateway client
* Add coconut cred to webassembly client
* Add coconut cred to socks5 client
* Add coconut cred to native client
* Remove direct coconut-rs dependency
* Use only coconut interface in validator api
* Leave validator-api out of workspace and update Cargo.lock
* Fix clippy warnings and update Cargo.lock after rebase
* Switch from attohttpc to reqwest for async gets
This is not only needed for using async requests, but also because attohttpc
causes OpenSSL issues when cross compiling the webassembly client.
* Replace attohttpc with reqwest for puts too
* Make tauri client commands async
* Fix borrow error
* Guard gateway server code from compiling for wasm (client)
* Fix clippy wasm client
* Fix tests
* Fix clippy in tauri client
* Remove commented code
* Update comment of init message
* Remove unnecessary hex dependency
* Replace config argument with key_pair
* Use `trim()` for whitespace removal
* Move verification key query higher up the function calls
* Put KeyPair instead of Config into rocket's managed items
* Re-enable tauri client verify button
* Move verification key up the function calls for prove_credential
* Use consts for verification_key and blind_sign routes of validator-api
* Replace `match` with `map_err`
* Fix typo
* Remove now unnecessary `Clone` derives
... as config is no longer managed by rocket
* Replace `match` with `map_err`
* Make `InternalSignRequest` really internal to validator-api
* Make `with_keypair` live up to its name
* Update Cargo.lock after rebase
* Replace String error with HandshakeError
* Add CoconutInterfaceError to coconut-interface
* Format the new error in tauri client
* Remove from default, as wasm client doesn't build
* Put public key as init argument...
... for the public attributes of the credential
* Use the hash_to_scalar function to make public key into attribute
Use the function from cli-demo-rs from https://github.com/nymtech/coconut
to make the identity public key into a public attribute.
* Replace vector with array for InitMessage
As we know beforehand the size of the keys, we can use fixed size array
instead of vectors. This eliminates the need for a prefixed length in
the serialized form of the InitMessage structure and enables a easy
deserialization of the remote identity before the actual bincode
deserialization that we do in the handshake process.
Before this, the `extract_remote_identity_from_register_init` function
attempted to deserialize into a public key the length-prefixed public key
received from the client, thus failing sporadically with a `Cannot decompress
Edwards point` error.
* Pass public and private attributes to state `init` instead of PublicKey
* Make tauri call with dummy attributes
* Make clients call with their keypairs
* Revert "Make clients call with their keypairs"
This reverts commit b348f47f7a.
* Put dummy, bandwidth private attribute
Co-authored-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
* Basic storage stub
* New models for new node status api
* Route handling
* Mounting new routes
* Missing selective commit
* Moved network monitor related files to separate package
* Starting to see some sqlx action
* Schema updates
* Log statement upon finished migration
* Removed old diesel related imports
* Converted mixnode cache initialisation into a fairing
* Moved cache related functionalities to separate package
Also defined staging there
* Created run method for validator cache + removed unwrap
* Removed old node-status-api types and left bunch of todo placeholders in their place
* Fixed managing validatorcache
* Status reports are starting to get constructed
* Submitting some dummy results to the database
* Removing duplicate code for generating reports
* Removed statuses older than 48h
* Initial attempt at trying to obtain reports for all active nodes
* Removed duplicates from the full report
* Grabbing uptime history
* Updating historical uptimes of active nodes
* Updated sqlx-data.json
* Removed all placeholder foomp owner values
* Changed Layer serde behaviour for easier usage
* Extended validator api config
* Initial (seems working !) integration with network monitor
* Added database path configuration to config
* Using ValidatorCache in NetworkMonitor
* Flag indicating whether validator cache has been initialised
* Introduced a locla-only route for reward script to perform daily chores
* Flag to save config to a file
* Moved spawning of receiving future to run method rather than new
* Removed arguments that dont make sense to be configured via CLI
* Removed dead code from config file
* More dead code removal
* Added validator API to CI
* Corrected manifest-path arguments
* Constructing network monitor by passing config
* Combined validator API CI with the main CI file
* Using query_as for NodeStatus
* Checking if historical uptimes were already calculated on particular day
* Making id field NOT NULL
* More query_as! action
* Updated sqlx-data.json
* Removed unused chrono feature
* Renamed the migration file
* Changed default validator endpoint to point to local validator
* Removing unnecessary clone
* More appropriate naming
* Removed dead code
* Lock file updates
* Updated network monitor address in contract code
* Don't stage node status api if network monitor is disabled
* cargo fmt
* Updated all license notices to SPDX
* Add validator-api common client
* Call validator-api from different clients for gateway topology
* Call validator-api from different clients for mixnode topology
* Use consts for the validator-api queries
* Rename the new query_validator function to query_validator_api
* Add mut to mixnode validator client
* Add refreshValidatorAPIGateways as a way to get the gateways...
... from validator-api
* Add refreshValidatorAPIGateways as a way to get the mixnodes...
... from validator-api
* Add yet another mut
* Change the port to validator-api service when querying the topology
* Add parsing check on the config phase...
... to make sure the validator URLs are in the correct format.
* Fix another clippy error
* Use all provided validators instead of just the first one
* The mutable reference was not actually needed, so remove it
* Use global variable for validator-api port
* Use url crate for checking the format and changing the port
* Use URL for parsing and move constants of validator-api to index.ts...
... until we find a way to link to the values from the validator-api
crate.
* Change global variables naming and have the API version into each API query
* Revert the changes to the index on connect...
... as they were working correctly before.
* Use all provided validators for mixnodes as well
* Remove location and layer
* 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
* 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
* Running CI also on windows and macOS
* Rust 2021 formatting
* clippy::upper_case_acronyms where appropriate
* Allowing unknown clippy lints
* Further clippy updates
* Building wasm client during CI
* wasm actions update
* added working directory to cargo jobs
* Temporarily disabled wasm test and clippy
* ability to read from multiple gateway clients
* A very initial updated network monitor
* Summary producer printing report on each finished run
* fixed gateway startup issue
* initial cleanup pass
* Sending to gateways at specified rate
* Renaming
* Fixed first run interval
* Removed false positive error print
* Ability to use 'good' topology that is different from the one being tested
* Fixed clippy warnings
* 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
* 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>
* 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
* Removed accidentally left panic call
* Changed identity keypair to use ed25519
* Encryption key is now x25519 based + compatibiltiy with sphinx
* Pathing and import fixes
* Moved all asymmetric keys to sub-module in crypto
* Extracted aes to separate module
* kdf module in crypto
* Ability to perform diffie hellman on encryption keys
* ecdsa on identity keys
* Extremely rough and incomplete registration handshake
* Authentication primitives
* Creating new random authenticationIV
* Wrapper type for the derived shared key
* Removed AuthToken in favour of using SharedKey for authentication
* Gateway identity keys
* Registration handshake without error mapping
* Gateway address in client config
* Added extra key for gateway presence
* Updated pemstore to work on borrows instead
* Gateway client trying to perform the handshake
* Gateway changes to allow for handshake and shared key
* Debug trait on sharedkey
* native client using updated gateway client
* Slightly updated gateway API
* Minor cleanup
* Fixed pemstore to correctly save multiple keypairs
* Gateway actually deriving shared key during handshake
* Gateway sending correct mid-handshake message
* Missing quotation mark in client config template
* Fixed template for correct shared key serialization
* Fixed gateway authentication
* Fixed tests
* Using correct gateway key when converting to sphinx node
* "get_all_clients" takes them from gateways as opposed to providers now
* cargo fmt
* Renamed pemstore methods
* Unused import
* Encryption of forward requests between client and gateway
* Updated sphinx dependency to use public revision
* Sending 'error' on handshake processing error
* Removed some dead code
* Dead code I forgot to remove before
* Extracted AckAes128Key into a struct
* Slight pemstore revamp allowing for symmetric key store
* ibid.
* PemStorableKey for SharedKey
* Introduced single location responsible for key management for client
* WIP
* Sphinx version update
* Stop using NodeAddressBytes for two distinct and confusing purposes
* Abstracting away SocketAddr from sphinx forwarding
* Passing the bool for reply surbs
* Attack plan for replies + encryption
* Comment + removed variable binding
* ReplySURB usage
* Topology import in nymsphinx
* Sphinx version update
* Changed 'Recipient' to contain client's encryption key
* Message preparation taking shape!
* reply surb also containing the encryption key
* Very initial message receiver
* Sphinx version update
* A possibly working way of receiving surbs
* Fixed incorrect field name in client config template
* camel casing all request arguments
* Renamed and moved `MessageMode` to more appropriate file
* Restored reconstruction tests
* Removed dead code from chunking
* Made rust examples compilable
* reply SURB key storage
* Replies as an InputMessage
* Forgotten commented code
* No retransmission processing for cover or replies
* Received reply processing
* Renamed client pathfinder to something more appropriate
* Made HasherOutputSize public
* Added key store path to config
* Reply surb attaching key digest when used
* Changes due to previous renaming
* Removed comment
* Fixed insert_encryption_key
* Assigning initial value of key store path
* Computing key digest with correct algorithm
* Initial and presumably temporary request serialization
* hacky way of introducing 'FragmentIdentifier' for replies
* Moved responsibility of reply encryption, padding, etc, to message preparer
* Optional recipient in try_get_valid_topology_ref
* Handling new reply surbs with acks and padding
* Updated go and python examples to include replies in text and binary cases
* Updated rust examples + binaryserverresponse
* Helpers in rust examples
* And updated JS example
* Moved shared key generation function to crypto crate
* Cover traffic encryption!
* hmac computation in crypto
* Updated aes imports due to new dependencies
* hkdf made more generic
* crypto cleanup + algorithms in params
* Clippy cleanup pass
* Generating encryption+mac shared keys between client and gateway
* MACs attached to forward requests to gateway
* Gateway messages encrypted and mac'd
* Lowered logging level
* compiler warning cleanup
* Some minor cleanup
* Generic stream cipher
* Generic shared key derivation + algorithm definitions
* Project-wide AES clean-up
* Comment fix
* Removed commented imports
* Updated comments
* Fixed topology test fixture
* VersionFilterable for HashMap
* Removed NymTopology trait in favour of concrete type
* Removed providers from NymTopology
* Made gateway conversion use reference, similarly to mixes
* Using more concrete types in topology rather than b58 strings
* Allowing gateways to have DNS-resolvable mix listener address
* Error propagation for gateway key conversion
* Changed identity keypair to use ed25519
* Encryption key is now x25519 based + compatibiltiy with sphinx
* Pathing and import fixes
* Moved all asymmetric keys to sub-module in crypto
* Extracted aes to separate module
* kdf module in crypto
* Ability to perform diffie hellman on encryption keys
* ecdsa on identity keys
* Extremely rough and incomplete registration handshake
* Authentication primitives
* Creating new random authenticationIV
* Wrapper type for the derived shared key
* Removed AuthToken in favour of using SharedKey for authentication
* Gateway identity keys
* Registration handshake without error mapping
* Gateway address in client config
* Added extra key for gateway presence
* Updated pemstore to work on borrows instead
* Gateway client trying to perform the handshake
* Gateway changes to allow for handshake and shared key
* Debug trait on sharedkey
* native client using updated gateway client
* Slightly updated gateway API
* Minor cleanup
* Fixed pemstore to correctly save multiple keypairs
* Gateway actually deriving shared key during handshake
* Gateway sending correct mid-handshake message
* Missing quotation mark in client config template
* Fixed template for correct shared key serialization
* Fixed gateway authentication
* Fixed tests
* Using correct gateway key when converting to sphinx node
* "get_all_clients" takes them from gateways as opposed to providers now
* cargo fmt
* Renamed pemstore methods
* Unused import
* Encryption of forward requests between client and gateway
* Updated sphinx dependency to use public revision
* Sending 'error' on handshake processing error
* Removed some dead code
* Ability to send sphinx packets of different sizes + more efficient decoding
* Closing connection on connection corruption
* Missing semicolons
* Missing license notices
* Default for packetsize
* Split nymsphinx
* Replaced Mutex with RwLock for TopologyAccessor + impl Deref
* Sphinx update + import cleanup
* Moved packet_sizes file
* Updated NymTopology API
* sphinx version bump
* Missing license notice
* nymsphinx-params crate
* Changes due to ibid.
* Chunking rework to allow variable size fragments
* Initial ack crate
* Version bump to new dev build
* Cargo lock changes
* random_route_to_gateway by node address
* exposing getting read permit
* Very initial draft on ack control
* Correctly dereferencing out of topology read permit
* All pending changes + compilation todo!s
* Restricted scope of deref on TopologyAccessorInner
* Type path alias for generate_key
* Derived traits for MessageChunker
* Ack control starting to take shape!
* Awaiting callbacks
* Most of work done on acks. Now to wire it all together
* Import cleanup
* rng generalization
* Connected real traffic together; only acks from gateway left
* Removed redundant things from nymsphinx::utils
* nymsphinx-cover crate
* Ack-related fields in client config
* Decreased packet store log level
* Restored forward sphinx request
* Slight adjustements to surb acks
* Changed TopologyReadPermit from type alias into a struct
* Changes due to ibid.
* Sphinx version upgrade
* Gateway being able to understand and handle acks
* Special Cover FragmentIdentifier + removal of dead code
* Initial packet router for gateway client
* Kill client if it fails to send to gateway too many times
* Cover messages with acks
* Moved out gateway client errors
* Ignoring cover traffic acks
* Changes in ack control
* Another sphinx version upgrade
* websocket handler delegating message chunking
* Using config defined ack wait additions
* Other minor changes I should have been more dilligent with splitting
* Import path fix
* sphinx_receiver => mixnet_receiver
* Missing renamed variable instance
* Updated aes-ctr to 0.4.0
* Removed concept of 'unfragmented' single fragment
* Replay fragments detection
* Long method split
* typo
* Cleaner client init
* Fixed race condition
* Fixed similar issue for retransmission
* Cargo fmt
* Minor clenaup
* validator: fixing a warning, untestify this when you need it for real code
* webassembly: minor readme changes.
* README changes in wasm
* Updated wasm version
* clients/webassembly: security vuln updates
* typo fix
* WIP commit
* Significantly simplified the API
* Changed switch to have default branch
* Managed to get rid of `this` bind
* Moved 'Recipient' definition
* Examples update
* Slightly more generalised 'try_from_string' for recipient
* Updated to use client@gateway addressing
* Updated tests
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
* validator: fixing a warning, untestify this when you need it for real code
* webassembly: minor readme changes.
* README changes in wasm
* Updated wasm version
* clients/webassembly: security vuln updates
* typo fix
* WIP commit
* Significantly simplified the API
* Changed switch to have default branch
* Managed to get rid of `this` bind
* Filled in a missing word
Co-authored-by: jstuczyn <jedrzej.stuczynski@gmail.com>
* Updated wasm code to work with new gateway and updated the example
* cargo fmt
* Fixed test by ensuring destination is present at a gateway
* Updated hardcoded default port
* ibid. to correct value
* Initial draft for ClientsHandler
* Created listener struct
* typo
* Stateful websocket connection handler
* Exposing modules
* Depdendencies updates
* Moved listener to correct file + made start consume listener
* Main starting new listener
* Catching sigint
* Copied client storage from provider into gateway
* Exposed websocket listener type for nicer import path
* Defined websocket message receiver concrete type
* Client ledger struct without implementation
* ClientsHandler using more concrete types
* Mixnet sender + receiver and exposed listener type
* Handling mix packets
* Ability to forward mix packets
* "starting" both listeners at main
* Depedencies updates
* Initial type definitions for client messages
* Initial "gateway-requests" with AuthToken
* ibid.
* Restored most of ledger's functionalities
* Ability to retrieve all messages regardless of rate limit
* ClientsHandler request handling logic
* Required 'new' dependencies
* Main changes required for compilation
* PacketProcessor getting private key pointer
* "moved" types into gateway requests crate
* Moved and renamed types
* ibid.
* Added required serde_json dependency
* Skeleton for websocket request handling
* helper methods on ServerResponse
* WebSocket Handler pushing received mix messages directly to client
* PacketForwarder returning JoinHandle alongside the channel
* ClientsHandler following the same pattern
* Made websocket listener start method consistent with mix listener
* Syntax error + formatting
* Websocket handler having access to mix forwarder
* Minimal binary request parsing
* Implicitly derived std::error::Error on GatewayRequestsError
* Handling of all websocket requests
* Types import cleanup
* Updated placeholder fields
* Everything put into main
* Missing license notices
* Cleaned up unused code
* Copied and did initial minor changes to commands and config
* It's actually gateway
* Gateway sending its regular presence to directory server
* Re-organisation of gateway code + Gateway struct
* Updated provider argument description
* Restored duplicate ip check without importing NymTopology trait
* Moved hardcoded values into config
* Cargo fmt
* Compilation errors in other crates due to topology adjustments
* Test fixes
* Initial gateway-client
* Seemingly working version with bunch of hardcoded and temporary values
* cargo fmt
* Removed provider poller
* Updated config with gateway values instead of provider
* Gateway address including ws
* Removed hardcoded gateway address
* Properly skipping loop cover messages
* Updated log filter with tokio tungstenite related modules
* Updated sphinx version used
* Very minor cleanup
* unused import
* directory-client: removing explicit type definitions
* clients/webassembly: ugly commit, removes dependency on HTTP crates
...at the cost of copying quite a bit of NymTopology-related stuff into
the WebAssembly client. I'll make an issue to refactor that later.
* A more helpful hint in the error message when websocket connection fails.
* Removing superfluous JavaScript, route checking now happens in Rust
* Moved `nym-sphinx-wasm` into `wasm` folder and renamed its examples
* A proposal for some structural cleanup
* desktop client: beginning of a Rust example for chunking.
* Simplifying desktop client readme
* Tarting up webassembly README
* A more visual webassembly client example
* clients/webassembly: grouping a few things into named functions for clarity
* clients/webassembly: put URLs at top of file, prepping for drop-down action
* mixnode + provider run: changed startup error messages a bit
* clients/webassembly: scrolling from the bottom in the demo