c4bd5e04a53cf00a42b20e0841228a4ee8dba22e
242 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b47dad1b7d | Tidy up ratio calcs a bit | ||
|
|
22a4b03ce6 | Initial analysis | ||
|
|
81d49dc4b9 | Add thiserror crate | ||
|
|
12637d93ff |
Feature/persistent gateway storage (#784)
* Sqlx struct stub * Initial schema * Initial error enum * Managed for persisted shared keys * Initial inbox manager * Comments * Using new database in clients handler * Extending gateway storage API * tokio::main + placeholder values * Removed old client store * Simplified logic of async packet processing * Renamed table + not null restriction * BandwidthManager * Removed sled dependency * Using centralised storage for bandwidth * Dead code removal * WIP connection_handler split and simplification Maybe it doesn't look like it right now, but once completed it will remove bunch of redundant checks for Nones etc * Further more explicit clients handler split * Minor cleanup * Temporary store for active client handles * Fixed error types * Error trait on iv and encrypted address * Authentication and registration moved to the handler * Removal of clients handler * Further logic simplification + returned explicit bandwidth values * Further cleanup and comments * Updated config with relevant changes * Basic bandwidth tracking in client * FreshHandle doc comments + fixed stagger issue * Removed side-effects from .map * More doc comments * Database migration on build * Increased default claimed bandwidth * Renaming * Fixed client determining available bandwidth * Removed dead sql table that might be used in the future * Windows workaround * Comment * Return error rather than cap credential |
||
|
|
9a65e44166 |
Add Tauri wallet
-- Squashed commit of the following: commit |
||
|
|
020cad897d |
Feature/rust rewarding (#750)
* 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 * New tables for rewarding * Updated cosmos-sdk version * Removed reward-specific node status routes * New rewarding-specific config entries * Additional network defaults * Initial periodic rewards from validator api * Replaced print with log * Filtering nodes with uptime > 0 * Additional failure logging statements * Fixed operation ordering * Adjusted next rewarding epoch determination * Modified rewarding behaviour to keep track of rewarding in progress * Improved error message on config load failure * Additional log statement * Adjusted rewarding gas limit calculation * Made naming slightly more consistent * Fixed incorrect parentheses placement * Fixed fee calculation * Cargo fmt * Removed failed merge artifacts * Introduced comment for any future reward modification * typos * Helper functions for the future * Making @mfahampshire 's life easier * Redesigned epoch + rewarding skipped epochs (if possible) * Removed old merge artifacts * Naming consistency * Constraining arguments * Removed unnecessary if branch * Ignore monitor check for current epoch * Additional checks for current epoch data * Monitor threshold check * cargo fmt * Fixed post-merge issues in transactions.rs |
||
|
|
5dfaff6296 |
Update hmac and blake3 (#673)
* Update hmac and blake3 * Remain paranoid for `0.*` crates * Most paranoid versions :) * Updated aes and using published version of blake3 Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com> |
||
|
|
c9dce0c1da |
Feature/consumable bandwidth (#766)
* Set actual value for bandwidth Also put it as a public attribute, such that it can be actively used by the credential consumer * Switch from sending Attribute structs to sending the actual attribute bytes over the wire * Add atomic bandwidth value to gateway * Consume bandwidth based on the mix packet size * Use Bandwidth struct for specific functionality * Move bandwidth code outside the dependency path of wasm client * Use u64 instead of AtomicU64, as the handling is not parallel |
||
|
|
2789ee8f18 |
Update coconut-rs and use hash_to_scalar from there (#765)
Failed tests are due to some nightly issue, not related to this PR |
||
|
|
219c45a352 |
Updated cosmos-sdk (#761)
* Updated cosmos-sdk * Re-exposing more things |
||
|
|
a274edffba |
Feature/nymd client integration (#736)
* 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 |
||
|
|
28e55c6de6 |
Hang coconut issuance off the validator-api (#679)
* 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
|
||
|
|
abb4537551 |
Switch from wasm-timer to fluvio-wasm-timer... (#735)
... which addresses the problem from https://github.com/Amanieu/parking_lot/issues/269 by taking the unmerged workaround of https://github.com/tomaka/wasm-timer/pull/13 , as wasm-timer appears to be unmaintained. |
||
|
|
4ac95ad8cf |
Explorer API - add port check and node description/stats proxy (#731)
* explorer-api: move mix node client operations into a package * explorer-api: add port test for mixnodes with cache for results * explorer-api: add `humantime-serde` dependency * explorer-api: mix node API proxy This fixes mixed-content responses when using the mix node API from the network explorer. An in-memory cache protects the explorer API from over-querying the http API on the mix node. * explorer-api: adjust naming * explorer-api: fix up self refs * explorer-api: add method to state to get a mix node by identity key * explorer-api: add cached http resource to proxy the `/description` and `/stats` http api resources to allow the network explorer do https requests for the mix node api resource avoid mixed content requests * explorer-api: set default mix node cache time to 30 minutes * explorer-api: make clippy happy * explorer-api: add CORS with wide open configuration * explorer-api: fixes from review feedback * explorer-api: move port check test into separate function * explorer-api: use `rocket-cors` that is pinned in the `validator-api` and remove custom CORS handler |
||
|
|
ebeac73f30 |
Rust nymd/cosmwasm client (#724)
* Using forked cosmwasm * Basic wallet functionalities * WIP * Generic abci_query method * More API stubs with some semi-working code * More API stub work * Moving from fork of cosmos-rust to the upstream * Implemented most sign-less cosmwasm client methods * Full contract upload with log parsing * Implemented most of remaining methods on signing client * Some initial cleanup on existing code * Feature-locking nymd client * Better type for base account * Pagination handling * Searching transaction by concrete hash * basic search_tx * More cleanup * Disabled default validator-client features on wasm client * Fixed account conversion * Fixed typo in cargo.toml * Moving back to main cosmos-sdk repo * Re-exported connect functions * comment * Wallet no longer storing signing keys * Went back to the trait approach * Example stub of future API * Removed needless borrow * Fixed starting page * Fixed typo * Using centralised config defaults |
||
|
|
aaa4378b33 | Updated used sphinx dependency to the most recent revision (#722) | ||
|
|
b36ca2c4f1 |
Add Network Explorer API (#720)
* Adding the explorer API * Added explorer-api to workspace * Re-jigged explorer api cargo paths * Fixed compiler warnings * Removing unused code * network-explorer-api: configure state with env var API_STATE_FILE or fall back to default value of `explorer-api-state.json` * network-explorer-api: updates to `Cargo.lock` file after rebasing * network-explorer-api: make clippy happy |
||
|
|
2db79de722 |
Feature/superbuild (#719)
* Adding build script * Added build dependencies * Cleaned up build.rs * Restored validator-api to default workspace * Removed split for validator-api build in github ations * Don't build validator API on Windows * Remove validator-api Cargo.lock * Remove fmt from the conditional steps Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com> Co-authored-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> |
||
|
|
043ca9a63e | Updated versions to 0.11.0 | ||
|
|
c1808ae692 | Update to RC 0.11.0-rc1 | ||
|
|
e5afd54ce0 |
Feature/node status api (#680)
* 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 |
||
|
|
25d2af3b04 | Changed Layer serde behaviour for easier usage (#686) | ||
|
|
8f4b5ab4c7 | Updating default settings to get the next testnet up | ||
|
|
0fd203371d | Using specific commit of rocket cors (#678) | ||
|
|
973c30592f |
Use cached topology for clients (#674)
* 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 |
||
|
|
4a86b24ff5 |
Use rocket 0.5-rc1, remove rocket-contrib (#672)
* Use rocket 0.5-rc1, remove rocket-contrib * Revert thread_rng * Continue on error for beta as well * Add Drazen to authors * Remain paranoid for unstable crates * fmt again :/ * Most paranoid versions |
||
|
|
8f98de4abc |
Feature/validator api config (#671)
* Modified NymConfig trait to make id optional * Basic validator-api config definition * Optionally using the config during startup + flag to enable monitoring |
||
|
|
f08f19cd86 |
Rework validator client requests (#667)
* Rework validator-client to avoid &mut * Comment * More logging, sleep * Fix wasm build * My clippy missed this |
||
|
|
57df77a995 |
Layer selection (#664)
* mixnode: Remove layer computation from mixnode The layer is currently computed locally. This should be moved to the validator, and the mixnode should find this information via a query. Until the query is actually processed, we keep the layer field as None. Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * contracts: Compute layer of bonding mixnode Predictably compute the best layer of a bonding mixnode by putting it on the layer with the fewest mixnodes and, in case of equality, with the smallest index e.g. layer 1 is better then layer 3 if both have the fewest mixnodes. The layer received from the client app is regarded as a preferred option and is only accepted if the number of nodes on the preferred layer is not bigger then the one on the best layer. Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * contracts: Add tests for layer selection Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * mixnode: Upgrade from 0.10.2 to 0.10.3 The config file is changed so that it's only containing the layer if the layer exists. Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * contracts: Move the layer from MixNode to MixNodeBond Remove the option of a client app to propose a preferred layer. Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * contracts: Move from u64 to Layer representation Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * contracts: Remove Layer::Invalid as it no longer makes sense... ... because layer choice is now present only in the contract. Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * contracts: Move layer selection algorithm in `choose_with_fewest` method Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * mixnode: Remove layer altogether Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * mixnode: Refactor upgrading system Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * mixnode: Remove layer from template as well Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> * Remove invalid field from LayerDistribution Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> |
||
|
|
343c55f981 |
Validator API server (#665)
* 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 |
||
|
|
b30f11ed7a | Rename network-monitor (#662) | ||
|
|
31f567f1ef |
Use thiserror for validator-client (#658)
* Use thiserror for validator-client * cargo fmt * Move comment * CI |
||
|
|
e06e7aa8f3 |
mixnode: Add tests for upgrade to 10.0.2
Add a positive and a negative unit test for upgrading to 10.0.2. Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> |
||
|
|
4d701be053 |
mixnode: Add location to describe command
Removed location from the init output and added it as input in the describe command. Because this creates a different format of the description file, the patch version number must also be increased. Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net> |
||
|
|
4e03759c0f |
Feature/cosmwasm 0.14.1 update (#653)
* 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 |
||
|
|
82def1349f |
Feature/stats endpoint (#631)
* Idea for stats endpoint * Introduced /stats endpoint replacing sending data to metrics server * Removed metrics client * Removed old metrics file * cargo fmt |
||
|
|
abc5a58b19 | Version bumps | ||
|
|
190d3c4972 |
Feature/add node description api (#605)
* Starting to build out node descriptions * Renamed the mod to node_description instead of descriptor * Returning results loaded from file * Taking user input for node describe command * Readline without new dependencies * Adding input format hint * Making sure the node can still start even when the descriptor file isn't there yet * Adding some additional runtime checks * Removing -dev from minimum node version * Removing initial :: on serde * Fixing comment on the /description endpoint * Swapped json for toml * Being a bit more specific with my startup message. * Cleaning up path building * Nicer runtime checks * Put path building inside the file methods |
||
|
|
ea62d01e65 |
Feature/updated network monitor (#604)
* 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 |
||
|
|
a8299e867d |
Feature/ping timings (#603)
* WIP * WIP for time measurement * In theory working sender and listener * Further additions + main.rs for local testing * Further improvements + config builder * Initial integration into mixnode * Verifying mixnode version * 1.52+ clipy warning * 1.54 nightly clippy fixes * Changed HTTP Api to bind to the same ip as used for mix packets * Changed measurements to instead write to shared object * Required dependencies * Connecting with the http api * Updated mixnode common rand dependency |
||
|
|
7dc4d653c2 |
Feature/add rocket (#600)
* Added rocket at a git tag * Adding Rocket to the mixnode * Verloc route now in place * Adding an http api startup notification * Updated version number to 0.10.1-dev * Fixing clippy warnings * Compressing split a bit * Adjusted used version of js-sys Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com> |
||
|
|
e8e966b67a |
Feature/multiple validator endpoints (#583)
* Rust half done * Removed the temporary 'test' * Using multiple validator endpoints in the javascript client * Dont attempt any switches with a single validator endpoint * Removed the unused temporary function * Updated validator-client version |
||
|
|
af8360f363 | Updated old 0.9.2 versions to 0.10.0 | ||
|
|
fd55eb678c | Displaying address of the client on init (#573) | ||
|
|
6a1c2fa5dd |
Feature/cli signing (#566)
* Adding hex output and coloured terminal output crates * Adding a `sign` command to the mixnode * IntelliJ's non-use of rustftm is non-IntelliJent. Whitespace commit. * Removing hex, using base58 everywhere. |
||
|
|
2be0ab6474 |
Feature/upgrade update (#551)
* Native client upgrade command capable of upgrading to 0.10.0 * Ibid for the socks5 client * Mixnode upgrade command for 0.10.0 * Fixed clippy warnings * Gateway upgrade command for 0.10.0 * Removed unused import |
||
|
|
596bc76cc6 |
Chore/dependency updates (#549)
* 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 |
||
|
|
9e0bb80163 |
Feature/topology conversion (#536)
* Removed reputation field from existing topology * ibid for registration time * Basic bond to topology conversion * Made existing tests compilable * Added owner and stake fields to mix and gateway topology entries * Moved node conversion to topology crate * Added mixnet contract field to clients configs * topology refresher trying to use new validator * Removed clients depepdency on the old validator client * Removed mixnode dependency on the old validator client * Removed gateway dependency on the old validator client * Removed location field fron mixnode and gateway configs * Removed incentives address from mixnodes and gateways * Cargo.lock changes * Ignoring clippy warnings originating from codegen from JsonSchema * no longer formating string with a literal |
||
|
|
67c92b3e56 |
Feature/validator client rust (#532)
* Moved definition of mixnet contract common items to separate module * Removed schemars dependency from being wasm32 specific * Moved query responses to the shared module * Fixed tests due to differerent import paths * Updated dashmap in other crates to help with once_cell version selection * Reexporting coin and humanaddr * Deserializing response from validator * Deserializing smart result directly to specific type * Ability to query for mixnodes and gateways from rust * Fixed compilation warning due to updated dashmap |
||
|
|
4ca40fd3bc |
Feature/initial mixnet contract (#515)
* 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 |