* Send message from service provider to stats service
* Put some actual data in stats
* Put stats sender on its own thread and send response data too
* Use SQLite for storing stats
* Add the data interval and timestamp
* Fix clippy
* Set description at boot
* Guard stats service functionality under a feature for now
* Make stats service address data into consts
* Add README to network requester
* Retrieve sql data in interval
* Expose sql data via rocket rest api
* Add entry to changelog
* Change accumulated reward to Option, migrate delegations
* Remove interval from the validator cache
* Add info to db errors
* Remove interval fetch from the contract
* Rework epochs
* Fix undelegation errors
* Emit error event instead of error
* make no-clippy
* Fix clippy lints
* 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
* 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
* Starting on cosmwasm smart contracts
* Mixnet contract now builds
* Removing license and notice files, the monorepo already has these.
* Removing generated README content
* Simplified development instructions a bit.
* Converted some network monitor files to use SPDX license headers
* Renamed packaget to mixnet-contracts
* Depending on the Nym topology crate
* Renaming contract package in usage
* Renamed "announce" to "register_node" in the defined messages
* Fixed package name for mixnet contracts in defined release annotations
* Added the mixnet contracts to the Cargo lock file
* Renamed some fields in our contract topology
* Using the stringy mixnode from the validator client.
* Removing mix nodes count from state, we can infer that
* Saving generated code in comment as it's a useful example for now
* Renamed "count" to "get_topology"
* Adding the beginnings of a validator client (in Typescript)
* Starting to integrate example code. WIP.
* Ignoring generated accounts
* Making a few less mixnodes :)
* Adding shebang to start script
* Cranking up the Nym-related gas limits, as otherwise contract upload fails.
* Simplest mixnode example is now working
* Removing the external client code, it messed up wasm compilation. Will copy/paste for now.
* Contract now wants to add a MixNode rather than an IP string
* Adding mixnodes via contract now works (!)
* Simplified mixnode registration example
* Further mixnode-adding simplification.
* Adding author name
* Fixed description
* Sent funds are now required to bond a mixnode
* Ensuring that we send correct coin denomination
* Unbonding now works (!). Quite primitivist.
* Checking that unbonding works from the client.
* Setting up a thief account to play with
* Checking to see whether thief can unbond a node (it fails, happily)
* Adding a more specific error for when an account attempts to unbond but owns no bonds
* Figured out how to test contract balances
* Set the console messages to explain things a little more nicely
* Tests for insufficient funds result
* Using more async in driver example
* Added a bit more explanation of the actions taken by the driver example
* Locking down wasm instantiate a bit more
* Docs clarifications on how to run example
* README clarification
* Corrected the commit hash in the wasmd build command, it was still set for 0.14.0
* Moved models from types into state
* Starting work on range queries
* whitespace
* Going back to slow but reliabel node uploads and disabling new contract upload
* Cranking gas fees temporarily
* Mixnode key retrieval working and tested
* Range retrievals now working well
* Removing unused clone
* Compressing tests a bit
* Testing node retrieval on large numbers of nodes.
Not sure whether MockStorage has the same space limitations as
production storage does.
* Getting rid of spelling warning
* Removing unused responses
* Minor cleanup
* Starting to map my way out of the tuples
* Slightly more meaningful variable names
* Returning a StdResult from nodes query
* Fighting through the unwraps :)
* Unfucking a bit more
* Starting to use ranged nodes in contract
* Testing node retrieval from range store
* Ditching generated tests
* Adding works, still need to test removing mixnodes
* Attempting to remove a mixnode returns an error when no nodes exist
* Un-registering when no accounts exist (edit)
* un-registering someone else's mixnode fails
* Ensuring proper ownership
* Testing for only 1 mixnode getting deleted
* Testing single-node retrieval
* Removing mixnode working
* Removed unused imports and unused variable warnings
* Made handler functions private
* Tested for error response on mixnode removal
* Ensured proper post-state on mixnode removal
* Using Vec<Coin> for currency equality comparisons
* Removed todo, this amount is only for logging purposes anyway
* Refactoring tests a bit
* Adding a few storytelling comments
* Putting helper methods into alphabetical order
* Drying up mixnode adding in tests
* Using the new add_mixnode helper
* Checking full object equality in test
* Removing the GetNodes handler
* Taking a more "storytelling" approach to the contract tests
* We need a few more methods to run our example driver
* We now need to make a new address for each node we want to have,
as each sending account can only have one node
* HumanAddr not needed
* Making call sequence a little more readable
* Added the results of today's experiments with the REST API to the validator client readme
* Corrected console.log message
* Adding a note about how to run tests
* More contract exercising fun
* Updating mocha
* Whitespace
* Adding a note about running tests
* Adding typed rest client
* Starting to mess with typescript paging client
* Removing the rest client, we'll use the cosmjs one for this
* Noting a few more contract requirements
* Starting client restructuring
* Importing cosmjs stargate client
* Starting to work on the chain cache
* Cleanup
* Removing type annotations which hilariously worked, confusing the compiler
* Might as well do each cache individually
* Renaming chaincache so that it handles only mixnodes
* Renaming chaincache
* Setting dynamic per-page value to ease testing
* Using perPage in tests
* Moving tests back into their own special home so they don't bloat our package
* Ignoring generated docs
* Adding TypeDoc documentation generator
* Removing unused NetClient import
* Added docs generation
* Noting existence of docs generation
* Starting to test paged responses
* Working paging tests
* Clarified test names a bit
* Removed console.logs
* Added a test for two full pages.
* Formatting
* Starting to query for mix nodes
* Removed the topology in preparation for paging
* Removing unused struct
* Getting ready for series-based paging
* We're now setting page size limits on list retrievals
* Pagination starting to work, needs more testing
* Moved test support stuff into its own home
* Removing duplicate testy code
* Testing all paging stuff in the contract
* Removed useless method duplicate
* Moving queries into their own file
* Removing redundant tests
* Testing default paging limit
* Testing max paging limit
* We don't need to c/p pagination stuff from the cw-plus contracts, removing
* Testing pagination
* Making next key calculation explict via a function
* Removing temporary variable
* Commenting final state
* Incorporating the PagedResponse
* On the road to a working TypeScript client
* Adding some logging utilities
* Paged retrieval working but needs improvement - it's very brittle
* Getting the loop right
* Removing unused logger
* Setting up a request count
* Documenting the ins and outs of the client network interface
* Removing requestCount as we're not using it yet
* Success! Making paginated requests for mixnodes!
* Differentiating between MixNode and MixNodeBond
* Checking that Fred can upload a mixnode
* Fixing export
* Adding the ability for client to get balances
* Docs fix
* Converting interfaces to types
* Changing `mixNodes()` to `getMixNodes()` on client
* We might as well return the nodes we've just retrieved when we refresh
* Starting work on unbonding
* Fixed a caching bug which was causing multiple result sets to be cached
* Using the sender address as the key for removal
* Importing some result stuff so we can find out what happened on execution
* Minor messing around to prove that the sequence fully works
* Displaying a nicer message on mixnode unbond
* Renamed announce to bond in validator client
* Fixed unstable clippy warnings
* Removing commented fields
* Comment spacing
* Changed announce to bond in example code
* Making the test accounts directory configurable
* Rebuilt
* Loading keys from the local ./accounts directory
* Ignoring contract lockfile
* Saving out a contract lockfile so things continue working after contract upload
* Splitting the driver example into smaller self-contained examples
* Deleting the example that Andrew hates so much
* Making dependabot happy
* Stricter equals
* Removing unused import
* 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
* 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
* 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
* 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
* Adding ordered buffer, moving socks5 request location into common
* Moved utils to available-reader
* Starting to use OrderedMessage in socks5 requests
* Renamed available reader module
* Initially included sequence numbers
* OrderedBuffer fix
* Buffer bug fix + extra test
* Bug fixes
* Removed test from an old experiment
Co-authored-by: Dave <futurechimp@users.noreply.github.com>