* Upgraded code to be cosmwasm 1.0-beta.2 compatible (#923)
* Upgraded code to be cosmwasm 1.0-beta.2 compatible
* [ci skip] Generate TS types
Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com>
* Feature/cosmwasm plus storage (#924)
* Upgraded code to be cosmwasm 1.0-beta.2 compatible
* Added cw-storage-plus dependency
* Experimentally replaced storage for config and layers with cw plus Item
* The same for main mixnode storage
* Usingn IndexedMap for mixnodes
* Split delegations from mixnodes into separate module
* MixnodeIndex on Addr directly
* Moved namespace values to constants
* Outdated comment
* [ci skip] Generate TS types
* Removed redundant identity index on mixnodes
* IndexMap for gateways storage
* Moved total delegation into a Map
* Compiling contract code after delegation storage upgrades
Tests dont compile yet and neither, I would assume, the client code
* Delegation type cleanup
* Client fixes
* Migrated delegation tests + fixed them
* Moved Rewarding Status to rewards
* Reward pool
* Rewarding status migrated
* Made clippy happier
* Added explorer API to default workspace members
* Updated delegation types in explorer-api
* Fixed tauri wallet
Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com>
* Vesting contract (#900)
* Initial interface spec
* .gitignore
* Finalize implementation
* Correct assumptions, use wasm_execute
* Cleanup
* Track delegation balance
* Add delegation flow img
* Proper messaging from the vesting side
* Add proxy_address to RawDelegationData
* Wrap up (un)delegation
* Add proxy: Addr to MixNodeBond
* Stub in bonding/unbonding
* Migrate vesting to cosmwasm 1.0
* Rebase on top of 1.0.0-pre1
* Reimplement delegations tracking with a Map
* Migrate to cw-storage-plus
* Restructure code, add tests
* Streamline contract code, as per review
* Address review comments
* Pre-merge rebase
* Few more nits
* Few more nits
* Fix test
* cargo fmt
* Fix beta CI
Co-authored-by: Drazen Urch <durch@users.noreply.guthub.com>
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com>
Co-authored-by: Drazen Urch <durch@users.noreply.guthub.com>
* fixed styled component
* dynamic colour for isSelected
* corrected type names
* wrapped nav for routing and positioning of main section and dynamic colour for selected section
* overview info panes added
* quick refactor break out components separately
* WorldMap implemented but not data
* map changed and updated to shades correctly
* live data in cards
* added any types for react simple map
* nested routing added but needs tidying and types refactored
* added tooltip to worldmap
* worldmap killed unused props
* updated MUI version to stable v5
* dark mode and ContentCard refactor complete
* refactor of DarkMode context and API into class and context setup
* context refactor for multiple APIs at top level
* mui typography used for error msging instead of jsx/html
* added typeDefs for node api types
* small changes to sx styling
* added types for api responses and main context
* promiseAll for better error handling of individual async calls
* switch out to live API for country nodes
* removal of unnecessary type any and shortening sx style block
* routing and basic mixnodes table and linking
* fixed TS error handling and ts exclude files
* refactor of class API fetch reqs
* renaming to more appropriate explorer-api
* broken - passing to Fouad
* fix for types in context main
* mixnode detail page
* rebasing back before fetch mixnode by ID was implemented
* added basic cache for huge dump of mixnode data
* broken mixnodes context
* fixed mixnode detail fetch
* added hardcoded BondBreakdown section
* added 2 col table for detail page and small refactor of ApiState type for consistent use throughout app
* basic chart with basic dark/theme implemented - no live data
* added scrollToTop useRef for Detail page
* tidied grid items
* media qry for smaller screens
* small changes
* added live data to bonds breakdown 1/2
* small changes/tweaks
* Bondbreakdown retrieves live data
* mixnode stats using live data
* added node status live data
* uptime story added with live data
* date formatting added
* mixnode map
* error handling for mixnode stats
* error handling for port stats
* improved error handling for table - unfinished
* error handling for mixnode table
* handle Loading state for 2colSmallTable
* Uptime story loading handling
* set up data grid component
* remove mixnode value check as handled inside MixnodesDataGrid component
* use loading prop in data grid component
* undo unintentional code formatting
* map blur and linkable data-grid added
* getting ready for gateways and removing con logs
* quickfix for map blur
* PR comment changes
* refactored data grid for reuseability
* Link to open Big Dipper for Blocks
* passing element to title instead of string for routing to Big Dipper
* quick fix for element passed as title for contentCard
* fix for colour coding nodes
* nuts and bolts of search and results per page are working
* media query for responsive search and no-per-page toolbar
* broke out search and pagesize to separate toolbar
* fix for going back to mixnodes datagrid and refetching
* corrected typings for WorldMap
* removed API for topojson
* Cleaner implementation of formatting inline for datagrid
* added Type to Datagrid Rows for mixnode
* removed optional from type for Datagrid
* added page listing the Gateway nodes
* adding clickable location to handleSearch
* tidying util functions and removing dead useEffect
* Add missing constant
* Validators link to Big Dipper
* added validators link to side nav as per Issues card
* SVG icons
* PR tweak to move logic to routes
* removed dead code post rebase
* fixed light dark mode for DataGrid
* light dark mode works on SVGs in Nav
* moving logic back to Nav to avoid window object issues
* neater ternary for SVG icons dark mode
* Better Linking/Styling for cells
* corrected prop/attr name in svg to Reactify it
* moved api url to constants
* SVGs dark now governed by context not props so reverting renderIcon method back to key value setup
* percentage for bond total added
* SVGs for Overview cards Mixnodes Gateways and Validators
* decimalised formatted punks and % of bond for BondBreakdown card
* number formatting via validator module
* adding cossmjs math pkg
* unfinished refactor BondBreakdown
* first few ui tweaks
* Adding google font Open Sans as per designs
* DataGrid unstylable in theme so nuking in css
* adding theming to Block Height card not hardcoded colours
* DataGrid styling
* Nav styling colours but without hover fix
* theme for bond breakdown
* killing con logs
* Datagrid styling
* Nav bar working
* added lines to nav
* removed cursive from fallback fonts
* trimming and refactoring
* removed dead isActive code from nav options
* Color correction for theme on 2col table
* Moved cell styles out to UniversalDatagrid for reuseability
* Nav colors moved to theme
* Removing comments and dead code
* DataGrid UI improvements
* theming for Overview content card
* Bonds updated from UPUNK to PUNK
* corrected SVG warning on stroke-width
* added Boolean class instead of ternary
* fixing up svg attr to jsx props
* merging UPUNK changes into ui-tweaks
* corrected SVG warning on stroke-width
* added Boolean class instead of ternary
* last instance of Boolean
* BondBreakdown handles 0 delegations
* formatting for webpack config and svgs
* Add `npm run lint` and `npm run lint:fix` targets to `package.json`
* Allow `.vscode` directories - exclude them individually like has been done already in the `.gitignore` directory
* Add `vscode` action to run `eslint` on save for the `/explorer/**` sub-directory
* eslint auto fix
* Fix some easy eslint issues
* removing grid pipes and pastel map colors
* Grid xl lg values to align with Search Toolbar
* GitHub Actions: do not trigger Rust actions when the paths are only `/explorer/**`
See https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onpushpull_requestpaths for details.
* GitHub Actions: run eslint and annotate pull requests
* socials added to Appbar and Footer
* smaller darkmode icon for mobile
* cleaner code for nav dark light selector
* almost all lint fixes
* post linting Nav fix
* killed con log and removed unused dep
* ref type and removed 1x ts ignore from worldMap
* disabl nested tern w/ nav is refactored on diff br
* icons smaller put into mui List format
* Added hover effect to match DarkLight switch
* ts ignore for worldMap vs no ts decl
* parking changes
* Flipped to MUI SVGs
* re-added external links to Socials
* nav functionality working
* spacing on Mixnode detail page
* datagrid alignment & detail page spacing
* map but no datagrid yet
* killed old SVGs now using mui icons
* added palette instead of strings
* Mixnode Map page working still needs tidying
* better lg xl responsive on Overview and sanitized Page Titles
* removed typography from imports as unused now
* search, sort working & added LG XL responsiveness
* Routing root reqs direct to Overview
* basic 404 page and btn back to overview
* killed fragments and comments
* updated Bond total in column
* Change bond col to type number not text
* Added field to DataGrid and updated MixnodeToGridrow logic
* Added type number so sorting works properly.
* added %self to Detail page
* basic scroll working desktop
* delegations now popout and scroll according to designs
* added stickyHeader and killed dead code
* ExpandMore only renders if delegations exist
* killed old svg icons
* added theme to Overview SVGs
* bringing Title into other pages
* linting fix
* pagination and spacing of gateways cols
* linting fix
* style override for pagination
* added hamburger and changed appbar to fixed
* bringing in other lint fix to pass linting
* PR feedback changes
* Add README.md for theme customisation
* Add hook to get app state context
* Add Nym theme typings to MUI `Theme` types
* Use new theme provider
* Fixing up components to use theme typings
Updated Overview Footer and ContentCard
Footer and Nav socials
Title, Nav chevron and Nav SVGs
Overview SVGs
Light Dark switch
BondBreakdown and 2 col table
DataGrid and 2col Tables
WorldMap UptimeChart and theme changes
WorldMap colors
merge changes
added StatsCard for overview
* Bug fix: do no close drawer when clicking on mixnodes or gateways
* Theme primary colour set to orange highlight, so that default/primary actions are clear to the user. This fixes colours on the pagination page list.
* Fixing up map projection
* Map view uses stroke colour from theme
* added useTheme from correct pkg
* react types upgrade to kill SXProps issue
* SXProps fix removing dead mixins from fixed AppBar
* Scale of Map changed to see more countries
* return type for main Context required
* Fixed map so more countries show
* type for useMainContext hook added
* Remove unused file
* Tidy up imports
* Remove use of `any` by using strongly typed hook to get the app state
* Remove module declaration so that @types/react-simple-maps is used
* API map response changed to indexed object
* Map view uses correct typings from `@types/react-simple-maps` and `d3-scale`
* Make content responsive and fills the view when screen widest
* Link network explorer in title to overview page
* Increase size of card headers to differentiate
* Fix column widths
* Fixed icons showing incorrectly the stats card in mixnode detail view
* Set default sort on mixnodes and gateways to be `bond` descending.
There is an error in MUI data-grid that does not adjust the sort caret based on initial `sortModel` value. Needs investigation.
* GitHub Action for deployment: prefix with network explorer to stop collisions with other deployment projects
* Mixnode list: fix up header title for `host`
* Fix up notification URLs and tidy up readme
* Fix up license information
Co-authored-by: Adrian Thompson <adrian@nymtech.net>
Co-authored-by: Adrian Thompson <adrianthompson@Adrians-MacBook-Air.local>
Co-authored-by: fmtabbara <fmtabbara@hotmail.co.uk>
Co-authored-by: Aid19801 <adrianThompson19801@gmail.com>
* 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>
* Add validator Docker container
* Add Docker contract upload container
Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
* Add docker-compose for validators and building deploy container
* One Docker image for each component
* Switch from hal to punk
* Add nym wallet docker
* Point web browser to the correct IP
* Better message parsing
* Rebase on the wallet merge
* Rename upload contract entrypoint script
* Remove unnecessary bash magic
* Put the contract image in the docker dir
* Put the wallet-web image in the docker dir
* Add some read-only specifiers to volumes
* Move typescript container code in docker directory
Also update lock files, as the containers work on a volume binded
to the local filesystem
* Fix volume permissions
* Add mnemonic echo
* Remove magic sleep value from secondary validator
* Adding README.md to the docker directory
* Change ENTRYPOINT to CMD for the typescript client image
* Rocket main stub
* Add anyhow
* Stub cache reads and writes
* Finalize stubs
* Add generic Rocket.toml
* Put back targets
* Have cache own its validator client
* allow dead code
* Update rocket.toml for 0.5
* 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
* 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>
* 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
* Adding the beginnings of a socks5 crate
* Removing unused import
* Adding built.rs
* Figured out test failure, stuck a note in detailing under what conditions it fails.
* Added lib
* wip on the way to compile
* First compile with much of the client in place
* Comment reflow to 80 lines
* Changed Socks5 client help message
* Latest changes to from develop applied to socks5 client
* Minor cleanup on unused code
* Adding snafu dependency
* Adding socks library
* Getting socks into the module structure
* Tokio conversion for socks code nearly completed.
* Starting traffic controllers again
* Bitcoin SP starting to breathe with Socks5 proxy. Responses not yet being sent.
* Adding in some hugely verbose print action so we can see things happening
* WIP refactor of socks code.
* Renamed structs to be more rubyish
* Refactored the run command a bit.
* handle_client doesn't need to be public
* Starting to split the handle method up into smaller, refactorable chunks
* Renamed a test
* Finished initial refactor
* Minor cleanup
* Made a few notes for my future self
* Being a bit more explicit in authtentication test
* Ensuring that user/password authentication attempts fail if that auth mode is off
* Documentation
* Refactord types into a types module
* Sending the request ID across and reading the response when it comes back.
* Added the request_id to the response header
* Adding exception handling to websocket send
* Semi-working...
* Removing non-functional examples.
* Minor output clarification
* Adding a Socks5 service provider
* Websocket connection is now being made.
* Added some simple and ungraceful websocket connection error handling
* Renamed socks5_proxy back to proxy
* ibid
* Nicer websocket start method
* Receiving messages via websocket
* Socks requests work in the simple case, SSL requests don't (yet).
* Minor cleanup, renaming variables and moving private functions around
* Comments on try_read_request
* Moved some code around
* Removed commented code and printlns
* Comments sp request
* Commented response data read
* Changing Request to Connection
* ibid
* Added a controller and split connection / request parsing
* Built out error handling on requests a bit
* Initial router action
* Request deserialization tests back in action
* Request constructors
* Constructor for controller
* Renamed message_router to controller
* Starting to build out the responses
* Returning proxied connection data
* Moving towards new Socks5 request crate
* Sending Socks5 multi-part requests through mixnet
* Removed the detritus of exploratory coding.
* Breaking the socks client read loop when empty bytes are read
* Documenting the message format for serialized socks requests
* Returning a response from the socks proxy
* Removing unused import
* Removing more detritus
* Restarting loop if no response is received
* The off-by-one change that fixed it all
* Removing unused response.rs module
* Removed unused import
* Comment cleanup
* More detritus
* Cleaning...
* Docs for socks5-requests
* Using the simple-socks5-requests crate Response in the socks5 client
* Removing unused error types
* Split request/response into their own files and wrote more tests
* Removing temporary README notes
* Renamed all instances of request_id to connection_id
* Docs on Connection struct
* Caving in to connecting inside the constructor for the moment
* Fixing up comments on socks5 service provider start
* Simplified errors in the Socks5 requests crate
* Flattened service provider module hierarchy a bit.
* Removed println
* Comment to explain return on timeout
* Logging controller connect errors
* Renamed websocket reads and writes to make them a bit more understandable
* Renamed TodoError to ConnectionError
* Logging errors instead of panicking on connection read/write failures
* Fixed error handling in controller
* Removing dead comments
* Cargo fmt applied
* Removing print statements
* Removed more comments, prints, etc
Co-authored-by: jstuczyn <jedrzej.stuczynski@gmail.com>
* Changed default listening port to something slightly more meaningful
* Removed TCP socket and made websocket the default option (as opposed to 'None')
* Updated template
* Updated ReceivedBuffer to allow direct message forwarding
* ignoring vscode directory
* Push messages mechanism for websocket client-clients
* Removed flawed chunking example
* ... but added bunch of websocket examples in return!
* Moves js example directory
* Cargo fmt
* Removed old listener code
* validator: adding Diesel ORM
* validator: making sure Iron::status is always avaialable
* ibid
* validator: presence-announcement REST API
* validator: adding Diesel setup
* Removing Diesel stuff from root of monorepo
* validator: adding Diesel migrations and setup
* validator: documenting how PresenceAnnouncement is different from presence.
* validator: added Chrono crate for datetime conversions into sql
* validator: restructured the presence module
* validator: removed presence announcements from persistence
* validator: commenting topology
* Adding staking to the mixmining service
* Start of mixmining + stake service
* validator: added a bit about mixmining to README
* validator: added Iron's params crate
* validator: reorganized mixmining service and db code
* validator: no need for this .env warning
* validator: removing params parser, it's now unused
* validator: adding json body parser library for Iron
* validator: adding spelling exceptions
* validator: adding bodyparser deps
* validator: ability to (de)serialize Mixnode struct
* validator: further announcement HTTP progress
* validator: simplified announcement route
* validator: injecting database and service into handler
* validator: renaming service and db variables
* validator: using camelCase json
* validator: using base Iron handler rather than middleware handler
* validator: better error message on unexpected json parsing
* validator: adding 'location' to presence::Announcement
* comments on mixmining::Db
* validator: commenting out unused mixmining::Service methods for the moment
* validator: noting that we don't yet know how to measure capacity
* validator: comments
* validator: starting to add correct serializers in rest API
* validator: renaming a mixnode announcements
* validator: extracted route creation
* validator: going lower-case for node in "Mixnode"
* validator: removing the "announcement" model
* validator: renamed annoucements handlers
* validator: temporarily removed Chrono, remove it fully if it's not needed.
* validator: added all the needed Mixnode fields to the service model
* validator: moved models into their own file.
* validator: conversions to/from api vs service models
* validator: doing type conversions from rest to service models
* validator: unused import cleanup
* validator: rewrote mixmining service comments in light of recent thinking
* validator: some notes on type conversion tests
* wip
* validator: getting capacity from db works
* wip
* validator: eliminating borrows so we can have something pure to mutex out on
* validator: a working mutex on the mixmining service
* validator: renaming mixmining db get_capacity to capacity
* validator: making mixmining db capacity field private, using accessor
* validator: local capacity updates working
* validator: starting REST API for staking
* validator: fixing clippy warning
* validator: minor naming fixes on mixmining service
* validator: service mixnode and rest mixnode + topology conversions + tests
* validator: renaming mix_nodes to mixnodes for consistency
* validator: test fixtures for mixnode
* validator: moved service models into their own file
* validator: a properly-structured toplogy route
* validator: topology retrieval
* validator: killed test fixture warning
* validator: getting set for topology equality checks (testing purposes)
* validator: otherway conversions for topology and mixnode types
* validator: initial topology retrieval working
* validator: ditching go-ish variable name :)
* ibid
* validator: added a StakeUpdate struct to get around cargo fmt failing
* validator: commenting out struct so kill warning
* Ignoring validator vscode settings
* ibid
* ibid