* create service providers route
* make request for well known service providers
* fetch and display service providers
* service provider overview
handle undefined data
fix linting
fix type
* use full width column
* update tooltips for routing and average score
* fix up table alignment
fix lint errors
* add node_performance to explorer api response for mixnodes
* use mixnode node_performance for avg and lastest values
* move stake sat to top table
fix lint errors
* update stake saturation text color
* ability to specify custom TopologyProvider in TopologyRefresher
* topology provider builder method for base client
* ability to take manual control over topology
* wasm fixes
* added topology injection to nym-sdk API
* added examples to nym-sdk and exposed additional helper methods
* oak-2
* oak-8
* oak-13
* oak-15
* oak-18
* Minor clippy nit
* 2023-01-13-OAK-6
* 2023-01-13-OAK-3
* 2023-01-13-OAK-13
Implemented via direct dependency on cw2 and calling the appropriate code on migration
* Removed few instances of password being unecessarily copied
* 2023-01-13-OAK-10
* 2023-01-13-OAK-12
* 2021-09-13-JP-S-NYM-02
* 2021-09-13-JP-S-NYM-03
* Removed further instances of needlessly copying the mnemonic
* 2021-09-13-JP-O-PROT-03
* 2021-09-13-JP-S-NYM-01*
*: we still have one vulnerability on 'time' pulled from chrono via sqlx. However, apparently its usage is fine... Having said that, I'd still recommend removing all dependencies on chrono, but this will require some database migrations...
* 2023-01-13-OAK-11 (#3009)
* wip
* Introducing the concept of starting epoch transition in `nym-api`
* split epoch operations into multiple files
* epoch operation failure recovery
* sending rewarding transactions in correct order
* tests and fixes due to epoch state progression
* lint
* missed rebasing import changes
* Setting cw2 contract version during first migration run
* calling 'reconcile_epoch_events' at least once
* Made message to BeginEpochTransition more consistent with other variants
* Merge layer assignment updates
---------
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* nym-api: cache updates as node performance
* nym-api: update get mixnode avg_uptime endpoint
* nym-api: mixnode report to use cached data
* nym-api: annotate gateway bond with node performance
* nym-api: gateway report to use cached data
* wip
* Add get_gateway_avg_uptime
* Add comment
* update NR gateways to include node_performance on frontend
* use node_performance values on frontend
* fixup select gateway from list
* fix up lint errors
---------
Co-authored-by: fmtabbara <fmtabbara@hotmail.co.uk>
* wip
* new option to select gateways based on latency
* further changes for wasm-compatibility
* post rebase fixes + clippy
I know, I should have probably included them properly during rebasing ¯\_(ツ)_/¯
* android change
* wasm: the gift that keeps on giving
* revamped calculation of spendable coins and behaviour of stakes
* added new queries to the VestingQueryClient
* fixed return types for the query client
* updated wallet commands
* updated common commands
* 🔥 removed dead and commented out code
* comment regarding the 'state_dump_decoder'
* query for withdrawn coins
* Rename to nym-task
* Update imports to use nym_task
* Update to nym_task in explicit module prefix
* Touchups and rustfmt
* rustfmt
* crate metadata
* fix nym-connect-android
* network-requester: replace websocket with mixnet client
* network-requester: mini tidy
* network-requester: add info line about own address
* network-requester: update to nym-crypto rename
* Add new route and initial UI
* allow IdentityKeyFormField to have a small size option
* add disabled prop to the shared IdentityKeyFormField component
* defined custom gateway type
* use custom gateway in state
* set and validate custom gateway in settings page
* validate user gateway when moving away from page
* use storage
* hide gateway input when inactive
* add explorer link to settings page
* nym-sdk: remove unneeded function
* rust-sdk: rework send api a bit
* rust-sdk: add send_wait without impl
* fix doc test failures
* more doctest fixes
* feat(nc-android): fit the design to mobile
* refactor(nc-android): resync with nc desktop
* fix(nc-android): tauri version
* refactor(nc-android): resync with nc desktop (rust)
* chore(nc-android): format code
* chore(nc-android): bump version
* add button animations
* pulse and disable button on connecting/disconnecting status
* update button component story
* disabled hover on connecting/disconnecting
* add transition delay
fix up overflow
* Add resharing parameter
* Fix equality of dealers and members
* Contract resharing handling
* Dealer verification unit test
* Dealing commit unit test
* Epoch state unit tests
* Fix clippy
* Fmt
* Query initial dealer data
* Resharing nym-api changes
* Implement the mockups for nym-api dkg tests
* Dealing test
* Vk unit test
* Fix skipping vk submission
* Fix clippy
* Missing dealing for noninitial resharing dealer
* Check master vk holds after resharing on nym-apis
* Update changelog
* Fix clippy
* chore(nc-android): prepare for production build
* refactor(nc-android): remove dead code
* feat(nc-android): update native color theme
* feat(nc-android): update native color theme
* build(nc-android): fix rfd version issue
* build(nc-android): fix dist dir no such file error
* fix(nc-android): post rebase changes
* added additional workspace-wide dependencies
* Added conditional serialization on 'BinaryBuildInformationOwned'
* initial framework for service provider messages
* updated request/response tags to account for existing variants of Socks5Message
* handling legacy deserialization
* another serialization revamp to account for legacy version
* legacy client working with versioned network requester
* socks5 client deserializing responses into updated structures
* using new structures for sending in socks5 client
* SendRequest wrapper for Request::Send variant
* created named fields for all variants of 'ControllerCommand'
* Versioning socks5 requests + moving to proper Socks5Request struct
* Updated backwards compatible Socks5Response
* unused imports
* poc ServiceProvider trait
* wip
* implemented 'ServiceProvider' trait on the Network Requester
* Socks5RequestError
* added properly serialized ErrorResponse to ControlResponse
* fixed version serialization + feature selection
* handling of version control requests
* improved SocksProxyError by providing more concrete variants and removing generic case
* got rid of ServiceProviderClient trait and wrote simple example showing control requests
* tests for serialisation backwards compatibility
* post-merge fixes due to method renaming
* enum boxing to make clippy happier
* making sure to not drop buffer channel when starting `DirectClient`
* Using nym-sdk in the example
* Replaced printing version to stdout with proper log call
* reduce window size
* use new highlight color
* use react router
* render new routes
* remove old help page
* render app routes
* update connection status UI
* remove service provider info
* remove unneeded additional step
* render title from route
* experimental warning as component
* render connection page
* nym-connect: connectivity status improvements (#2915)
* connect: keep track of connectivity state
* nym-connect: query connection state
* nym-connect: function for kicking of the health check task
* rustfmt
* nym-connect: extract out into function
* nym-connect: extract out events.rs
* add app version to menu page
* help page content and style updates
* update guide content
* use layout component on disconnect page
* handle gateway issues
* only show info modal once after connecting
* power button colors
* update stories and button colors
---------
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Remove `--all-features` from the clippy command because
1. with the removal of `cocunut` it's not really needed
2. the new `mobile` flag is a bit hacky and mutually incompatible with
some existing configs
* feat: adding routing score on gateway list
* feat(explorer): adding routing score on gateway list
* feat(explorer): add routing score on gateway list
* connect: keep track of connectivity state
* nym-connect: query connection state
* nym-connect: function for kicking of the health check task
* rustfmt
* nym-connect: extract out into function
* nym-connect: extract out events.rs
* Setting default 'id' if not provided
* Modified 'NymConfig' to always require 'id'
* moved creation of nym-api directories away from 'override_config'
* missing optional id usage in nym-connect
* changelog
* Removed default value for '--id' argument
* WASM Client: simplify sending of custom messages by always setting headers and a mime-type for the content
* Use rollup to bundle the web worker script to support more downstream bundlers
The WASM bundle is embedded as a base64 encoded resource and loaded synchronously, because this is the only mechanism widely supported to load WASM inside a web worker currently. Hopefully in the future this can be changed to pure modules.
* Suppress errors in build script
* Add Parcel 2.0 example
* WASM client: fix tests
* Update SDK docs and images
* wasm-client: add method to validate a recipient's address
* Revert "Removing unused prestart"
This reverts commit cbeac10383.
* Revert "Removing pointless dependency build command from TypeScript SDK example"
This reverts commit 0e0a62938d.
* Add typing for React 18
* Improve README files
Co-authored-by: Mark Sinclair <mmsinclair@users.noreply.github.com>
* clients: make surb storage more flexible
- in the rust-sdk we make the surb storage generic and pluggable, with
the fs_backend the default.
- make it possible to disable fs_backend at runtime
* Add comment
* changelog: add note
* client-core: tidy up some minor things
* Reset contract state when dkg needs rerun
* Reset nym-api for rerun
* Gateway updates signer APIs at runtime
* Fix clippy
* Add epoch id
* Use IndexedMap for shares
* Query with epoch id
* Add Clone to client traits
* Pass nyxd client instead of api data
* Get the specific epoch vk
* Make wasm work
* Remove wasm test runs
As there are no wasm tests and the target_arch macros are not compatible
with the cargo test environment, we can safely remove (for now) the wasm
test target runs.
* Put epoch_id in storage pk
* Gateway uses old keys but current verifiers
* Add group contract to env
* Move group msg in common
* Only run DKG if part of group
* Clippy test
* Rename wasm_storage to wasm_mockups
* Update changelog
* Changed `listening_address` to `websocket_address` to make things a bit more clear
Stricly speaking, service providers don't "listen" on a port, they make
an outbound connection to a websocket which is already listening on the
provided port on localhost.
* Using un-imported network_defaults module name as it fits nicely
and reduces guessing as to what's going on in the code
* Using full module path for logs
* Some minor renames and extractions
* Fixing a few clippy warnings about double references
* Ripped the allowed_hosts module out into separate module files
* Removing old comment
* Removing unused import
* Knocking down visibility on function
* Docs on OutboundRequestFilter
* Removing a function that doesn't justify its existence
* Keeping struct with its impl
* Renamed a few modules
* Smoothing and rearranging code, no big changes
* It's now possible to inject a standard allowed_list
* Logging all standard allowed domains at network requester startup
* Fixing printed comment
* task dependency
* unifying some startup code and passing TaskClient around
* graceful shutdown handling for mix socket listener
* graceful shutdown handling for clients listener
* graceful shutdown handling for packet forwarding
* unified waiting for interrupt across binaries
* made 'validate_bech32_address_or_exit' into a function that returns proper Result
* printing formatted message on main error
* fixed failing test
* removed duplicate code that should have been gone ages ago
* ibid
* removed biased selection for authenticated handler
* minor refactoring to 'ensure_config_version_compatibility'
* new react and reactdom packages in wallet
* new react and reactdom packages in root
* new react and reactdom packages in nym connect
* new react and reactdom packages in root
* update react and reactdom for explorer
* react and react-dom upgrade for ts-packages
remove unused import
fix linting error
* use custom FC typing
move typings folder
* fix type error
* Fixed typo in node_status_cache constant
* ibid
* Moved some caching stuff around so I can see what depends on what
* Finishing merge of conflicted files
* Minor smoothing
* Got cache reads working for circ supply and refactored common cache
* Refactored nyxd client usages to make things bit more clear
* Moved caching support stuff into the support folder
* Moved storage code into support module
* Removed dead code
* Tweaks
* Handling cases a little more nicely in circulating supply api
* Renamed nymd_client to nyxd_client
* Pulled CacheNotification into the caching support module
* Pulled some domain-specific helpers out of cache refresher
* Moving some more helper methods out of the cache refresher
* Deleting unused code
* Extracted a few more functions out of the cache refresher
* A few comments as breadcrumbs
* Renaming the anemic "helpers" to "node_sets"
* Renaming the validator_cache module to nym_contract_cache
* Renaming nym contract cache stuff to make things clearer
* Renamging a few things in comments
* Renaming validator_cache to nym_contract_cache
* foomp
* Started refactoring http and cli
* Extracted cli arg parsing into its own module
* Cleanup
* Extracted start methods into various modules to clean main up
* WIP commit
* Build working, swagger not
* Fixed swagger docs metadata
* Removed log statement
* Circulating supply cache now working with simple logic
* Fixed up circulating supply method names
* Starting to work in some (wrong) constants
* Documented the cache
* Renaming circulating-supply route
* nym-api compiling after the rebasing
but most likely not fully working yet
* removed unused imports
* only starting RewardedSetUpdater if the config flag is set
* nym-api compiling with coconut feature
* removed redundant process_runner
* removed generic aspect of nym-api nyxd::Client
* signle entry point for starting nym_contract_cache
* do not eagerly grab instances of managed state
* inlining openapi route spec
* CirculatingSupplyResponse type
* fixed compilation of coconut tests
* calculating circulating supply based on mixmining reserve and vesting tokens
* separated different variants of caching intervals
* allow nym-api to specify address of the vesting contract
* fixed types export
* renamed the query on the vesting contract
* reorganised startup procedure and made all start methods independent from rocket
* cleaned up startup procedure for nym-api
* startup checks for rewarding permisssions
* updated changelog
* added config flag to control whether circulating supply should be updated
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
* set up ui for gateway performance in nym-connect
remove duplicated imports
* set and reset (when necessary) gateway performance
* remove unneeded useEffect
* remove log
* set up ui for gateway performance in nym-connect
* reset gateway performance state periodically
* remove duplicated imports
* set and reset (when necessary) gateway performance
* align gateway performance text left
* checks for existing staking account
* removed code for v2 migration
* using stronger types for storage keys
* Added type alias for the storage key and documented each `Map`
* remove the hacky way of storing staker information
* allow the staking address account to perform delegations with the additional msg argument
* new unit tests
* updated client code
* modified migrate msg to explicitly require confirming having performed manual checks
* re-ordered arguments
* wip
* Introduced paged queries for getting list of all vesting accounts and for amount of vesting coins
* Added the queries to VestingQueryClient trait
* Added default implementations to all trait queries
* Fixed naming for the vesting coins query
* Helper functions for dealing with paging
* Updated changelog
* Defined OptionalSet trait
* extended the trait to handle environment
* sample implementation for the gateway
* implementation for mixnode
* Added the same feature to nym-api config + made some config types stricter
* fixed compilation and linter issues
* keeping track of parsing error
* attempt at using the trait for the client configs
* Streamlined more arguments
* Removed deprecation on setters
* fixed incorrect test constructor
* missed rebase fixes
* Renaming all instances of nymd to nyxd
* Might as well get the changelogs too
* Making it clearer that an ApiClient is a NymApiClient
* Lining up config templates with struct keys on gateway
* Changed the last references to validator_urls to nyxd_urls
* Fixed up a few type errors after refactoring
* Changed the changelog
* Fixed typo in changelog
* Further instances of renaming 'nymd' + introducing additional clap aliases
* updated environmental variables and allowed usage of deprecated variants
* missing occurences of coconut-locked environmental variables
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* fixed all uses of deprecated clap methods
* updated all uses of clap to 4.0
* unified obtaining build information
* moved around the imports
* Moved all nym-api arguments to ApiArgs and simplified parsing
* Using common shutdown signal code
* Using clap for parsing Vec<Url>
* stricter validation of socks5-client arguments
* ibid for the native client
* ibid for the gateway
* ibid for the mixnode
* clippy
* Renamed "address" argument in "sign" command to "wallet-address"
* Ability to optionally describe mixnode with command line arguments
* renamed 'validators' arguments to 'nym-apis' in mixnode binary
* cleaned up gateway validator-related url arguments
* fixup! Renamed "address" argument in "sign" command to "wallet-address"
* renamed 'use_anonymous_sender_tag' to 'use_anonymous_replies'
* 'nymd_endpoints => 'nymd_validators'
* more consistency for nymd_validators and nym_apis urls arguments
* updated changelog
* initial ui for test my node
use svg for node path
add stories for test my node
* add initial rewards calculation
* update validation for rewards playground
* init playground with default values
* get node uptime
* get mixnode reward estimation
* calculate saturation
calculate stake saturation
* Make ComputeRewardEstParam derive Debug
* set active set to be always true
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
* Preserve information about original transmission lanes when buffering reply packets
* Attempting to send partial data in 'handle_send_reply' if we don't have enough surbs immediately
* Display logging of reply surb request target
* promoted reply_controller to a directory
* moved channels and messages to separate file
* simplifications due to rust 1.66
* Using a shoarthand for obtaining connection_id
* made TransmissionBuffer generic
* Moved transmissaion buffer to a higher level directory + defined wasm helpers
* Using transmission buffer in reply controller
* Using the pending replies size in lane lenghts queries
* fixed an out of bounds use of fragments
* Fixed dropped channel in getting lane queue length
* Fixed an edge case failure for reply retransmissions
* measuring (and logging) time it takes to obtain lane lenghts
* decreased logging level
* Removed non-wasm lock on total_size
- add logging and clear local storage menu items
- bump nym-connect version
- add app version number
- add reset trigger when clearing SP storage
- bump tauri version (nym-connect and nym-wallet)
- fix webpack config for prod builds
- new selector for services, with an advanced section for service providers
* initial ui for test my node
use svg for node path
add stories for test my node
* add initial rewards calculation
* update validation for rewards playground
* init playground with default values
* get node uptime
* get mixnode reward estimation
* calculate saturation
calculate stake saturation
* Make ComputeRewardEstParam derive Debug
* set active set to be always true
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
* Add dkg epoch
* Make epoch state advancement dependent only on time
* Nym api tries advancing the dkg epoch state
* Update the time table a bit
It still needs to be changed before production, as the sign-up timeframe
needs to be something like a few days.
* Update changelog
* Fix tests
* Fix clippy after rustc update
* socks5: send network-requester error in status channel
* Minor tidy
* task-manager: send status msg to indicate ready
* changelog: add note
* coconut/tests: fix clippy for rustc 1.66
* checking for correct surb metadata on db load
* archiving corrupted database on load and attempting to start fresh session instead
* checking for data corruption by looking at flush timestamp
* Moving public import to separate section
* Defaulting to 'false' value for 'send_anonymously' in socks5 config if not present
* Created method to change all empty core client config fields to their default values
* Using default values for surb reply storage in 'run' command if left unset
* Renaming validator-api to nym-api
* nym-api: simplified crate name
* Added nym-api rename to changelog
* Changed some output messages
* Renamed validator-api-requests to nym-api requests
* Removing more references to validator-api-requests
* Additional lockfile name changes after full build
* Removing mistakenly added merge files
* ibid
* ibid
* Getting rid of ref to validator_api deep inside validator-client
* Fixing file storage paths
* Renaming struct function names referring to validator_api
* Simplifying struct init
* Fixed up all other instances of nym_api.
* Renaming validatorApi to nymApi in TypeScript client for consistency
v
* Found a few more Rust instances
* Changed examples in TypeScript SDK
* Found one more instance of the use of validator instead of nym apis
* Aliasing config key name for deserialization to preserve compatibility with old configs
* cleaned up MixProcessingError
* Added Error impl to (hopefully) all error enums in the codebase
* Replaced all occurences of error("{0}") with error(transparent)
* Changelog entry
* Feature/multi surbs (#1796)
* bunch of wip with focus on serialization
* Being able to send normal data (NO SURBS yet) to yourself again
* Fixed RepliableMessage deserialization
* Recovering data from surb messages
* Extracted common code in sphinx payload construction
* Cleanup within received buffer
* requesting, sending and using additional reply surbs
* Following discussion with @simonwicky, removing sender proof and decreasing size of sender tag
* Made sender tag more easily configurable
* Refactoring of message creation
* Propagating reply surb acks but not retransmitting them yet
* Surb retransmissions
* requesting additional surbs from the retransmission flow
* correctly determining the point of requesting additional surbs
* Ability to use socks5 (and network requester) with surbs
* Improved surbs retranmsission reliability
* naive way of not over-requesting surbs
* wip on tag storage
* Improved error propagation for message construction
* Requesting more surbs for stale entries
* Better controlling the point of having to request additional surbs
* Using pseudorandom sender tag instead of a hardcoded one
* First cleanup round in MessageHandler
* Error cleanup and if simplification
* Assigned a more permanent name to the ReplyController
* Removed PendingReply redundant type
* Made socks5 client less eager to over-send reply surbs
* 'anonymous' field on socks5 client to decide whether to use surbs or attach address
* Dead code and import removal in client-core
* Updating ClientRequest variants
* Adjusted decision threshold for requesting more surbs
* Native client cleanup
* Made socks5 client usage of surbs configurable
* Restored statistics in network requester
* Validator-api compiles once again
* Further improved surb request logic
* boxing the recipient in controller requests
* Removal of hardcoded values in favour of propagating them from the config
* more validation during surb requests
* Fixed ClientRequest::Send deserialization
* Added length checks for request deserialization
* post-merge formatting
* Unit tests once again compile and pass
* controlling retransmission_reply_surb_request_size from config
* More Recipient boxing action
* Requesting additional reply surbs for retransmission BEFORE dipping below the threshold
* Making clippy generally happier
* Wasm client compiles (but might not yet work correctly)
* Feature/use expect instead of panicking (#1797)
* Implementation of 'Debug' on 'RealMessage'
* expect with failed channel name instead of throwing empty panics
* Introduced Debug trait constraint in ProxyRunner
* Derive Debug for socks5_requests::Message
* Fix decrypting stored received msg (#1786)
* Fix decrypting stored received msg
* rustfmt
* Moving binary message recovery to separate function
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* real_traffic_stream: reduce frequency of status print (#1794)
* Properly defined unnamed errors
* Dealing with previously ignored errors
* logging improvements
* Removed old example code
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
* Missing changelog entry for multi-surbs (#1802)
* Making anonymous sender tag human readable (#1801)
* Created wrapper with string serialization for AnonymousSenderTag
* Using Display implementation of AnonymousSenderTag for logs
* Using Display implementation of MessageRecoveryError when logging (#1803)
* Using Display implementation of MessageRecoveryError when logging
* Updated changelog
* Defined socks5 client startup flag to enable reply-surb communication (#1804)
* Feature/persistent surbs data (#1835)
* prototyping wip
* Implemented ReplyStorageBackend trait for the sql-backed storage
* Storing correct surb threshold
* using correct database path
* Starting surb persistent storage in native and socks5 clients
* loading or creating fresh surb storage in socks5 and native clients
* making clippy happier + fixing config templates
* Creating status table on database rotation
* Completed the 'Empty' ReplyStorageBackend
* feature locking wasm-incompatible bits and pieces
* Feature/develop resync (#1844)
* Network-requester: throttle inbound connections (#1789)
* Return and handle ClientRequest::LaneQueueLenghts
* Pass lane queue lengths to inbound future
* Remove unused self reference
* Request lane queue lengths periodically for all open connections
* Add timeouts
* Rename to ConnectionCommandSender and Receiver
* Rename to client_connection_tx/rx
* Fix wasm build
* Replace bool with enum
* rust: bump required version to 1.65 in some crates that need it
* Add step to release GH actions (#1792)
* feat: add a release step to nym contracts GH action
* feat: add shrinking the size of wasm
* Possibilty to change gateway ws listener (#1779)
* add: set gatewayListener
* Update types.ts
* Update worker.ts
* Update contracts-build.yml
* real_traffic_stream: reduce frequency of status print (#1794)
* Update wallet and connect lock files (#1793)
* client-core: add warning when delay multiplier is larger than 1
* Fix decrypting stored received msg (#1786)
* Fix decrypting stored received msg
* rustfmt
* Moving binary message recovery to separate function
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Feature/use expect instead of panicking (#1797)
* Implementation of 'Debug' on 'RealMessage'
* expect with failed channel name instead of throwing empty panics
* Introduced Debug trait constraint in ProxyRunner
* Derive Debug for socks5_requests::Message
* Make connection_id optional in ClientRequest::Send (#1798)
* changelog: add missing entry for fixing message decrypt in gateway-client
* websocket-requests: fix length check before deserialize (#1799)
* Fix export dkg contract addr (#1800)
* Export dkg contract for mainnet when no config file present
* Remove redundant env files
* nym-cli: improve error reporting/handling and changed `vesting-schedule` queries to use query client instead of signing client
* Feature/gateway client protocol version (#1795)
* Introducing concept of gateway protocol version
* Remove version-based gateway filtering
* Fixed the unit test
* grammar
* Set build on latest release on schedule event
* Added nightly build workflow on second latest release
* socks5: if any task panics, signal all other tasks to shutdown (#1805)
* socks5: signal shutdown on error
* Mark as success
* Tidy
* Reduce wait to 5 sec
* Replace unwrap with expect
* Two more unwraps
* Update changelog
* client-core: less frequent status logging (#1806)
* Feature/nym connect UI updates (#1784)
* create custom titlebar
* create help page
* create generic modal component
* create separate connection time component
* link to shipyard docs
* move timer to separate component and update connection status component usage
* use separate component for copying ip and port details
* only show infomodal once after connection
* set service provider on tauri side
* Emit events when stopped
* listen and unlisten for tauri events
* connect: add trace log to get_services
* Add back CI notifications
* Update README
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Co-authored-by: Mark Sinclair <14054343+mmsinclair@users.noreply.github.com>
* Use default serde value for upgrade (#1807)
* fix ui overflow bug (#1808)
* update nym connect error text (#1809)
* set flag to false
* Fix wait_for_signal_and_error on win (#1811)
* Add socks5-client changes to nym-connect changelog
* Fix links in nym-connect changelog
* More entries in nym-connect CHANGELOG
* Fix typo in changelog
* Update CHANGELOG.md
* Experiment/client refactoring (#1814)
* experimenting with extracting more common client code
* drying up the wasm client
* allowing some dead code for the time being
* fixed formatting in nym-connect
* made socks5 client inside nym-connect immutable
* made clippy a bit happier
* hidden away target locking for recv timeout
* New transactions for increasing amount of pledged tokens
* unit tests
* Added an option to pledge extra tokens through the vesting contract
* Introduced wallet endpoints for new operations
* Using updated pledge cap in the vesting contract
* Bumping version numbers
* Changelog for v1.1.1
* Bumping final version numbers for 1.1.1
* Bumping nym-cli version, missed it last time
* socks5-client: SOCKS4a support (#1822)
* socks5-client: SOCKS4a support
* Tidy
* Fix a few errors in socks5 client and network-requester (#1823)
* Fix two unwraps in socks5 and network-requester
* Make sure client task never sends shutdown signal
* Fix panic on getting socks version
* wip
* connecting to the back and making the requests work
* display details modal
* logs removal
* Feature/pledge more (#1679)
* New transactions for increasing amount of pledged tokens
* unit tests
* Added an option to pledge extra tokens through the vesting contract
* Introduced wallet endpoints for new operations
* Using updated pledge cap in the vesting contract
* Changelog update
* nym-connect: update lock file
* avoid mix tokens pools
* amount error
* envs/mainnet: update to latest mixnet contract and nymd validator url
* validator-api: add missing shortform for --config-env-file (#1830)
* gateway-client: handle shutdown listener (#1829)
* WIP
* WIP: try another approach
* WIP
* Reworked
* Tidy
* fix
* validator-api: remove storage dependency in contract cache (#1685)
* validator-api: remove storage dependency in contract cache
* validator-client: update detailed routes
* contract_cache: forward to new endpoints for compat
* Move reward_estimate
* client: add --no-cover and update --fastmode (#1831)
* adding a oversaturaded bonding more modal
* common/task: extract out spawn_with_report_error (#1837)
* stop panic on failed buffer request
* Compilable wasm client
* Enabled hard error on lack of gateway-client protocol version
* Missing generic parameter for ClientCoreError in BackendError
* Removed unused imports
* Additional wasm feature locking
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Co-authored-by: Fran Arbanas <arbanasfran@gmail.com>
Co-authored-by: cgi-bin/ <6095048+sven-hash@users.noreply.github.com>
Co-authored-by: Mark Sinclair <14054343+mmsinclair@users.noreply.github.com>
Co-authored-by: Bogdan-Ștefan Neacşu <bogdan@nymtech.net>
Co-authored-by: Mark Sinclair <mmsinclair@users.noreply.github.com>
Co-authored-by: Raphaël Walther <raphael@nymtech.net>
Co-authored-by: Fouad <fmtabbara@hotmail.co.uk>
Co-authored-by: Gala <calero.vg@gmail.com>
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
* Making native client wait for shutdown
* Marking dead test code
* Feature/multi surbs invalidation (#1858)
* Cleaned up RealMessagesController constructor
* introduced config field for maximum_reply_surb_age
* Handling edge-case reply-surb failures
* invalidating old reply surbs
* Removing old reply keys from cache
* Invalidating old reply keys
* missing config changes
* logging created tag details
* Fixed clippy warning in test code
* Saving reply key timestamp on data flush (#1867)
* Remove panic if ReconstructedMessagesReceiver is closed (#1868)
Instead log error and return because presumably the shutdown procedure has started
* Feature/multi surbs basic wasm interface (#1846)
* Added builder to wasm client
* missing wasm_bindgen macros
* Added constructor macro on GatewayEndpointConfig
* Attempting to use updated wasm client api
* Removing dead code
* Exposed other messages types in wasm client
* cleanup in js-example
* Changed 'self_address' to be a method call
* Removed needless borrow when cloning an Arc
* Improving arguments in 'on_message' callback
* fixed wasm-client dependency/features
* Reverted hard requirement for gateway protocol presence (#1875)
* Feature/prioritise surb retransmission (#1883)
* Improved error messages + removed redundant variants
* Improved estimation of 'expected_forward_delay'
* Removed old wasm-specific startup code
* Removed old unused reply-related code
* hacky and temporary way of buffering retransmission data
* offloading retransmission reply handling to ReplyController
* fixed linter errors + rebuffering retransmission data on failure
* Removed unused fields from wasm client debug config
* Chore/v1.2.0 update (#2666)
* Network-requester: throttle inbound connections (#1789)
* Return and handle ClientRequest::LaneQueueLenghts
* Pass lane queue lengths to inbound future
* Remove unused self reference
* Request lane queue lengths periodically for all open connections
* Add timeouts
* Rename to ConnectionCommandSender and Receiver
* Rename to client_connection_tx/rx
* Fix wasm build
* Replace bool with enum
* rust: bump required version to 1.65 in some crates that need it
* Add step to release GH actions (#1792)
* feat: add a release step to nym contracts GH action
* feat: add shrinking the size of wasm
* Possibilty to change gateway ws listener (#1779)
* add: set gatewayListener
* Update types.ts
* Update worker.ts
* Update contracts-build.yml
* real_traffic_stream: reduce frequency of status print (#1794)
* Update wallet and connect lock files (#1793)
* client-core: add warning when delay multiplier is larger than 1
* Fix decrypting stored received msg (#1786)
* Fix decrypting stored received msg
* rustfmt
* Moving binary message recovery to separate function
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Feature/use expect instead of panicking (#1797)
* Implementation of 'Debug' on 'RealMessage'
* expect with failed channel name instead of throwing empty panics
* Introduced Debug trait constraint in ProxyRunner
* Derive Debug for socks5_requests::Message
* Make connection_id optional in ClientRequest::Send (#1798)
* changelog: add missing entry for fixing message decrypt in gateway-client
* websocket-requests: fix length check before deserialize (#1799)
* Fix export dkg contract addr (#1800)
* Export dkg contract for mainnet when no config file present
* Remove redundant env files
* nym-cli: improve error reporting/handling and changed `vesting-schedule` queries to use query client instead of signing client
* Feature/gateway client protocol version (#1795)
* Introducing concept of gateway protocol version
* Remove version-based gateway filtering
* Fixed the unit test
* grammar
* Set build on latest release on schedule event
* feat(wallet): buy page bootstrap
* feat(wallet-buy): tutorial
* feat(explorer-api): add route to fetch nym terms&cdts
* Revert "feat(explorer-api): add route to fetch nym terms&cdts"
This reverts commit 876f752697d89061b1904e1ddd1d5bcb7045dc5c.
* feat(wallet-buy-nym): buy page new ui
* fix(wallet-buy-nym): signature output
* feat(wallet-buy-nym): update signature modal ui
* Added nightly build workflow on second latest release
* socks5: if any task panics, signal all other tasks to shutdown (#1805)
* socks5: signal shutdown on error
* Mark as success
* Tidy
* Reduce wait to 5 sec
* Replace unwrap with expect
* Two more unwraps
* Update changelog
* client-core: less frequent status logging (#1806)
* Feature/nym connect UI updates (#1784)
* create custom titlebar
* create help page
* create generic modal component
* create separate connection time component
* link to shipyard docs
* move timer to separate component and update connection status component usage
* use separate component for copying ip and port details
* only show infomodal once after connection
* set service provider on tauri side
* Emit events when stopped
* listen and unlisten for tauri events
* connect: add trace log to get_services
* Add back CI notifications
* Update README
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Co-authored-by: Mark Sinclair <14054343+mmsinclair@users.noreply.github.com>
* Use default serde value for upgrade (#1807)
* fix ui overflow bug (#1808)
* feat(wallet): add link to nym exchange interface
* update nym connect error text (#1809)
* refactor(wallet): clean code
* set flag to false
* Fix wait_for_signal_and_error on win (#1811)
* Use config URLs in clients before the env values (#1813)
* Add socks5-client changes to nym-connect changelog
* Fix links in nym-connect changelog
* More entries in nym-connect CHANGELOG
* Fix typo in changelog
* Update CHANGELOG.md
* Experiment/client refactoring (#1814)
* experimenting with extracting more common client code
* drying up the wasm client
* allowing some dead code for the time being
* fixed formatting in nym-connect
* made socks5 client inside nym-connect immutable
* made clippy a bit happier
* hidden away target locking for recv timeout
* New transactions for increasing amount of pledged tokens
* unit tests
* Added an option to pledge extra tokens through the vesting contract
* Introduced wallet endpoints for new operations
* Using updated pledge cap in the vesting contract
* Feature/dkg integration tests (#1815)
* DKG contract e2e test
* Refactor to the same format as other contracts
* Vk share tests
* State tests
* Dealings tests
* Dealer tests
* Api dkg tests
* Fix path to contract after refactor
* Fix test target clippy
* Bumping version numbers
* Changelog for v1.1.1
* Bumping final version numbers for 1.1.1
* Bumping nym-cli version, missed it last time
* socks5-client: SOCKS4a support (#1822)
* socks5-client: SOCKS4a support
* Tidy
* Fix a few errors in socks5 client and network-requester (#1823)
* Fix two unwraps in socks5 and network-requester
* Make sure client task never sends shutdown signal
* Fix panic on getting socks version
* wip
* connecting to the back and making the requests work
* display details modal
* logs removal
* Feature/pledge more (#1679)
* New transactions for increasing amount of pledged tokens
* unit tests
* Added an option to pledge extra tokens through the vesting contract
* Introduced wallet endpoints for new operations
* Using updated pledge cap in the vesting contract
* Changelog update
* Feature/pledge more (#1679)
* New transactions for increasing amount of pledged tokens
* unit tests
* Added an option to pledge extra tokens through the vesting contract
* Introduced wallet endpoints for new operations
* Using updated pledge cap in the vesting contract
* Changelog update
* Fix a few errors in socks5 client and network-requester (backport) (#1824)
* Fix two unwraps in socks5 and network-requester
* Make sure client task never sends shutdown signal
* nym-connect: update lock file
* fix(wallet): typo
* avoid mix tokens pools
* fix(wallet): typo
* fix(wallet): buy tutorial ui responsivness
* amount error
* envs/mainnet: update to latest mixnet contract and nymd validator url
* validator-api: add missing shortform for --config-env-file (#1830)
* gateway-client: handle shutdown listener (#1829)
* WIP
* WIP: try another approach
* WIP
* Reworked
* Tidy
* fix
* validator-api: remove storage dependency in contract cache (#1685)
* validator-api: remove storage dependency in contract cache
* validator-client: update detailed routes
* contract_cache: forward to new endpoints for compat
* Move reward_estimate
* Node family management (#1670)
* Family management messages
* Add family queries
* Add queries to client
* Layer assignment message
* Paged family queries, annotate mixnodes with family
* Add layer assignments to epoch operations
* Remove family layer peristence
* Add NotImplemented error for kick
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Fixed layer distribution skewness check (#1766)
* client: add --no-cover and update --fastmode (#1831)
* adding a oversaturaded bonding more modal
* Use better naming on gateway credential handling (#1834)
* Fix comment in configuration file (#1836)
* common/task: extract out spawn_with_report_error (#1837)
* nym-connect/changelog: add note about disconnect fix
* Feature/simplify credential binary (#1841)
* Expose name of standard directories
* Use one command instead of two
* nym-connect: append error to failed message (#1839)
* nym-connect: append error to failed message
* changelog: add note
* Fix clippy
* remove extra checks to display vesting schedule(#1826)
* Set explorer to use rpc.nymtech.net
* update versions for platfrom, nym-connect and nym-wallet to v1.1.2
* changed nym-connect version to 1.1.1
* Modifying changelog for v1.1.2
* changed nym-connect version to 1.1.2
* update nym-connect CHANGELOG
* Updated changelog for wallet
* Feature/wallet content updates (#1825)
* fix up balance screen
* fix up app bar and nym logo alignment
* fix up delegation action icon font weight
* fix up bond page
* Corrected env variable name in workflows
* Use config URLs in clients before the env values (#1813)
* Feature/dkg integration tests (#1815)
* DKG contract e2e test
* Refactor to the same format as other contracts
* Vk share tests
* State tests
* Dealings tests
* Dealer tests
* Api dkg tests
* Fix path to contract after refactor
* Fix test target clippy
* Node family management (#1670)
* Family management messages
* Add family queries
* Add queries to client
* Layer assignment message
* Paged family queries, annotate mixnodes with family
* Add layer assignments to epoch operations
* Remove family layer peristence
* Add NotImplemented error for kick
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Fixed layer distribution skewness check (#1766)
* Use better naming on gateway credential handling (#1834)
* Fix comment in configuration file (#1836)
* nym-connect/changelog: add note about disconnect fix
* Feature/simplify credential binary (#1841)
* Expose name of standard directories
* Use one command instead of two
* Fix clippy
* feat(wallet): buy page bootstrap
* feat(wallet-buy): tutorial
* feat(explorer-api): add route to fetch nym terms&cdts
* Revert "feat(explorer-api): add route to fetch nym terms&cdts"
This reverts commit 876f752697d89061b1904e1ddd1d5bcb7045dc5c.
* feat(wallet-buy-nym): buy page new ui
* fix(wallet-buy-nym): signature output
* feat(wallet-buy-nym): update signature modal ui
* feat(wallet): add link to nym exchange interface
* refactor(wallet): clean code
* fix(wallet): typo
* fix(wallet): typo
* fix(wallet): buy tutorial ui responsivness
* update versions for platfrom, nym-connect and nym-wallet to v1.1.2
* changed nym-connect version to 1.1.1
* Modifying changelog for v1.1.2
* changed nym-connect version to 1.1.2
* update nym-connect CHANGELOG
* Updated changelog for wallet
* Resolve merge conflicts
* Update qa-qwerty.env
* Fixed URL to branch
* changed ubuntu-latest on GH actions to ubuntu-20.04
* docs: updated changelog for contracts release v1.1.2 and updated versions of mixnet and vesting contracts as well
* Add ignore to dkg expensive tests (#1856)
* introduce minimize button in custom title bar (#1843)
* refresh balance after sending tokens (#1857)
* Feature/fix client multi cred consume (#1859)
* Mark consumed credentials in the db
* Add signature log
* Fix wasm mock Storage trait
* Fix clippy
* Feature/verify bte proof (#1866)
* Update lock file
* Include bte public key verification
* Wallet - Buy, copy changes (#1855)
* use mix_id for account to get correct pending cost event (#1869)
* use mix_id for account to get correct pending cost event
* Properly add consumed to table (#1870)
* nym-connect: update Cargo.lock to 1.1.2
* Clients: save init results to JSON (#1865)
* clients: output results of init to json
* Remove leftover dbg
* Tidy
* Fix nym-connect
* Client: dedup setup gateway during init (#1871)
* clients: dedup gateway setup logic
* nym-connect: extract out print_save_config
* Feature/dkg state to disk (#1872)
* Add PersistentState
* Save and load state to/from disk
* If in progress, don't continually write the same state
* Fix tests and add serde one
* Update changelog
* Fix clippy
* network-requester: return error on socket close (#1876)
* network-requester: return error when the socket closes
* changelog: add note
* clients: further deduplicate init code (#1873)
* client-core: move init helpers to module
* WIP
* socks5: return error instead of terminate in init
* Extract out reuse_existing_gateway_config
* rustfmt
* Remove comment out code
* nym-connect: use setup_gateway
* Linebreak
* changelog: update
* Tweak log
* rustfmt
* client: pick from old lanes probabilisticlly (#1877)
* Pick from old lanes probabilisticly
* changelog: update
* clients: dont panic in base client gateway client handling (#1878)
* client-core: fix some panics related to gateway-client
* changelog: update
* fix
* changelog: fix wording
* Use default mainnet values when nothing is specified (#1884)
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Co-authored-by: Fran Arbanas <arbanasfran@gmail.com>
Co-authored-by: cgi-bin/ <6095048+sven-hash@users.noreply.github.com>
Co-authored-by: Mark Sinclair <14054343+mmsinclair@users.noreply.github.com>
Co-authored-by: Bogdan-Ștefan Neacşu <bogdan@nymtech.net>
Co-authored-by: Mark Sinclair <mmsinclair@users.noreply.github.com>
Co-authored-by: Raphaël Walther <raphael@nymtech.net>
Co-authored-by: pierre <dommerc.pierre@gmail.com>
Co-authored-by: Fouad <fmtabbara@hotmail.co.uk>
Co-authored-by: Gala <calero.vg@gmail.com>
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
Co-authored-by: Drazen Urch <drazen@urch.eu>
Co-authored-by: durch <durch@users.noreply.github.com>
Co-authored-by: Tommy Verrall <60836166+tommyv1987@users.noreply.github.com>
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Co-authored-by: Fran Arbanas <arbanasfran@gmail.com>
Co-authored-by: cgi-bin/ <6095048+sven-hash@users.noreply.github.com>
Co-authored-by: Mark Sinclair <14054343+mmsinclair@users.noreply.github.com>
Co-authored-by: Bogdan-Ștefan Neacşu <bogdan@nymtech.net>
Co-authored-by: Mark Sinclair <mmsinclair@users.noreply.github.com>
Co-authored-by: Raphaël Walther <raphael@nymtech.net>
Co-authored-by: Fouad <fmtabbara@hotmail.co.uk>
Co-authored-by: Gala <calero.vg@gmail.com>
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
Co-authored-by: pierre <dommerc.pierre@gmail.com>
Co-authored-by: Drazen Urch <drazen@urch.eu>
Co-authored-by: durch <durch@users.noreply.github.com>
Co-authored-by: Tommy Verrall <60836166+tommyv1987@users.noreply.github.com>
* nym-connect: send status messages from socks5 task to tauri backend
* common/tasks: fix spawn for wasm
* Tidy up some names
* make status channel bounded in case there is no one listening
* Add PersistentState
* Save and load state to/from disk
* If in progress, don't continually write the same state
* Fix tests and add serde one
* Update changelog
* Fix clippy
* DKG contract e2e test
* Refactor to the same format as other contracts
* Vk share tests
* State tests
* Dealings tests
* Dealer tests
* Api dkg tests
* Fix path to contract after refactor
* Fix test target clippy
* New transactions for increasing amount of pledged tokens
* unit tests
* Added an option to pledge extra tokens through the vesting contract
* Introduced wallet endpoints for new operations
* Using updated pledge cap in the vesting contract
* Changelog update
* New transactions for increasing amount of pledged tokens
* unit tests
* Added an option to pledge extra tokens through the vesting contract
* Introduced wallet endpoints for new operations
* Using updated pledge cap in the vesting contract
* Changelog update
* DKG contract e2e test
* Refactor to the same format as other contracts
* Vk share tests
* State tests
* Dealings tests
* Dealer tests
* Api dkg tests
* Fix path to contract after refactor
* Fix test target clippy
* experimenting with extracting more common client code
* drying up the wasm client
* allowing some dead code for the time being
* fixed formatting in nym-connect
* made socks5 client inside nym-connect immutable
* made clippy a bit happier
* hidden away target locking for recv timeout
* create custom titlebar
* create help page
* create generic modal component
* create separate connection time component
* link to shipyard docs
* move timer to separate component and update connection status component usage
* use separate component for copying ip and port details
* only show infomodal once after connection
* set service provider on tauri side
* Emit events when stopped
* listen and unlisten for tauri events
* connect: add trace log to get_services
* Add back CI notifications
* Update README
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Co-authored-by: Mark Sinclair <14054343+mmsinclair@users.noreply.github.com>
* Implementation of 'Debug' on 'RealMessage'
* expect with failed channel name instead of throwing empty panics
* Introduced Debug trait constraint in ProxyRunner
* Derive Debug for socks5_requests::Message
* Fix decrypting stored received msg
* rustfmt
* Moving binary message recovery to separate function
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Return and handle ClientRequest::LaneQueueLenghts
* Pass lane queue lengths to inbound future
* Remove unused self reference
* Request lane queue lengths periodically for all open connections
* Add timeouts
* Rename to ConnectionCommandSender and Receiver
* Rename to client_connection_tx/rx
* Fix wasm build
* Replace bool with enum
* Implementation of 'Debug' on 'RealMessage'
* expect with failed channel name instead of throwing empty panics
* Introduced Debug trait constraint in ProxyRunner
* Derive Debug for socks5_requests::Message
* Fix decrypting stored received msg
* rustfmt
* Moving binary message recovery to separate function
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Return and handle ClientRequest::LaneQueueLenghts
* Pass lane queue lengths to inbound future
* Remove unused self reference
* Request lane queue lengths periodically for all open connections
* Add timeouts
* Rename to ConnectionCommandSender and Receiver
* Rename to client_connection_tx/rx
* Fix wasm build
* Replace bool with enum
* Save to disk coconut keypair
* Check verification keys of the other signers
* Post verification key to chain
* Add multisig propose/vote for vks
* Execute the proposal
* Parse announce address argument
* Gateway uses chain data
* Network requester uses chain data
* Native&socks5 clients use chain data
* Credential client signature uses chain data
* Remove redundant api endpoints
* Undo debugging logging
* Fix some tests
* Fix clippy
* Fix wasm client and contract test
* More contract clippy
* Update CHANGELOG
* Use a bigger expiry period then the testing one
* Setup with 1 epoch and full test that skips key update
* Remove a bunch of epoch code
* Remove unnecessary map from one element vector
* Remove tau, epoch and lambda_t
* Removed lambda_t completely
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* fix undelegating with vesting tokens
* update version number
* update tauri conf version
* fix(wallet): explorer links
* refactor(explorer): rename mixnodeidentitykey to mixid
* fix(wallet): broken explorer links
Co-authored-by: fmtabbara <fmtabbara@hotmail.co.uk>
Co-authored-by: pierre <dommerc.pierre@gmail.com>
* WIP: QA network details
* Initial implementation to multiplex socks5-client sends
* Introduce TransmissionLane enum
* WIP
* WIP: client requests connection id
* WIP
* mulitplex somewhat done
* Remove closed lanes
* WIP: connection handling over ws
* Remove unused published active connections shared data
* Start on status timer
* Max number of connections, and prune
* Some tidy
* Remove commented out code and tweak log
* Tidy
* Tweak log output
* Rename to TransmissionBuffer
* Use number of msg sent instead of time to rank age of lanes
* Create client-connections crate
* Remove waker call that probably are not needed
* Extract out some types from real traffic stream module
* Revert to develop qa.env
* Tweak comments, tidy for getting ready to merge
* Update changelog
* wasm client compile fixes
* rustfmt
* Bump version of nym-cli to 1.1.0 and move CHANGELOG to standalone file
* Bump version of nym-connect to v1.1.0 and update CHANGELOG
* Bump version of nym-wallet to v1.1.0 and update CHANGELOG
* Bump version of explorer-api to v1.1.0
* Bump versions of binaries (native-client, socks5-client, mixnode, gateway, network-requester) to v1.1.0
* Bump version of validator-api to v1.1.0
* Bump version of mixnet contract to v1.1.0 (vesting contract already v1.1.0 from #1472)
* Bump Nym Platform version to v1.1.0 and update CHANGELOG
* Update CHANGELOG.md
* Update CHANGELOG.md
* Updated changelog with v2-related changes
* Update CHANGELOG.md
Co-authored-by: Mark Sinclair <mmsinclair@users.noreply.github.com>
Co-authored-by: Fouad <fmtabbara@hotmail.co.uk>
Co-authored-by: Pierre Dommerc <dommerc.pierre@gmail.com>
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
Co-authored-by: Jess <31625607+jessgess@users.noreply.github.com>
* refactor delegations list to include separate delegation and pending delegation item
* show tooltip on delegation with unbonded node
* feat(wallet): add operating cost in delegations list
* add additional state to check for unbonding event
* disable actions when pending unbond event
* add request and type guard for pending unbond event
* add mixnode_is_unbonding to delegation item type
Co-authored-by: pierre <dommerc.pierre@gmail.com>
* socks5: wait to close buffer
This is the fix proposed by @simonwicky in
https://github.com/nymtech/nym/issues/1701
* socks5: fix typo in patch
* socks5: fix tests
* socks5: add type for returned data and index
* socks5: make closed_at_index an Option
* changelog: add note
* changelog: update
* client: add error type to native client, and start handling them
* client: handle two more error cases
* changelog: add note
* socks5: add error type and start handle run errors
* network-requester: add some error types
* rustfmt
* changelog: update note
* network-requester: remove unused import
* socks5: wait to close buffer
This is the fix proposed by @simonwicky in
https://github.com/nymtech/nym/issues/1701
* socks5: fix typo in patch
* socks5: fix tests
* socks5: add type for returned data and index
* socks5: make closed_at_index an Option
* changelog: add note
* access gateway report from node status api
* Create 4 response types for gateway and mixnode uptime and status
* Add the three remaining validator-client functions
* display gatways routing scores
* handle undefined gateway report
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
* Rename to ExtendedPacketSize32
* Add two more extended packet sizes
* Update config handling for new packet sizes
* Update wasm-client
* Changelog: update
* wasm-client: fix ref
* Switch use enum instead of string for config
* Disallowing the use of unwraps and expects in vesting and mixnet contracts
* Removed dodgy unwraps from the mixnet contract
* Removed dodgy unwraps from the vesting contract
* Removed unwraps/expects from common contracts crate
* ...but adding the unwraps in tests
* Add per account pledge caps
* Address PR comments
* Update CHANGELOG
* No cap if no locked
* Fail account creation if taking account already exists
* Delegated free should be counted from vesting period start
* simple multi-node simulator
* Extending simulator with multi-node feature + testing against known good values
* Mixnet contract test fixes
* comment explaining the epsilon choice
* Renamed the type alias NodeId to MixId and fixed some usages
* fix(wallet): bonding context
* fix(wallet): remove ip field (type error)
Co-authored-by: pierre <dommerc.pierre@gmail.com>
* Compiles but runtime time fails
* wip
* Beginning of clean-up - creation of config to keep things together
* Removed unused module
* Removed hardcoded constants
* Easier way of sending binary messages
* WIP cleanup before machine switch
* Upgrade wasm-bindgen to 0.2.83
* Fixed compilation warnings for wasm client
* all clients compiling without warnings
* disabling topology refresh in wasm
* Added a config option to disable loop cover traffic stream
* config changes
* Make webassembly work in a web worker
- `wasm-timer` modified to work in web worker
- add worker target to webpack
- add client to call from HTML
- update README to build WASM for bundling (this does not build ES modules)
* Restored topology refreshing
* correctly polling items in the wasm delay_queue
* Allow client to read up to 8 messages at once from gateway connection (#1669)
* Allow client to read up to 8 messages at once from gateway connection
* Importing tokio::select in wasm32 target
* Updated changelog
* missing imports
* Introduced disable_main_poisson_packet_distribution to force real_traffic_stream to disable poisson sending (#1664)
* Introduced disable_main_poisson_packet_distribution to force real_traffic_stream to disable poisson sending
* Updated changelog
* Adjusting default settings
* Introduced a client-configurable option to force it to use extended packet size
* local adjustments
* Removed warning associated with receiving extended packets
* Minimal v2-required changes
* Updated changelog
* explicitly allowing clippy drop_non_drop
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
* Introduced a client-configurable option to force it to use extended packet size
* cargo fmt
* Removed warning associated with receiving extended packets
* Updated changelog
* Made config.toml values in validator-api take precedence over mainnet defaults
* Updated mixnode and gateway configs with similar priority adjustments
* Changelog
* Replaced serde renames to aliases
Ideally I would have removed all serde macros, but then it would have broken existing QA deployments - perhaps we should do it later
* Renamed 'node_id' in Delegation to 'mix_id'
* Further renamings of 'node_id' to 'mix_id' in various places
* Update to latest set of selection chance buckets
* Fixup after rebase
* Lock file update
* storybook update
* update storybook
Co-authored-by: Gala <calero.vg@gmail.com>
* Query for node stake saturation
* Queries for currently pending events
* Rewarded set query
* Moved ContractState to common types
since it's being returned as a result of one of the queries on the mixnet contract and thus it needs to be accessible outside the contract itself
* Cleaend up storage initialisation
* started restoring unit tests
* Removed attached 1ucoin for cross-contract execute msgs
* wip
* query for rewarding details of a mix node
* Changes for mixnodes and gateways
* Furher progress on v2 changelog(-ish) description
* wip
* first version of the description
* mixnode bonding queries tests and fixes
* ibid for storage
* MixnodeEventType enum + created events for missing mixnode txs
* tests for adding new mixnode
* Additional mixnode-related tests + bug fixes
* Display for Percent
* Bunch of tests for try_reward_mixnode
* More tests and fixes
* ibid
* tests for updating rewarding params + important bug fix
* Started removing unused imports
* rewarding queries tests + undelegation bugfix
* A lot of todo()-ing and commenting out unimplemented code
* implements https://github.com/nymtech/team-core/issues/113
* Delegation tests + fixes
* Emiting events by top level interval txs + incorporating limit
* question
* Missing events emissions
* removed some code duplication
* wip
* pending delegation tests
* Vesting contract update
* More tests (and fixes) for pending events txs
* Restored gateway tx tests
* Another cleanup iteration
* removed redundant comment
* Unit tests, fixes and simplifcations for interval-related txs
* Unit tests for helper functions
* Interval queries unit tests
* Test for correct contract initialisation
* Another round of cleanup
* Work on mixnet_query_client trait
* mixnet_signing_client trait
* Removed redundant methods
* Slowly restoring validator client functionality
* Added deprecated query for mix details by identity
* wip restoration of validator-api
* Work on deprecating validator API routes
* Further validator-api routes
* Restored rest of status api routes
* Resolved all todos in ValidatorApiStorage
There's still bunch left in StorageManager though
* Changed NodeId from u64 to u32
* Updating sql code
* Network monitor internals
* Changed behaviour of full_epoch_id and updated epoch operations
* Fixed sql queries
* [most likely] finished updating rest of the validator API
* Post rebasing fixes
* Feature/rewarding revamp explorer api changes (#1511)
* Changed cache to allow for non-string keys
* Helper method for best-effort conversion of pubkey to nodeid
* Updated validator-api client routes
* Updated routes to use mix-id indexing
* Introduction of deprecated routes callable by identity key
* Fixed mixnode compatibility by changing read node details fields (#1512)
* Fixed bond to topology conversion for client compatibility (#1513)
* Updated 'verify_gateway_owner' to use correct nymd_client method for obtaining gateway details (#1515)
* Updated constructor for ValidatorCacheInner
* Fixed wasm client topology construction
* Run cargo fmt on the entire codebase
* Feature/rewarding revamp wallet backend changes (#1529)
* Updated mixnode-related ts types
* Updated nym-wallet-types
* Updated 'get_contract_settings' and commented out code of other tauri commands
* 'update_contract_settings'
* 'bond_gateway'
* unbond_gateway'
* Utility commands for the transition period
* 'bond_mixnode'
* 'unbond_mixnode'
* Ability to update mixnode cost paramaters
* Mixnode config update
* Updated mixnode_bond_details
It also returns a different underlying type now
* Updated 'gateway_bond_details'
* Obtaining pending operator rewards
* Improved way of obtaining number of mixnode delegators
* simplified error handling in 'fetch_mix_node_description'
* mixnode and gateway ownership queries
* updated get_number_of_mixnode_delegators to use mix_id since we have the conversion utils helper
* mixnode delegation
* undelegating
* Obtaining pending delegator rewards
* Command for obtaining current interval details
* Queries to handle paging for pending events
* Additional level of indirection to pending events to incorporate event id into response
* Wallet compatible pending event types
* Commands fo obtaining pending events
* Re-implemented pending delegation events
* Further work on delegation
* Removed unused imports
* Commands for withdrawing rewards
* Admin-related simulations
* mixnet-related simulation commands
* Validator-api related routes
* Bond-related vesting operations
* Vesting simulations
* Vesting handler for UpdateMixnodeCostParams
* Vesting reward claiming
* Vesting queries
* claim_locked_and_unlocked_delegator_reward
* The massive delegation query
* cleanup
* updated typescript requests
* sorted the new type exports in ts-rs-cli
* Regenerated typescript types
* temporarily ignoring unreachable code in vesting migration
* Updated missed test fixture
* Fixed missing coconut-specific import
* cargo fmt
* Exporting reward-related types
* utility to convert stringified decimal to cosmjs Decimal
* deriving Eq alongside PartialEq
* wip - typescript fixes
* using default operating cost when bonding mixnode
* Using default operating cost when updating mixnode cost params
* most delegation fixes
* Wrapping delegation with node identity
* Added MultiIndex on owner and identity key to unbonded mixnodes
* Support for queries for unbonded nodes by owner or by identity key
* Cargo fmt + ts types update
* feature locking unused imports
* fix(nym-wallet): typing and error (#1548)
* post-rebase fixes
* Changed storage key for new delegations map in vesting contract
* fix(wallet): typing issues (#1562)
* fix(wallet): error UI feedback (#1565)
* clean(wallet): remove useless files (with flamethrowers 🔥) (#1567)
* Changed default_mixnode_cost_params to allow accepting f32 instead
* Revert "Changed default_mixnode_cost_params to allow accepting f32 instead"
This reverts commit fb62a0014f.
* Fixed APY calculation for 0 pledge value
* Don't send rewarding transactions for empty rewarded set
* Fixed mixnode rewarding in validator API
* fix(nym-wallet): profit margin (#1574)
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* Removed todo!() from vesting contract migration since its going to be dealt with differently
* fix(nym-wallet): stake saturation and delegations (#1578)
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): stake saturation percentage
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* fix(nym-wallet): get rid of delegation history
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* fix(nym-wallet): welcome back pending events and delegation menu
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): get rid of delegation history
* Updated typescript side of things
* fix(nym-wallet): welcome back pending events and delegation menu
* fix(nym-wallet): fix clippy
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Updated vesting contract migration to update the mixnet contract address
* feat(wallet): add confirmation/warning modal for unbonding
* Post rebasing fixes
* commented out all code
* Bunch of work in progres, but working simulator
* Removing redundant fields + increased precision to 9decimal places
* deserialization of Percent with value validation
* wip
* Further moving things around + mixnode bonding
* Mixnode unbonding
* Starting restoration on contract state
* Revamping interval
* More work on epoch/interval
* progress on mixnode rewarding
* Moved MixNodeRewarding to rewards storage
* wip on delegations
* Removed concept of periods and historical records and moved cummulative reward ratio directly to delegation
* more wip delegation
* Full delegation flow
* mixnode config updates
* Mixnode cost function updates
* Work on moving mixnode unbonding to post-epoch actions
* Unbonding
* Processing undelegation
* changing cost params
* Uncommented existing gateways features
without much changes so far, however, things like unbonding should probably also go to epoch queue
* ExecuteMsg cleanup
* unit tests for withdrawing rewards against known values
* Transactions for withdrawing rewards
* Transactions for updating various parameters
* First round of post-tx cleanup
* Moved all storage keys to constants.rs
* Using correct initial gateway pledge amount
* Renamed sybil_resistance_percent to sybil_resistance with percent being implicit from the typ
* Starting with contract queries
* Keeping minimal details of unbonded mixnoces
* Checking for owner address rather than rewarding validator when updating rewarding params
* Mixnode-related queries
* Gateway-related queries
* Query for paged unbonded mixnodes
* Delegations queries
* Query for current interval details
* Removed 'fixed' dependency from the mixnet common
* wip on implementing rewards-related queries
* Pending rewards queries
* Query for node stake saturation
* Queries for currently pending events
* Rewarded set query
* Moved ContractState to common types
since it's being returned as a result of one of the queries on the mixnet contract and thus it needs to be accessible outside the contract itself
* Cleaend up storage initialisation
* started restoring unit tests
* Removed attached 1ucoin for cross-contract execute msgs
* wip
* query for rewarding details of a mix node
* Changes for mixnodes and gateways
* Furher progress on v2 changelog(-ish) description
* wip
* first version of the description
* mixnode bonding queries tests and fixes
* ibid for storage
* MixnodeEventType enum + created events for missing mixnode txs
* tests for adding new mixnode
* Additional mixnode-related tests + bug fixes
* Display for Percent
* Bunch of tests for try_reward_mixnode
* More tests and fixes
* ibid
* tests for updating rewarding params + important bug fix
* Started removing unused imports
* rewarding queries tests + undelegation bugfix
* A lot of todo()-ing and commenting out unimplemented code
* implements https://github.com/nymtech/team-core/issues/113
* Delegation tests + fixes
* Emiting events by top level interval txs + incorporating limit
* question
* Missing events emissions
* removed some code duplication
* wip
* pending delegation tests
* Vesting contract update
* More tests (and fixes) for pending events txs
* Restored gateway tx tests
* Another cleanup iteration
* removed redundant comment
* Unit tests, fixes and simplifcations for interval-related txs
* Unit tests for helper functions
* Interval queries unit tests
* Test for correct contract initialisation
* Another round of cleanup
* Work on mixnet_query_client trait
* mixnet_signing_client trait
* Removed redundant methods
* Slowly restoring validator client functionality
* Added deprecated query for mix details by identity
* wip restoration of validator-api
* Work on deprecating validator API routes
* Further validator-api routes
* Restored rest of status api routes
* Resolved all todos in ValidatorApiStorage
There's still bunch left in StorageManager though
* Changed NodeId from u64 to u32
* Updating sql code
* Network monitor internals
* Changed behaviour of full_epoch_id and updated epoch operations
* Fixed sql queries
* [most likely] finished updating rest of the validator API
* Post rebasing fixes
* Feature/rewarding revamp explorer api changes (#1511)
* Changed cache to allow for non-string keys
* Helper method for best-effort conversion of pubkey to nodeid
* Updated validator-api client routes
* Updated routes to use mix-id indexing
* Introduction of deprecated routes callable by identity key
* Fixed mixnode compatibility by changing read node details fields (#1512)
* Fixed bond to topology conversion for client compatibility (#1513)
* Updated 'verify_gateway_owner' to use correct nymd_client method for obtaining gateway details (#1515)
* Updated constructor for ValidatorCacheInner
* Fixed wasm client topology construction
* Run cargo fmt on the entire codebase
* Feature/rewarding revamp wallet backend changes (#1529)
* Updated mixnode-related ts types
* Updated nym-wallet-types
* Updated 'get_contract_settings' and commented out code of other tauri commands
* 'update_contract_settings'
* 'bond_gateway'
* unbond_gateway'
* Utility commands for the transition period
* 'bond_mixnode'
* 'unbond_mixnode'
* Ability to update mixnode cost paramaters
* Mixnode config update
* Updated mixnode_bond_details
It also returns a different underlying type now
* Updated 'gateway_bond_details'
* Obtaining pending operator rewards
* Improved way of obtaining number of mixnode delegators
* simplified error handling in 'fetch_mix_node_description'
* mixnode and gateway ownership queries
* updated get_number_of_mixnode_delegators to use mix_id since we have the conversion utils helper
* mixnode delegation
* undelegating
* Obtaining pending delegator rewards
* Command for obtaining current interval details
* Queries to handle paging for pending events
* Additional level of indirection to pending events to incorporate event id into response
* Wallet compatible pending event types
* Commands fo obtaining pending events
* Re-implemented pending delegation events
* Further work on delegation
* Removed unused imports
* Commands for withdrawing rewards
* Admin-related simulations
* mixnet-related simulation commands
* Validator-api related routes
* Bond-related vesting operations
* Vesting simulations
* Vesting handler for UpdateMixnodeCostParams
* Vesting reward claiming
* Vesting queries
* claim_locked_and_unlocked_delegator_reward
* The massive delegation query
* cleanup
* updated typescript requests
* sorted the new type exports in ts-rs-cli
* Regenerated typescript types
* temporarily ignoring unreachable code in vesting migration
* Updated missed test fixture
* Fixed missing coconut-specific import
* cargo fmt
* Exporting reward-related types
* utility to convert stringified decimal to cosmjs Decimal
* deriving Eq alongside PartialEq
* wip - typescript fixes
* using default operating cost when bonding mixnode
* Using default operating cost when updating mixnode cost params
* most delegation fixes
* Wrapping delegation with node identity
* Added MultiIndex on owner and identity key to unbonded mixnodes
* Support for queries for unbonded nodes by owner or by identity key
* Cargo fmt + ts types update
* feature locking unused imports
* fix(nym-wallet): typing and error (#1548)
* post-rebase fixes
* Changed storage key for new delegations map in vesting contract
* fix(wallet): typing issues (#1562)
* fix(wallet): error UI feedback (#1565)
* clean(wallet): remove useless files (with flamethrowers 🔥) (#1567)
* Changed default_mixnode_cost_params to allow accepting f32 instead
* Revert "Changed default_mixnode_cost_params to allow accepting f32 instead"
This reverts commit fb62a0014f.
* Fixed APY calculation for 0 pledge value
* Don't send rewarding transactions for empty rewarded set
* Fixed mixnode rewarding in validator API
* fix(nym-wallet): profit margin (#1574)
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* Removed todo!() from vesting contract migration since its going to be dealt with differently
* fix(nym-wallet): stake saturation and delegations (#1578)
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): stake saturation percentage
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* fix(nym-wallet): get rid of delegation history
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* fix(nym-wallet): welcome back pending events and delegation menu
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): get rid of delegation history
* Updated typescript side of things
* fix(nym-wallet): welcome back pending events and delegation menu
* fix(nym-wallet): fix clippy
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Updated vesting contract migration to update the mixnet contract address
* feat(wallet): add confirmation/warning modal for unbonding
* Post rebasing fixes
* Removed deprecation on GetMixnodeDetailsByIdentity
* Fixed nym-cli
* Removed needless borrow
* Updated colorMap and textMap
Co-authored-by: durch <durch@users.noreply.github.com>
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
Co-authored-by: Pierre Dommerc <dommerc.pierre@gmail.com>
* Add a second entry point to the webpack config for the logging window
* tauri operations to show a log window
* LogViewer react component
* Upgrade tauri and use default tauri app menu for MacOS and add `Help` menu with `Show log` entry to show the logging window
* wip
* Proof of concept
* Fix format inside debug with ferm
* Put new menubar and log behind env variable flag
* Remove unused deps
* rustfmt
* Add changelog note
* Fix up imports
* Remove old code
* Improve log viewer
* Remove old code
* Add color to output, even if tauri hides it
* Remove redundant level from tauri log msg
* Since menu bar visible by default, change feature flag name
* Fix up webpack config so correct chunks get injected into entry points and remove inline CSS causing CSP issue
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
This gives type hinting in editors. I can no longer remember why we
didn't set it up like this a long time ago, but it builds and tests
fine. Feel free to revert if it causes any problems.
* Fix compile error
* Expose signing wallet for signing client
* Add stub tauri operation to sign a message with the current account
* feat(wallet): add a request to verify a signature
* feat(wallet): add support to verify from account address
* feat(wallet): add support to verify from account address
* fix(wallet): verify tauri request signature
* wallet-recovery-cli: upgrade clap to 3.2
* Fix compile error
* Expose signing wallet for signing client
* Add stub tauri operation to sign a message with the current account
* feat(wallet): add a request to verify a signature
* feat(wallet): add support to verify from account address
* feat(wallet): add support to verify from account address
* fix(wallet): verify tauri request signature
* Fix deserializtion of U128
* feat(wallet): avoid unwrap
* refactor(wallet):suggested feedbacks
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Co-authored-by: durch <durch@users.noreply.github.com>
* common/socks5: Use thiserror and add copyright notice
* Send allowlist failure msg back to socks5 client
* Add some serde unit tests
* Fix clippy after rustup update
* Update changelog
* Rewarded set updater shutdown (partial) handling
* Shutdown handling in monitor
* Remove shutdown from packet receiver
* Configurable shutdown timeout
* Select on test_run too
* Remove unnecessary await/async
* Add bias to shutdown select and concurrency for big tasks
* Put cpu-bound packet prep on separate thread, to avoid blocking
* Use a better fit timeout value
* Fix clippy warnings
* Update changelog
* Fix wasm client
* Added contract queries for vesting delegations
* Added the queries on NymdClient
* Added account_id to DelegationTimesResponse
* Returning raw u64 as opposed to wrapped Timestamp
* Updated changelog
* validator-api: create node status cache with selection probabilies
Create a node status cache to complement the contract cache. Initially
we store the simulated active set selection probabilities.
* validator-api: add validator cache watch channel
* changelog: add note
* validator-api: clippy fixes
* validator-api: fix clippy
* validator-api: additional fields to inclusion probabilities response
* selection chance: revert back to 3 buckets
* selection chance: revert buckets again
* rustfmt
* validator-api: remove the old get_mixnode_inclusion_probability
* node-status-cache: return error when refreshing
* inclusion-simulator: cap on wall clock time
* node status cache: tidy
* feat(nym-connect): local storage service provider
* feat(nym-connect): local storage service provider
* feat(nym-connect): local storage service provider
* Add some extra height to the window to stop the scrollbar apearing
* Show the service description when selecting a Service Provider
* Bump version
* Update changelog
* fix(nym-connect): hotfix
* fix(nym-connect): hotfix
* fix(nym-connect): wrong disabled state for connection button
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
* feat(wallet-bonding): bonding page, new bond form wip
* feat(wallet-bonding): add node table component
feat(wallet-bonding): new dialog component
* feat(wallet-bonding): node settings flow
* feat(wallet-bonding): bond more flow (done)
* feat(wallet): use confirmation modal component
* feat(wallet-bonding): node menu ui
* refactor(wallet-bonding): bonding flow with new gasFee estimation
* feat(wallet-bonding): unbond with gasFee and request
* refactor(wallet-bonding): switch to simpledialog component to keep modals consistency
* feat(wallet-bonding): fetch mixnode status
* update coin types in new bonding page
* fix displayed denom
* rebuild BondedNodeCard using existing shared components
* create reuseable ActionMenu component
* new mixnode form
* add gateway bond form
* check balance and fetch fee on bond mixnode request
* node settings
* get node description
* fix up rust request
* lint fixes + used NodeTypeSelector component
* temporarily remove estimated operator reward
* update return on rust function
* dont display node name UI if name doesnt exist
* rebase develop
* fix uppercase address bug
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
Co-authored-by: pierre <dommerc.pierre@gmail.com>
* Fix NC filter for domains suffix-only domains
* Update CHANGELOG
* Fix unit test for filter
Some domains might be composed of the suffix only.
There are no nonsense domains, as they can be defined even on the local
machine. The underlying library doesn't resolve them, but rather uses a
fixed list of public suffixes to assess the domains.
* Fix clippy
* feat(wallet): move receive page in modal
* feat(wallet-receive): some ui work
* feat(wallet): simple modal component
show or not the Ok button based on onOk props
* feat(wallet): fix sx props type imports
* Return Err from compound transactions
* Remove malicious nodes migration
* Reduce total delegation, before adding to it
* Blacklist malicious nodes, prevent future bonding
* Blacklisted gets no reward, enable compound
* Add GetBlacklistedNodes message
* Rebase on develop
* Remove TODO
* Clients use env
* Explorer api uses env
* Mainnet and qa env files
* Set CONFIGURED on the mainnet defaulting
* Gateway uses env
* Mixnode uses env
* Wallet error simplification
* Network requester takes only mainnet client address
* Validator api uses env
* Mixnet contract uses denom from instantiate
* Vesting contract uses denom from instantiate
* More contract test refactoring
* Coconut bandwidth contract uses denom from instantiate
* Bandwidth claim contract uses denom from instantiate and remove from Cargos
* More remove from Cargos and one missed DEFAULT_NETWORK
* Refactor some other missed places
* Minor fixes
* Test and clippy fixes
* Update CHANGELOG
* add filters UI
* use filter schema
* filter mixnode based on selected filters
* only show filters on the mixnode page
* use base api to get all mixnodes to avoid setting mixnodes in state
* prevent additional request when status changes
* create isMobile hook
* Add spend credential endpoint to coconut bandwidth contract
* Store spent credentials support
* Add query endpoint for spent credentials
* Proposals allowed only from special (contract) address
* Include check for admin in tests
* Create proposal from CBC
* Refactor into coconut integration tests
* Create proposal with spend credential integration test
* Resolve mixnet warnings
* Refactor to re-enable build
* Call CBC from gateway and remove validator-api workaround
* Include migration for the first deployment of multisig
* Fix bug in proposal id parsing
* Remove more validator-api create proposal code
* Check for InProgress status of credential
* Check the proposed voucher value
* Unwrapping cosmos msg from gateway
* Improve error message
* More nit fixing
* Test getting validator api cosmos address endpoint
* Refactor to prepare for distributed comm channel
* Refactor coconut e2e test for reuse
* Verification of cred endpoint test
* Update CHANGELOG
* Introduced concept of denom details
No longer exposing plain 'DENOM'
Denom registration + conversion
Generating typescript type for DecCoin
'New' API on 'send'
Further WIP work on transforming usages of MajorCurrencyAmount into DecCoin
Further replacements of MajorCurrencyAmount into DecCoin
Attempt at dec-coinifying get_all_mix_delegations
Finished purge of MajorCurrencyAmount
Display for Fee
More unification for conversion methods
Fixed up tests and made clippy happier
Minor post-merge fixes
Removed explicit Arc and RwLock from all tauri commands
Fixed conversion to display coin
More type-restrictive exported denom type
Regenerated rust => ts types
* post-rebase fixes
* update frontend
* fix lint errors
* Adjusted Display implementation of DecCoin to include space between amount and denom
* Adding separate base and display denoms for account
* Fixed account constructor
* Using CurrencyDenom for display_mix_denom
* uppercase denom on frontend
* Changed AutoFeeGrant constructor
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* typescript validator client: add `denom` argument to constructor and a simple test for querying a balance.
Add to yarn workspaces.
* Update CHANGELOG
* Temporarily point cosmrs to PR branch
* Expose grant allowance in client
* Move functions in coconut verifier
* Do execute from gateway
* Explicit fee payment by granter
* Include revoke grant after finishing with the op
* Gateway checks the proposal content before proceeding
* Clippy fixes
* CHANGELOG update
* nym-connect: update package versions to resolve conflict
* nym-connect: add pre-target to build shared packages when building storybook
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
* dark mode for balance page
* nav bar dark mode styles
* test wallet stories modes view
* Action Modals and Simple Modal stories
* Redeem Modals stories
* Delegation Modals
* mode handling
* remove not used code
* updating modal historial after update with develop
* wallet: more modals refactor for storybook
* more refactor
* non use redundant boolean value
* dark mode for balance page
* nav bar dark mode styles
* test wallet stories modes view
* adding missing import
* fixing modals in stories
* Action Modals and Simple Modal stories
* Redeem Modals stories
* Delegation Modals
* wrapper dialog content with a paper
* nym-connect: use monorepo workspace and dependent packages
* nym-wallet: fix up dependencies
* nym-connect: ip and port copy values to clipboard with UI hint in tooltip
* nym-connect: update icons and word mark
* nym-connect: add automatic updater
* nym-connect: update CHANGELOG
* socks5: upgrade clap to latest and use declarateive derive form
* socks5: rustfmt and clippy
* socks5: missing doc strings
* socks5: default values for eth arguments
* socks5: tidy
* client: upgrade native client to latest clap and declerative form
* changelog: add note
* use confirmation modal for successful/failed unbond
* show loading modal when getting fees
* use new back button
* use new confirmation modal component
* add simulate send function
* extract loading modal into its own component
* move appbar component into folder
* add additional prop for making modal list item text bold
* create new send UI and stories
* remove old send page
* use simulated fee in send request
* use new confirmation modal component
* set up transfer token component with fee included
* open transfer modal after balance refresh
* create fee warning component
* use confirmation modal
Comment out 3 failing tests. These have been failing for some time
(forever?), and were beind `ignore` flags. However recently we've
started using `ignore` for slow tests per the suggestion in the Rust
book, so we can't have failing ignored tests anymore.
* github: clippy review annotations for the workspace too
* client-libs: remove unused imports
* client-libs: tweak use dep
* client-libs: try to regroup cfg conditional use items
* Move coconut validator api req out of coconut interface
and expose a new cosmos-address endpoint
* Finish cosmos address endpoint
* Guard under coconut feature gateway & validator-api code
* Update CHANGELOG
* Incorporating GasAdjustment into wallet fee simulation
* Adjusting the gas only a single time
* Hacky implementation of ts_rs on FeeDetails
* changelog
* validator-api: compute and return APY for all mixnode bonds
* validator-api: tidy
* validator-api: handle the absence of storage
* validator-api: some comments
* validator-api: refinements to apy calc
* validator-api: extract out some calculations
* changelog: add note
* Constructing `EpochRewardParams` with proper staking_supply
* Query for current staking supply
* More crate visibility on epoch reward params
* unused import
* Remove duplicate save of epoch_reward_params
* test fixes
* Changelog
* Moved PR references to correct section
* cargo fmt
* Removed old migration code
* Adding simple hardware info reporting to the mixnode HTTP API
* Adding sgx availability as another example field
* Added sysinfo crate for addtitional simple hardware reporting
* Added reporting on number of cpu cores and available ram
* Cleanup of unused struct
* Fixing merge conflict
* Checking for supported system before using sysinfo
* Breaking commit containing additional types
...and a painfully wrong implementation of the SMT processor cores type.
* Handling unavailable brand string
* Fixed getting SMT logical processor count
* Rebase with develop + cleaned up changelog
* unused import
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Make gateway mnemonic optional
* Remove unnecessary timer struct
* Prepare for code reuse
* Use trait for stats collector
* Put trait definition in common crate
* Gateway stats runner
* Custom statistics url arg
* Build & send stats req to url
* Storage support for new stats type
* Make gateway stats opt in
* Test&clippy fixes
* CHANGELOG update
* wip checking ts-package
* adding the validation to the identity form field
* changing the error message
* changing node oversaturated error mss
* adding oversaturated modal blocker
* adding error colour to palette, and styles to basic modal
* wip
* wip
* some refactor
* dont validate field till we have api response
* fix typo
* adding line break
* catch error when node is not valid
* handle error out of the field component
* removing logs
* Adding disableCompoundRewards prop in DelegationsActionsMenu
* Adding disableCompoundRewards to DelegationsActionsMenu
* refactor validation
* Revert some not needed changes
* adding line break
* adding stories
Co-authored-by: fmtabbara <fmtabbara@hotmail.co.uk>
* Add TODO reminders to implement vesting contract checks for operator reward compounding and redemption
* Add tauri operation to compound and redeem for locked and unlocked tokens
* Remove rewards from delegations context
* Claim and compound rewards for rewards context
* Delegations modal handles multiple transactions and can show the vested token balance (when present)
* Integrate changes to reward and delegation contexts
* Remove unused files
* Fix eslint errors
* Regenerate types
* Add tauri operation to undelegate using the mixnet and vesting contracts for a mixnode, producing two txs
* Fix up undelegation for mixed mixnet and vesting contract delegations
* Changelog grooming
* Update changelog
* feat(wallet): style changes to match new design
* fix(wallet): style
* feat(wallet): remove useless color
* feat(wallet): some style changes
in balance page, show entire address
set a small size to avatar account
set vertical alignment to start for page cards
* feat(wallet): fix padding
* Delegation UI:
Update QA vars
fmt
re-map coin type for qa
add correct bech32 address as the network-explorer-api was complaining
clean up
fmt
Delegation components
Show delegation story on paper
Remove actions header from delegations list
Add copy to clipboard for delegation list node ids
Move tooltip
Modals
Extract modal styles
Fix exports
Rewards summary and redeem modal
Factor out simple modal
Delegations actions modals: delegate, delegate more, undelegate
Coin mark and move logo stories
Rust types
React components handle currency
Form field to enter and display an Identity Key
Fix up build order
Update README
Flat buttons
End adornment
Currency form field
Add more props
Export components
Add currency and mixnode fields
Group stories into folders and add flow
Change exports from shared packages to stop webpack bundling issues
Fix logo import
Add mock for tauri api in storybook that shows a console error for operations that are not mocked
Delegations views and routes for wallet
Delegations list show pending delegations and undelegations
wip - delegations page status
Add typescript type checking to storybook webpack config and more mocks for tauri
Add more interstitial states and confirmation modals
Copy change
Move config to inside source tree
Fix up `Console` typings
Add wrapper around Tauri `invoke` that logs operations in development mode
wip
wip
wip
ts-rs: remove old files
ts-rs: update paths to `ts-packages/types`
ts-rs: remove old files
ts-rs: export new types to `ts-packages/types`
Add `MajorCurrencyAmount` to convert to and from TS types for various backend currency types
New crate `nym-types` to provide types for frontend apps (wallet, explorer, etc)
wip
update type imports and fix some lint errors
update packages
update type imports
update type imports
update type imports
update type imports
start pulling out use of minorMajor and majorMinor
update type imports
update import
Add missing types generated by ts-rs
fix types
Adding denom to account
type updates
Handle micro currency denoms
Fix type conversion mistake
Add clean target
eslint: formatting
Update React currency components to use `MajorCurrencyAmount`
Add separators and extra props to currency components
replace currency mapper with denom returning from service
Adjust type while generation is broken
start integrating new CurrencyFormField component
update balance and vesting on client change (not only client address)
Fix up conversion from cosmwasm coin to major currency for minor denoms
Fix up typings and validations to remove more `Coin` usage
fix conflict
fix delegations form
start fixing validation
type update
remove console log
tidy up
remove more unused types
remove more unused types
Fix `Coin` denom to be `minor`
Fix up to minor_cosmos_coin
Fix up send
Remove `Coin` type
Fix up exported types
start delegation UI
more UI work
close actions modal on action select
update label
fix old delegateion form
minor updates
undo change to currency in stringD
Fix up types
Add feature flag for generating typescript
Generate types behind feature flag
Use custom cli tool to export `ts-rs` types
`ts-rs-cli` moves files into place and fix up `Makefile`
Update generations target
Add missing types for generation
Generate typescript types
reorder imports
use make generate-typescript for new types + type import updates
update types
Add delegate with everything
Add get block to nymd client
More conversions
Get a big list of delegations with lots of stuff
Add `avg_uptime_percent`
component api updates
ui updates and fixes
Add delegation history and pending events
Fix up addition
Fix up pending delegation event types
Filter pending delegation events
add history and pending events
set total delegations
rebase
fix breaking type change on delegate page
Fix mixnode mapping
Add back refresh and set periodic refresh
upgrade to react router 6
Add logging
Export new types for gas and transactions
increase container size!
add sendtx type
update onOK to return MAjorCurrencyAmount
align table items
display dash if amount not availble
work on delegate and undelegate
Make serializable
More types
Fix up errors
align item icon
type updates
Add operation to get all pending delegation/undelegation events
Fix up logging
Add more logging
Fix undelegate error
get pending delegation events
remove unused import
* Fix rebase errors
* Integrate fees changes:
- make operations available as requests (typed with any for now, needs changing)
- move `FeeDetails` to `common/types`
- mock `getGasFee()`
* get wallet balance after transactions
* fix duplicate key
* use token pool selector
* update wording
* Created nymd internal coin
* spell delegations correctly!
* Additional From implementations plus a constructor
* try_add
* Changed client API to use the new coin type
* CoinConverter trait
* Made wallet compilable with the recent changes
* Simplified the API by removing the generics in favour of explicit Coin type
* Fixed validator api
* integrate modal divider with modal component
* handle undelegation of locked tokens
* only return events table if there are events
* Fixed up tests and clippy
* Refactored missed coin-generic API methods
* changelog
* refresh on network or client details change
* Bunch of temporary workaround to have wallet working-ish
* Add claim and compound wallet endpoints, proc_macro to generate execute and simulate
* CHANGELOG
* Sort CHANGELOG lines
* PR comments
* allow sorting of pending events
* fix lint errors
* handle page overflow
* handle reedem and vesting redeem requests
* set up compound rewards
* refresh locked tokens on page load
* remove old delegations pages + remove settings modal + update network explorer url
* update validation for hostname (prevent leading spaces)
* add compound success case
* display est fee until new simulations are used
* fix up coin validation
* tommy fixes
* Show app version at bottom of nav
* Show admin page when account matches account id from `.env` file `ADMIN_ADDRESS` map. Value is fetch from GH Actions secrets at build time.
* Update change log
Co-authored-by: tommy <tommyvez@protonmail.com>
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
Co-authored-by: durch <durch@users.noreply.github.com>
* Replace client address with service address
* Copy over the server parts of the statistics server
* Separate API in module
* Rename struct
* Add insertion endpoint
* Remove unused code from network requester
* Box big rocket error
* Remove the feature-specific code
* Construct http req
* Clippy + Cargo.lock update
* Re-added needed sqlx feature
* Wrap http req in ordered msg
* Add http headers
* Move common api functionality into the separate crate
* Make stats server address configurable, especially for testing
* Update changelog
* Fix clippy
* Help command update
* mixnode: add graceful notification to most tasks
* Add note about remaining work
* task/shutdown: add shutdown timer
* changelog: add entry for shutdown
* mixnode: revert some temp changes
* common/task: make sure to use latest tokio
* Add coconut verifier structure for coconut protocol in gateway
* Add endpoint for validator-api cred verification
* Remove unused signature field
* Register new endpoint
* Improve validator-api config handling
* Aggregate verif result from all apis
* Simplify aggregate functions
* Verify cred on apis correctly
* Introduced coconut bandwidth contract to validator client
* Fix rebase double import
* Fix clippy on non-coconut
* Add multisig contract address to validator client
* Refactor Credential struct
* Do bincode magic in the coconut interface
* Implement serialization for credential and remove bindcode
* Fix clippy and don't remove dkg
* Client release funds proposal
* Add wrapper for blinded serial number
Also compare theta with a blinded serial number (in base 58 form)
for future double spend protection.
* Only post blinded serial number to blockchain
* Validator api propose credential spending
* Fix wallet
* Gateway calls proposal creation
* Query for proposal in verify coconut
* Remove db from git
* Verify against proposal description
* Validator apis vote based on verification of cred
* Fix wallet fmt
* Execute the release of funds
* Fix translation between token and bytes
* Update CHANGELOG
* Removed Add/Sub that somehow got brought back in a merge
* Created 'get_old_and_incorrect_hardcoded_fee' to make wallet as it did before
* Brought back all Operation variants just in case
* Created nymd internal coin
* Additional From implementations plus a constructor
* try_add
* Changed client API to use the new coin type
* CoinConverter trait
* Made wallet compilable with the recent changes
* Simplified the API by removing the generics in favour of explicit Coin type
* Fixed validator api
* Fixed up tests and clippy
* Refactored missed coin-generic API methods
* changelog
* Add more data to reward-estimate response
* Fix uptime integer division error
* typo
* Reify tuple response
* Fix uptime calculation
* Use lambda and sigma instead of ticked versions for delegator and operator rewards calculation
* Changelog
* Updated cosmrs
* Simpler fmt::Display for Operation
* Adjusted GasPrice parsing test due to changes in Denom FromStr impl
* Removed direct dependency on cosmrs in the wallet
* Removed TryFrom<GasPrice> for Coin as it didn't make much sense
* disgusting workaround for providing serde for fee
* NymdError improvements
* Ability to simulate "send"
* Removed needless conversions
* Changedi nterface to "normal" send to account for new fee
* Removed outdated imports in tests
* Removal of 'Operation' enum
* Implemented simulate endpoints for all other txs
* Added abci::Data field to ExecuteResult
* optional serde support for ed25519 keys
* optional serde support for x25519 keys
* actually calling dotenv at validator API startup
* Added STATE_DENOM network specific constant
* unit test fixes
* 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
* wallet: add support for validator nymd name
* changelog: add entry for wallt validator name
* rustfmt
* wallet: keep nymd_name entirely on wallet side
* wallet: lint fixes
* adding delegators number info on mixnode details
* add PM, Delegators and Avg. Uptime fields to the node list hardcoded
* make delegations number dynamic
* fixing bg color bug
* wip node info statistics
* adding basic tooltip new section and some ui
* tooltip customisation
* progress bar styles
* remove not used import
* fix info icons color
* remove discord icon
* Economic dynamics stats endpoint on the explorer API with dummy fixture data
* fetching economic-dynamics-stats
* Populating the endpoint with real data aggregated from validator api
* Introduced new cache functionalities
* using explorer-api data
* adding marging profit
* adding average update
* Update network-explorer.yml
* adding more info on mix nodes page
* display only part of wallet and node id
* typo
* remove log
* adding new values on node response and fix a typo
* remove delegators number column
* Endpoints for average mixnode uptime
* remove TODO
* Clippy
* some ui fixes for percentage linear progress
* GitHub Actions: build storybook for the Network Explorer and add to notification
* Fix file extension to `.ts`
* Fix up formatting and types
* Add storybook
* Add story for mix node details economics
* Fix unused warning
* adding percentage symbol on uptime in mix nodes
* Change eslint config
* some refactor
* progress bar story
* wip refactoring
* more refactor
* adding empty state to the story
* change default values for empty state
* refactor naming and progress bar contrast
* adding hardcoded selection chance and update the storybook
* adding selection chance stories
* adding the progress bar back
* tooltip button padding fix
* Endpoints for average mixnode uptime
* Fix unused warning
* Rustfmt
* moking selection chance response and new colors
* remove log
* fix camelCases issue
* remove hardcoded code
* remove avg_uptime at mixnodes table
* Add jsonchema to uptimeresponse struct
- add the route for avg_uptimes
* adding space between words
* update selection chance colours
* adding the 2 missing tooltips
* fix up uptimeresponse
* fix duplicate entry
* fmt
* validator-client: use statement
* explorer: PR requests
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
Co-authored-by: Fouad <fmtabbara@hotmail.co.uk>
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
Co-authored-by: tommy <tommyvez@protonmail.com>
* workflow: add wallet rust ci job
* workflow: remove not used matrix file
* workflow: add wallet rust part to nightly build
* workflow: add nym-wallet to step names
* workflow: tweak wallet names
* workflow: run on ubuntu-latest
* workflow: skip sccache
* workflow: tweak name
* workflow: switch back to self-hosted tag
* Bumped up version numbers to 1.0.1
* Updated changelog attempting to use new format
* Bumped up wallet version number
* Updated changelog attempting to use new format
* Updated tauri version
* Broadcast tx in a sync mode and poll for its inclusion
* Adjusted internal type used in TauriTxResult
* Re-exported MsgSend
* Increased polling rate + removed print
* Fix gateway test wallet address
Since we're switching to mainnet as default, use the correct wallet
address format.
* Fix other test with prefix problems
* Passing proxy value when attempting to compound delegator reward
* Do not attempt to delegate reward to mixnode if its zero
* Additional guards against sending 0 tokens
* Removed sign of sloppiness
* Fixes to rewards and delegation events storage
* Remove block count check, epoch cannot be advanced while in progress
* Add reward compound ops to vesting contract
* Migration to remove 0 value delegationns
Co-authored-by: durch <durch@users.noreply.github.com>
* Utility for parsing Vec<ProtoCoin>
* Support for different types of vesting accounts
* Derived Debug for Account
* Exposed method for querying for account details
* Renamed ibid. to a more appropriate name
* 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>
* Cosmwasm beta6 => beta8 upgrade
* Introducing additional unique index constraint on sphinx key
* Unit test for checking for duplicate sphinx key
* Fixed other unit tests due to changed constraint
* Work in progress NIDKG
* Encryption of multiple shares
* Extracted baby-step giant-step lookup table as a separate entity
* Proof of discrete log
* Adjusted discrete log domainn
* Producing proof of log during keygen
* Zeroize for epoch
* Proof of secret sharing
* empty main for compiler appeasement
* Construction of proof of chunking
* Initial untested verification of proof of chunking
* Converted chunk responses from Scalar to u64
* Additional tests for proof of chunking
* Minor cleanup and reorganisation
* Fixed enc/dec to use f0
* Deriving node coverage of required tree nodes
* Finally seemingnly working encryption under nonzero epoch
* Branch park
* Decryption key updates to specified epochs
* Ciphertext integrity checks
* Progress in integration tests
* Fixed ciphertext combining and integration test
* Dealing type and simplification of the integration test
* Benchmark for creation of baby-step-giant-step lookup table
* Initial import cleanup + broken 2nd integration test
* Using correct assertions in the integration test (and correctly combining shares)
* Removed unused modules
* Changed proof of sharing to allow for node indices being different from [1,2,...n]
* Reorganised bte module
* Benchmark for g2 precomputation
* Created more strongly typed Epoch type
which is essentially a Tau such that it is a leaf node
* Extending tau with a temporary oracle output
* Using random oracle for tau extension
* More benchmarks!
* encryption-related benchmarks
* Serialization of PublicKeyWithProof
* Typos
* Removed any changes made in validator-api or smart contracts
* Made the integration test slightly more concise
* Further purge of unused modules
* Fixed combining share to use lagrangian interpolation
* Recovery of verification keys from the dealings
* Verification key verification + extended integration tests
* Fixed Tau not being included in digest for producing Tau_h
* Tau serialization
* Serialization of a BTE Node
* Serialization of DecryptionKey
* Serialization of PublicCoefficients
* Utility method for setting constant coefficient of a polynomial
* Serialization of Ciphertexts
* Serialization of Proof of Secret Sharing
* Serialization of Proof of Chunking
* Serialization of Dealing
* Adjusted capacity of responses_r in proof of chunking
* Made notation more consistent with the paper equivalents
* Optional arguments for creating/verifying resharing dealings
* Have reward set updater run its own timer (#1200)
* Have reward set updater run its own timer
* Filter rocket log spam
* Take last day of uptime for rewarding (#1202)
* Take last day of uptime for rewarding
* Rejigger calculations
* Blacklist based on last 24 hr
* Cleanup
* Clippy
* Additional, more informative routes
* Improve blacklist updates
* Fix rewards estimation
* wallet: support multiple accounts per encrypted login
Rework wallet storage to allow grouping accounts under a single
encrypted entry, in a way that is backwards compatible.
* wallet: remove commented out lines
* Economic dynamics stats endpoint on the explorer API with dummy fixture data
* Populating the endpoint with real data aggregated from validator api
* Introduced new cache functionalities
* new password flow
* update global error and load state from children
* fix linting
* dont load account when creating mnemonic
* wallets: provide placeholder functions for ui password
* wallet: platform_constants
* wallet: swap println to log
* UI for existing mnemonic to be use
* wallet: inline encryption of wallet file
* wallet: tweak error enum names
* wallet: general wallet_storage tidy
* wallet: tweak some type names
* create sign-in context
* update sign in functions
* move state to context
* update pages
* connect new rust methods with frontend
* update components
* remove non-existent method
* add separate sign in pages for mnemonic and password
* add a hook for clipboard copy
* fix workmark svg sizing issue
* create step component
* use new sign in pages
* reorder pages
* use clipboard lib directly
* ui tweaks
* use login type selector
* update password strength test + use autofocus prop for password input
* start adding routes
* restructure with routes
* wip
* more wip
* more wip
* reset state where required
* minor flow updates
* validate version (any valid semver version)
* reset error on page move
* flow tweaks
* content update
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
* new password flow
* update global error and load state from children
* fix linting
* dont load account when creating mnemonic
* wallets: provide placeholder functions for ui password
* wallet: platform_constants
* wallet: swap println to log
* UI for existing mnemonic to be use
* wallet: inline encryption of wallet file
* wallet: tweak error enum names
* wallet: general wallet_storage tidy
* wallet: tweak some type names
* create sign-in context
* update sign in functions
* move state to context
* update pages
* connect new rust methods with frontend
* update components
* remove non-existent method
* add separate sign in pages for mnemonic and password
* add a hook for clipboard copy
* fix workmark svg sizing issue
* create step component
* use new sign in pages
* reorder pages
* use clipboard lib directly
* ui tweaks
* use login type selector
* update password strength test + use autofocus prop for password input
* start adding routes
* restructure with routes
* wip
* more wip
* more wip
* reset state where required
* wallet: remove unused rust use statements
* fix unbond page
Co-authored-by: fmtabbara <fmtabbara@hotmail.co.uk>
Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
Co-authored-by: Tommy Verrall <tommyvez@protonmail.com>
* Type safe bounds
* Debug get_all_delegations
* List raw delegations
* query all delegation values
* Get all keys and values
* Differentiate on len
* Clean up duplicates
* Remove stop gap
* Cleanup, fix paged query key
* Reduce queries required to get all delegations
* Sandbox migration
* Delete migration
* Add placeholder client for implementing coconut interactions
* Add db for persistance
* Add nymd client
* Add new coconut-bandwidth contract
* Call deposit function
* Introduce error handling
* Call the old flow of getting a signature
* List available tx hashes
* Add signed req in body
* Save signature received
* Add event generation
* Checks in validator-api
* Fail with error instead of panic in validator-api route
* Fix contract address and small bug
* Add file db for storing previous signatures
* Encrypt and store data in validator-api
* Decrypt the received signature
* Remove tx hashes after getting credentials
* Small listing changes in client
* Change response so that it easier to serialize
* Error message is sent to client for display
* Remove already signed error and return the previous sig
* Merge signature with deposit data in client
* Entrypoint for getting the encrypted signature
* Refactor blinding stuff so that it can be backed up
* Backed up the blind sign request
* Client can re-request the encrypted signature shares
* Update crypto features
* Fix clippy
* Activate instantiate test and remove unused code
* Add tx tests
* Add verification key endpoint test
* Voucher consistency test
* Test for some errors and a race condition on blind signing
* Refactor and add client trait for enabling better testing env
* Test some more of blind sign
* Finished testing all extract_encryption_key paths
* Split into function test and endpoint test
* Test for correct signature
* Test for state functions
* Remove print
* Test blind_sign endpoint
* Test for cached signature endpoint
* Stricter types in voucher
* Rename signature with partial_bandwidth_credential
* Extra route levels
* Length check and remove some unused code from coconut interface
* Renamed coconut-bandwidth common crate
* Renamed verification_key to identity_key
* Use const instead of hardcoded values
* Use type aliases for crypto algorithms
* Remove unused mods, until needed
* Remove unneeded unwrap
* Fix some coconut issues that were blocking the wasm client build
* Move from sled to existing sql database
* Update tests for new db type
* Fix wasm for coconut too
* Remove sled from dependencies
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
* Add QueryPendingDelegationEvents QueryMsg
* Add pending_delegation_events to nymd client
* Add pending delegation events to wallet
* Get rid of double epoch accounting
* Fix reward saving
* Try batching operations to reduce fees
* Bundle all transactions into one
* make nice
* 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
* add pedersen.rs and first alias type
* replace ciphertexts in BlindSignRequest by commitments and adapt try_from
* update BlindSignRequest.to_byte_vec
* add TODO to issuance.rs
* [WIP] update CmCs proof to use commitments
* complete ProofCmCs construct implementation
* [WIP] ProofCmCs verify
* complete ProofCmCs verify implementation
* complete ProofCmCs to_bytes implementation
* complete ProofCmCs from_bytes implementation
* WIP update ProofCmCs roundtrip tests
* WIP update prepare_blind_sign
* update prepare_blind_sign
* WIP update blind_sign
* update blind_sign
* update BlindedSignature and try_from
* update BlindedSignature unblind
* update BlindedSignature to_bytes
* move elgamal encrypto to elgamal and manage imports
* add verification keys for g1 method
* upadate tests to work with Pedersen commitments
* unused remove pedersen.rs
* update error message
* fix proof_cm_cs_bytes_roundtrip test
* Move generation of commitment openings into prepare blind signature function
* Edits
* Extende the verification key; remove validator's secret key from the unblind function
* Update the unblind function throughout the whole nymcoconut repo
* Fix broken tests
* Run cargo clippy and fmt
* Add benchmark measurements
* Add more detailed printouts
* Change byte printout
* Update benchmarks
* add public attributes as part of the commitment
* update bytes order comment for ProofCmCs
* check proof_cm_cs_bytes_roundtrip test and remove TODO
* remove irrelevant prints in blind signature tests
* remove inappropriate function to get betas_g1
* remove irrelevant prints in verification
* Remove print statement and add additional checks on the verification key
* Run clippy
* Fix coconut call in validator-api
* Update dependend packages
* Update the input to the obtain partial credential function
* Fix the verification key bytes calculation
* Run cargo fmt on keygen.rs
* Run cargo fmt for validator-api
* Run cargo fmt for credentials
* Replace concat with chain
* Remove unneccessary mut
* Run cargo fmt
* fix type conversion
Co-authored-by: aniampio <anna.piotrowska.15@ucl.ac.uk>
* Use shared ts-packages in wallet
* Add eslint rules
* Formatting: run eslint --fix on all files
* Formatting: fix linting errors for dependencies
* linting fixes
* fix sign in pages
* fix breaking change
* fix ts errors
fix ts and es errors
* Fix up typings for image and json modules
Add tsconfig for eslint to process webpack config
* Use shared webpack config
* Use shared logo component
* Remove unused images
* Allow html path to be passed as an argument in shared webpack config
* Fix up webpack config for html template
* Build shared ts-packages before starting dev mode
* Fix webpack config
* use shared logo component
Co-authored-by: fmtabbara <fmtabbara@hotmail.co.uk>
Co-authored-by: mmsinclair <mmsinclair@users.noreply.github.com>
* Use new eslint rules and apply fixes. Use new logo component and shared theme + webpack config.
* Add shared component to display a copy icon and copy to clipboard with confirmation state
* Organise imports
* Add copy mixnode identity key to list of mixnodes and detail view
* Update nvm node version to 16
* Update GitHub Actions for Network Explorer to use yarn and yarn workspaces
* Switch favicon for smaller N icon
* Update README
* Add error boundary
By attaching network defaults to the selector enum, we can get them
either from DEFAULT_NETWORK or a selector passed as a dependency.
Hopefully this opens up some venues for being able to toggle between
networks at runtime.
* 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
* create nymlogo component
* start scaffolding
* set up mnemonic check pages
* start on guess words components
* mnemonic verification work
* more mnemonic verification
* hard code number of words to generate
* mnemonic verification section 2
* add password strength indicator
* add password confirmation
* update text
* disable word tiles on selection
* add exisiting account page
* finish exisiting account login
* add back buttons to return to the initial screen
* update button size
* create network selection component
* implement network selector component
* update page types
* make currency and network dynamic variables
* remove unused env values
* [ci skip] Generate TS types
* lighten subtext
* display network name in app
* create network selector component
* remove old network display component
* update state in response to network selection
* state updates
* implement logout
* refresh delegations on network change
* Initial implementation of data encryption/decryption with provided password
* Removing milhon network.
* Removing more milhon references.
* Adding in mainnet constants for network defaults. Contracts are not yet defined.
* Allow encryption of EncryptedData<T>, where T: Serialize + Deserialize
It uses serde_json for representation of T
* Making contract addresses optional
* [ci skip] Generate TS types
* Add mainnet as implicit network
* Fix unreachable code warning
* Using zeroize for encrypted data + password
* Get denom dynamically
* initialize network to undefined before login
* Fix str parse to dynamic denom
* Pass network in config all the way to hd wallet generation
* Fixed encrypted data deserialization
* Storing and loading accounts from the disk
* Additional error variants
* Fix clippy in wallet
* Simplified contract address parsing
* display error
* fix typo
* uncomment code
* Use sandbox as backend default again
* Reorganised wallet storage for easier testing + unit test
* Fix denom showing
* to_major call only on printable balance
* fix up state changes
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
Co-authored-by: fmtabbara <fmtabbara@users.noreply.github.com>
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
Co-authored-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
* Fix up tauri config to have correct Apple signing metadata
* Add GitHub Actions to create a release, build and sign the wallet (on MacOS) when pushing to a `nym-wallet-*` tag
* Review feedback
* [ci skip] Generate TS types
Co-authored-by: mmsinclair <mmsinclair@users.noreply.github.com>
* mixnode: add basic test for node_statistics
* mixnode: rename to SharedNodeStats
* mixnode: add some comments
* mixnode: formatting
* mixnode: fix test
* mixnode: fix test
* mixnode: remove unreliable assert
* mixnode: switch from sleep to advance in test
* workspace: use resolver 2
* mixnode: formatting
* Tag contract errors, and print out lines for easier QA
* Allow updating mixnet address by admin
* Add reply endpoint, and unbond callback
* Extract vesting messages
* Wrap up
* mixnode: make command modules private
* mixnode: make some node modules private
* mixnode: make config structs private
* mixnode: restore accidentally moved function
* Extracted constants that could realistically be controlled by governance to constants.rs
Also made interval control be more explicit in the contract
* Extracted active set work factor to a constant
* Required type changes in wallet code
* [ci skip] Generate TS types
* Missing change in test code
Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com>
* Updated time to 0.3.6
* Changed Display impl for Interval so it doesnt use floats
* Explicit rfc3339 datetime serialization
* Typo
* Changed 'visit_borrwed_str' to 'visit_str'
* 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
* Rename function/variables mixnodes->set
* Stub utility interface
* Rewarded set contract interface
* Move epoch to common, epoch to contract
* Move epoch to the chain
* Rewarded set validator-api
* [ci skip] Generate TS types
* Epoch queries
* Moved new code to a new module
* Restored cosmwasm dependencies to their beta.3 versions for better compatibility with the rest of the codebase
* Rewarded set write reorganisation
* Stub for validator api module responsible for rewarded set updates
* Reorganised validator api cache
* Pending contract changes
* Relevant updates to the validator client
* Updating rewarded set based on contract state
* Advancing/Setting current epoch in the contract
* Using blocktime as 'now' at startup
* Adjusted validator-api side rewarding code
* Contract cleanup + query for epoch rewarded set heights
* [ci skip] Generate TS types
* Simplified rewarder processing loop and initial sync
* [ci skip] Generate TS types
* Fixed EXISTING query-related unit tests
* Fixed existing unit tests for rewarding-related transactions
* Cargo fmt
* Removed some dead code
* Using cosmwasm 1.0.0-beta3 for compatibility [with cw-storage-plus and rest of codebase]
* Missing TryInto import
* Additional storage and query related unit tests + a bug fix
* Transaction-related unit tests + bug fixes
* Required migration code
* Update common/cosmwasm-smart-contracts/mixnet-contract/src/msg.rs
Co-authored-by: Drazen Urch <drazen@urch.eu>
* Update common/cosmwasm-smart-contracts/mixnet-contract/src/msg.rs
Co-authored-by: Drazen Urch <drazen@urch.eu>
* Constant renaming
* Changed determining previous epoch return type to Option<Epoch> if they would precede the genesis
* Exposed the new endpoint to the wallet
* Epoch-related unit tests fixes
* Recommended #[must_use] on next_epoch method
* Renamed all epoch occurences to interval
As they refer to the 'rewarding interval'
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com>
* Add identicons package
* Tidy up styling and move methods into component directories with better naming
* Add mixnode status colours to theme
* Mixnode status and icon components
* Add status to mixnode types
* Add API method to get mixnode details
* Add mixnode details to state
* Add status and name+description section to mixnode detail page
* Wrap with div instead of p
* Limit width of description and link to new tab
* Limit length of link button and truncate with elipsis
* Replace `filter` with `find`
* Move mix node detail components to a location that is better named
* Refactor mixnode detail state and separate into an independent context from main state.
This prevents the mixnode detail page from showing stale data when switching between mix nodes.
* Tidy up mixnode detail page adding new state provider and a guard component to handle loading, error and not found states
* Layout changes to mixnode description header section
* Add methods to Explorer API client to get a mixnode by id, active set by status and overview summary
* Add color prop to StatsCard and make count optional
* Add optional start and end children to TableToolbar
* Tidy up naming
* Add summary overview and getting mixnodes by active set status to main state
* Add mix node status overview cards
* Add mix node status to routes
* Mixnode list has a dropdown component to select the active set status
* Clean up caching code
* Add resource to get a single mixnode by id
* Add API resources to get `active`, `inactive` and `standby` mixnodes
* Add mixnode summary to API
* Add overview summary endpoint to API
* Fix OpenAPI/swagger base url
* Make clippy happy
* Add method to get validators
* Add methods to get active and rewarded mixnodes
* Fix naming
* Move client creation to crate root
* Move cache to module
* Delete unused files
* Add validators API resource
* Add gateways API resource
* Move tasks to crate root
* Add new HTTP resources for validators and gateways to routes
* Tidy up naming and locations for mixnodes
* Add validator and gateways to state, and tidy up naming
* Add gateways and validator modules to main
* Overview shows validator and gateway summaries from state
* Bundle variable weight Open Sans fonts
* Fix up font weights and sizes
* Fix up typing
* Fix up social icons
* Fix navbar colour
* Fix paper colour in dark mode and border radius
* Fix up stats card
* Tidy up Nym icons
* Fix up overview
* Fix up spacing and padding for overview
* Add light mode shades that are darker for mixnode status values
* Review feedback
* Fix clippy on relevant lints
return_self_not_must_use still produces errors, but that will be
auto-fixed once the change to move it to pedantic is released to beta
channel
* Run fmt
Export a Network type to TS and make seamless transitions between this
type and the network defaults one. We may have more networks supported
in the backend then in the frontend at a certain moment in time.
* Add network defaults for qa
* update contract addresses
- have not updated the bandwith credential address - currently vesting
Co-authored-by: Tommy Verrall <tommyvez@protonmail.com>
* Moved mixnode status route to node status api module
* Introduced validator-api endpoint for estimating mixnode's reward
* Stake saturation endpoint
* kebab-cased coconut routes
* Created separate crate for validator API models
* Additional routes in validator API client
* Introduced support for new queries in the wallet
* Typescript type derivation
* Fixed up date in license notice
* Introduced route to check mixnode's status (active/standby/inactive/not_found)
* Restored default validator API caching interval to a more sane value
* Changed status route
* Introduce a method to update mixnode configuration
Right now, only for profit_margin_percent
* Check that the new profit margin is valid
* Extend a bit the test coverage of mixnode update
* Create validator client function
* [ci skip] Generate TS types
* Update wallet
* Update the bond height as well, as if a rebond was made
Co-authored-by: neacsu <neacsu@users.noreply.github.com>
* Restored mixnode refresh rate to a more sane value
* Moved PrettyMixNodeBondWithLocation to models.rs
* Renaming
* Exposed ability to query for rewarded mixnodes in the validator client
* Reorganised mix_nodes module
* Determining mixnode status (active/standby/inactive)
* Moved LocationCache to separate lock
* Minor cleanup
* Changed serialization case of status enum
* Made clippy happier
* Slightly better grammar
* Include version check in sign command
* Ask for wallet address the same way as mixnode
The reason for this is that the cosmos mnemonic that is asked at
init is for the address that gets rewarded for gateway usage.
Since that address is not necessarly set now and it can take a
default value, we won't be using that to derive the address in the
signing process.
* Make the separation between testnet-mode and erc20 bandwidth mode more clear
* Update Cargo.toml
* Remove eth bw from native client under a feature flag
* Remove eth bw from socks5 client under a feature flag
* Remove eth bw from gateway under a feature flag
* Update gateway version
* Fix coconut build warnings
* Refactored test helpers
* Renaming mixnode "bond" coins to "pledge"
* Renaming gateway "bond" coins to "pledge"
* ibid
* Commenting out new tests, they will go in next PR
* Moving sign_text method into common/crypto to dry it up
* Moved bech32 address validation into common/crypto
* ibid
* Gateway now requires a --wallet-address arg on init
* Add a --wallet-adress parameter to init
* Rearranging signing code locations
* A bit more refactoring
* ibid
* Exiting if the stored bech32 address isn't valid at node start
* A few docs comments
* Moved crypto crate up to root src level
* Friendlier startup messages for node verification code
* Switching punk and nymt addresses in test
* set up Settings component
* Update network defaults
* Short node identity signature check
Fix tests
* Do not set proxy only for this time
* Update contract addresses
* file restructure
* file updates
* add settings tab panels
* update them color for nym fee
* rework layout
* update bond form to include signature and profit percent
* create info tooltip + make status component optional
* fix overflow
* update sys vars tab
* get mixnode bond details
* use mixnode id in settings
* set up profit percentage value on sys vars tab
* profit percentage styling
* add fix for delegations list
* fix unbond UI bug
* minor style updates
* dont allow profit percent on gateway bonding
* webpack prod fix
* update profit percentage from settings area
* hardcode signature for profit percentage update
Co-authored-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
* moved contracts from gitlab to main codebase
* added missing event param
* removed erroneous from description
* updates:
* changed maths of token -> MB conversion
* new tests for changed maths
* length check on cosmos address
* begun code doc
* code documentation
* small comment cleanup
* cont. w tests, may have found bug in maths re: using not whole tokens: investigating
* finished code doc
* included requested changes to contract
* change to maths operations, shrunk test error to < .9
* updates:
* updated tests
* updated readme
* removed commented out code, changed variable name to be more informative
* removed unnecessary byte32 length check
* 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>
* Make develop branch agnostic of the network
* Update network defaults
* Short node identity signature check
Fix tests
* Do not set proxy only for this time
* Update contract addresses
* Network Explorer: configure URLs with `.env` file
* Network Explorer API improvements:
- upgrade `okapi` for swagger generation across multiple resources
- switched `GET mix-node` to `GET mix-nodes`
- added error message when no geolocation env var is set and process continues
* Network Explorer improvements:
- fix up API urls after Network Explorer API changes
- set currency denominations in `.env` file
- set API endpoints in `.env` file
* Network Explorer: change prod env to round robin DNS
* Update test
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
* Made client compile again + set auto fees
* Simplified client construction by allowing only a single URL
* wip
* Simplified signing assertion
* Initial implementation of queries
* Implemented all basic nymd queries
* Validator API queries
* Signing related queries
* Using default arguments
* Removed redundant else branches
* `eslint` and `prettier` formatting on Typescript validator client
* Removed cyclic import on Coin type
* Missing direct dependencies
* Ingoring cyclic imports
* Removed unused argument
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
* Raw scaffold for tx simulate
* Proper error handling in AbciResult parsing
* Simulate without actual signing operation
* Moved all-fee related functionalities to separate module
* Adding GasInfo to transaction results
* Automated gas estimation
* Slightly adjusted public API
* Using auto fees in eth events
* Removed old print statement
* Reorganised nymd client fee handling
* Put bandaid on wallet gas estimation
* Fixed operation re-export
* warning note on get_approximate_fee
* [ci skip] Generate TS types
* Refactored ProtoAbciResult parsing
* Explicit error on abci query failure
Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com>
* Add Makefile to make running all checks easier locally
* Different workshare calculation for active vs rewarded set
* Rework omega calculation, update tests
* Remove ZERO const
* unym -> DENOM
Co-authored-by: Drazen Urch <durch@users.noreply.guthub.com>
* Base58 representation of ed25519 signature
* Helper for verifying ed25519 signature on sender address
* Signature verification for gateway bonding
* Signature verification for mixnode bonding
* Added owner signatures for bonding in vesting contract
* Fixed choosing mixnode layer test
* Added owner signature fields to nymd client for bonding
* 'Updated' tauri wallet with new bond requirements
* Mixnode sign command with extra address validation
* Sign command for the gateway
* Signing own gateway's address derived with known mnemonic in not(coconut) case
* Fixed imports post-merge
* Corrected used bond/pledge terminology
* ibid for the wallet and explorer
* [ci skip] Generate TS types
Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com>
* 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>
* Missing license notices
* Dead code removal
* Changed RewardMixnodeV2 to RewardMixnode
* Adjusted module visibility
* Setting rewarding validator address in init msg
* ContractSettings => ContractState
* Transaction-related cleanup
* Changed ownership queries to return full bond information instead of just a bool
* Function for updating post rewarding storage
* Changed the order of arguments in decrementing reward pool
* Helpers for updating storage after rewarding
* Removed redundant turbofish
* [ci skip] Generate TS types
* Changed bond/delegation validation
* Made clippy happier
Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com>
When supplying `production` as the mode in the config for webpack, it complains about an unmet dependency issue with fav-icons. Then trying to supply a favicon.ico, returns a mimetype error. By using a png in alignment to the .ico. It builds. Tested on Linux.
* 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>
* Introduces query for contract build information
* Removed temporary test garbage
* Removed unused imports in validator-client if built without nymd-client feature
* Starting a refactor to cut the huge files into chunks
* Fixing some lints
* ibid
* Mixnode and gateway bonding tests moved
* All transaction test moved into submodules
* Finished splitting out transactions.rs from root into submodules.
* Moved mixnet params state into submodule
* Recombined modules for few top-level actions
* Moving mixnode bonding queries into their own file
* Removed some unused imports
* Got tests running again. Max limit tests not right.
* Fixed tests
* Started moving delegation queries into own module
* Finished moving delegation queries into their own module
* Cleanup
* Moving query limits into relevant modules
* Putting query limits back at top-level
* Using prefix to make storage usage a little more explicit
* Separating storage into smaller chunks
* More storage refactoring
* Finished moving all storage into modules
* Moved all storage prefixes into relevant modules and made them not-public
* Renamed the mostly-empty queries module to query_support
* ibid
* Fixed query support rename problems
* Started to move rewards-related helpers into their own module
* Started moving delegations-related helpers into their own module
* Moved more code from global helpers into delegations helpers
* Moved all remaining test helper code from main helpers file into test helpers
* Made use of test_helpers explicit via a module rename.
Also got rid of non-explicit usages
* Moved mixnode storage retrieval limits into mixnodes storage module
* Moved bond retrieval max limit into storage moduel
* Moved more storage limits into mixnodes storage file; fixed a gateways limit test.
* Added a note on gateways limits constants
I'll re-use the mixnodes values, but it doesn't have to be this way.
We could easily make a specific constant for gateways instaed.
* Renamed "state" to GlobalContractParams
* Pulled bit of test helper code up a level
* Small cleanup of zero spacing in constants
* Made a local helper method private
* Renaming GlobalContractParams to ContractSettings and StateParams to ContractSettingsParams
* ibid
* Renamed contract settings storage methods from "config" (which is a bit vage to "contract_settings"
* Indulging a fullword as a personal protest vs the Go programming language
* Renaming mixnet settings to mixnet contract settings
* Making validate_mixnode_bond private and moving it downwards in the file
* Moving gateway bond validation to the bottom of the tests file
* Getting the wallet compiling again.
* Updated TypeScript client with new types and contract method names
* Updating rust validator client with new contract method names and types
* Fixed type error in mixnet-contract shared msg.
* Used new contract method names and types
* Fixed warnings in non-test code
* All tests compiling
But not passing yet
* Fixed test compilation warnings
* Fixed tests
* Test-locked Delegations struct
Co-authored-by: dave <dave@nym-mbp.lan>
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Unnrolled the loop into separate function
* Ugly way of saving rewarding status
* Initial way of rewarding next page of delegators
* Attribute passing
* Promoted transactions to directory
* Moved rewarding-related functionalities into separate file
* [ci skip] Generate TS types
* Better errors on double rewarding attempt
* Removed old rewarding call
* Test fixes
* Some cleanup
* Paged mixnode rewarding test + serde fixes
* Tests for delegator rewarding
* ExecuteMsg for MixDelegatorRewarding
* Made validator-api code compliable
with bunch of todo!() macros
* Removed Option wrapper from params in MixnodeToReward
* Calculating uptime for entire epoch
* Created shared MIXNODE_DELEGATORS_PAGE_LIMIT constant
* Using new rewarding messages in validator API
* cargo fmt
* Updated wallet state types
* Additional test for correct rewarding information
* Query for rewarding status
* Additional test regarding delegator rewarding
* Client methods for obtaining rewarding status
* Validator API checking for full rewarding
* Removed unused field from validator api config template
* Waiting for MINIMUM number of test routes
* Waiting initialisation_backoff in the early return case
* Fixes crash condition in validator API when calculating last day uptime
* Fixed typo
* Dealing with the case of rewarding mixnode with 0 uptime
* Removed temporary unwrap
* Guarding against 0-size rewarded/active sets
Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com>
. If `Webview2` is not installed on Windows, that app will not launch correctly. There's two ways to update if you're running on an older version of windows.
- Update the Edge browser in your current OS
- Update via the installer now provided in the README documentation.
* desktop onMouseEnter and leave handlers added
* clicking nav option closes drawer
* All AC met
* removed dead bool
* added hamburger to AppBar for mobile users small refactor
* nuts and bolts working needs a lot of tidying though
* Functionally complete.
* change hardcode colors to theming
* UI theme and border changes
* bug fix removed collapse nav flicker
* dead code
* resetting drawer to closed onload
* removal of hardcoded color
* made null functions into optional props
* Nested sx styling not global
* paperprops now working
* fixed breaking changes for DataGrid
* linting fix
* linting fix
* optional chaining for nodemap search
* leaner filter func
Co-authored-by: Aid Thompson <adrian@nymtech.net>
* desktop onMouseEnter and leave handlers added
* clicking nav option closes drawer
* All AC met
* removed dead bool
* added hamburger to AppBar for mobile users small refactor
* nuts and bolts working needs a lot of tidying though
* Functionally complete.
* change hardcode colors to theming
* UI theme and border changes
* bug fix removed collapse nav flicker
* dead code
* resetting drawer to closed onload
* removal of hardcoded color
* made null functions into optional props
* Nested sx styling not global
* paperprops now working
* fixed breaking changes for DataGrid
* linting fix
* linting fix
Co-authored-by: Aid Thompson <adrian@nymtech.net>
* basic table working
* broken out into sep component
* table is more dynamic now
* linting fixes
* Added types for Columns
* hangover from eslint work moving to diff PR
* Changed To DetailTable
* Killed unused flex val in Columns
* merge conflicts resolved
Co-authored-by: Aid Thompson <adrian@nymtech.net>
* Introduced rewarding_interval_nonce to contract state
* Queries for ibid.
* Mixnode demanded set size
* Routes for obtaining demanded/active mixnode sets
* Testing only demanded nodes
* Typo
* Initial state
* Feature-locking unused imports
* Generating pseudorandom (with deterministic seed) demanded mixnodes set
* cargo fmt
* Fixed tauri state
* Renamed network monitor address to the rewarding validator
* [ci skip] Generate TS types
* Notice for the future
* Transactions to begin/finish mixnode rewarding + double rewarding protection
* Validator API using new contract calls
* Removed dead code from an old experiment
* [ci skip] Generate TS types
* Removed unused import
* Renamed 'demanded' set to 'rewarded' set
* Some renaming action
* [ci skip] Generate TS types
* Fixed post-merge dependency issue in tests
* Post merge test fix
Co-authored-by: jstuczyn <jstuczyn@users.noreply.github.com>
* 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>
* Removed separated ipv4 and ipv6 testing
* Testing network using chosen core nodes
This should have probably been like 20 independent commits... sorry...
* SQL migrations for updated schema
* SQL updates
* Using absolute uptime directly
* New uptime calculations
* Config entries, more DB work, some cleanup
* Additional API query routes
* More SQL and API work
* Changed `_` to `-` in new routes
* Removed good topology from config
* Fixed gateways reader yield condition
* Initial gateways pinger
* Minor cleanup and logging level decreases
* Missing trait derivations
* Further logging adjustments
* Unused commented out import
* Claiming additional bandwidth in coconut feature when low
* Fixed build with coconut feature
* Minimum number of test routes
* Making beta/nightly clippy happier
* 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>
. Currently developed against a Linux machine
. POM design
. README.md states how to get up and running on Linux
WIP - areas of focus inbound ->
. CI
. Test suite configuration
. Working on multiple platforms
. Improve selector selection to reduce fragility in the future
* Additional methods on nymd client
* Checking for time out errors
* Attempting retransmission on suspected time out
* Don't report error if tx is a mempool duplicate
* '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
* Remove migration code
* Added function to iterate over delegation of variable type
* Add unit tests
* Refactored some naming and reused mix/gateway functionality
* Borrow bucket instead of move
* Linked with existing delegations function
* Migration of left-over delegations
* Remove unused imports
* Put a gateway test as well, next to the mix one
* Expose queries for all delegations
* Change break point
* Added client side calls to the new queries
* Fix clippy
* Added pagination and read check tests
* Fix gateway test from the last commit
* Test functions for (de)serialization of identity and owner (in)to storage keys
* Add delegation function unit test
* Feature guard import
* Changed UnpackedDelegation from type to struct
* Remove mutable parameter and put start_after in returned value
* Made all delegations into iterator for OOM safety
* Fix clippy
* Add test for delegations iterator size in memory
* Change map with if let for ease of read
* Use DENOM instead of hardcoded value
* 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
* 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
* 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
* 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>
* Skip ReadOnlyBucket deserialization errors
* empty migration
* clippy
* cargo schema
* Drop invalid delegation data
* Dont drop old data
* Add todo
* Unify on type param
* gateways are different
* cargo fmt
Co-authored-by: Drazen Urch <durch@users.noreply.guthub.com>
* 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
* Add block_height to MixNode/GatewayBond
* Reward based on blockstamp of bonded node or of delegation
* Add specific tests
* Add migration code
* Apply doc nit
* Add RawDelegationData
* Fix current tests for the new stored data
* Added migration commit. Will be reverted after doing the migration
* New tests for block height
* Use current blockstamp instead of 24h old one
* Put _alot_ of migration stuff in the migrate function scope
* Call perform_initial_authentication instead of register in clients
* Refactor the register/authenticate functions a bit
* Introduce Bandwidth request type
* Add encryption layer to cred
* Remove cred pass and check from handshake
* Replaced unreachable! with error
* Changed decrypt_tagged signature to not take mutable ownership of data
* Put handle_bandwidth work inside a function
* Add check before unwrap
* Remove unnecessary async
* Decouple bandwidth credential from authentication
* Use new_error for ServerResponse:Error
* Send a fresh IV each time the BandwidthCredential request is sent
* Remove unwrap of bincode::serialize
* Add comment regarding Bandwidth response
* Remove _mut from naming
* Leave Debug trait alone, as the initial error doesn't reproduce anymore
* Pass iv as Vec<u8> instead of base58 string
* Renamed AuthenticationIV to IV, as it is now used for more the just authentication
* Did some IV refactorization
* Introduce reverse delegation bucket
* Add client command
* Fix clippy error
* Added tests in queries
* Add tests in transactions
* Migration code. Will be reverted after it's called on testnet
* Replace unwrap with expect
* Move some test code in the right file...
... to remove unnecessary auxiliary function.
* Reduce the scope to migration auxiliary functions
* Rename everything from [node]reverse to reverse[node]
* Fix fmt
* New database table holding monitor run info
* SQL interface for new table
* Updated uptime calculation to instead rely on number of monitor test runs
* 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
* Rename storage read functions for bond reward rates
* Add reward values per epoch in State
Calculate delegation rewards per epoch for mixnodes and gateways, which
are used when the delegators are rewarded for their stake.
* Migration commit, will be reverted after the testnet contract is updated
* Tiny PR to add stake reward rates and bump version
This is needed so that we can publish the 0.17 version.
* Add the changes to contracts as well
On second thought, update the contract together with the client, and
leave the wallet changes for another PR.
* Rename _stake_ to _delegation_
* 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>
* explorer-api: decorate mix nodes with locations from the geoip service and keep mix node cache in a hash map instead of a vec
* explorer-api: add `lat` and `lng` for map views
* explorer-api: remove function and simplify code
* explorer-api: review feedback
* network-explorer: format
* 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
* Made contract address optional to allow for contract upload and initialisation
* 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
* 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
* 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
* DRY the docker prefix and wasmd variables
* Don't re-init nymd for the same container
* Specify env variables in x property
* Contract uploader now uses BECH32_PREFIX env var
* Put endpoints and contract address in one place
* Put common ports in one place
* Split cache version from route
* Share validator-api port value between server and client
* Put BECH32 prefix in defaults
* Put DENOM in defaults
* Put network monitor address in defaults
* Fix clippy
* Fix another clippy + tests import of DENOM
* Add block explorer to docker containers
* Add network explorer to docker containers
A private token is needed to build this container.
* Update docker README
* Update the version to 0.11.0 for non-upgradable crates
* Fix target version for the current upgrade functions
* Upgrade native client
* Upgrade socks5 client
* Upgrade mixnode
* Upgrade gateway
* 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
* 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
* Upgrading cosmos client to v0.25.5
* Formatting
* Renamed stakeDenom to prefix
* Added a denom field to the client
* New version needs a denom in the static methods
* ibid
* Formatting
* Renaming bech32prefix to prefix
* Adding a weird 'u' in the nymGasPrice
* Changing to use denom instead of prefix in nymGasPrice
* Alphabetizing fields
* Renaming method to something a bit more sane
* Using prefix, not denom, to build gas price
* Hardcoding an unavoidable and ugly manual conversion into the stargate helper
* denom is correct, for use in getBalance
* 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
* Modified NymConfig trait to make id optional
* Basic validator-api config definition
* Optionally using the config during startup + flag to enable monitoring
* 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>
* 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
* Changed bond Vec<Coin> into a Coin
* Introduced total_delegation field to bond models
* Restoring total old delegation
* Updating total delegation on new delegations
* Updating total delegation on removal
* Keeping track of delegation increase during rewarding
* Updating total delegation during rewarding + additional response attributes
* Removed irrelevant tests
* Fixed storage-related tests
* Added additional test assertions for delegation increase
* Added additional node rewarding test assertions
* Tests for correct reward calculation + gateway rewarding early termination
* Added delegation field to parsed node type
* Updated typescript bond types
* Moved `OLD_DELEGATIONS_CHUNK_SIZE` to file-wide namespace so that it could be used in tests
* Tests for finding old node delegations
* ibid.
* Issue#657
* Additional test assertions regardingn total delegation
* Missed test field after merge
* ibid
* Cleaning up storage related imports
- Use concrete location for example
- Removed `Location` from displayed information
- Replace tuple with a type alias
- Commit description to disk once the upgrade is finalized
- Other minor changes
Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
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>
Renaming the function to have a clear separation between different
parts of the version, especially for future patch upgrade functions.
Also switch to a Result return value for these functions, to gather
all the
```
eprintln!
print_failed_upgrade
exit(1)
```
calls in one place.
Signed-off-by: Bogdan-Ștefan Neacșu <bogdan@nymtech.net>
* 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
To elaborate further, to update Mixnode constructor it would require adding yet two more arguments and at that point the compiler warns about too many arguments
* Allows passing an optional argument to specify bond value
* Fixed incorrect coin array usage
* Using minimum gateway bond for gateway bonding
* Bumped validator client version number
* Made the explicit bond value required as an argument
* 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
* Extended no delegation found errors with address information
* Error now use Display implementation rather than Debug
* Delegation correctly contains owner address
* Updated js delegation type
* Bumped validator client version number
* Delegation::owner returns owned type
* cargo fmt
* Idea for stats endpoint
* Introduced /stats endpoint replacing sending data to metrics server
* Removed metrics client
* Removed old metrics file
* cargo fmt
* Using new display trait for identity key
* Establishing verloc connection with timeout
* Further decrease in log severity
* Writing echo packets with timeout
* Sender formatting
* ConnectionWriteTimeout error definition
* Writing verloc results in chunks
* Added run started and run finished fields to verloc
* Reordered the fields
* Storing the timestamps as options to indicate run in progress
* 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
* 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
* 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
* 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>
* Calculating reward per epoch
* Initial uptime-based rewards
* Setting monitor address on init + minor cleanup
* Ability to reward nodes through validator client
* Preemptively updated client version
* Using hardcoded monitor address
* Removed unnecessary let binding
* Comment typo
* Changed validator-client package.json version
* Checking for broadcast error
* Added epoch_length to typescript client's stateparams
* Setting default state on migration
* Removed reward mixnode/gateway methods from the client api
* api for executing custom contract methods
* Removed whitespace leftover from the merge
* Extra comments
* Cleanup
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
* 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
* Simplify some Option / Result / ? operator patterns
... when they have a direct combinator equivalent.
Tool-aided by [comby-rust](https://github.com/huitseeker/comby-rust)
* Remove panic in socket state
* 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.
* A pull request for discussion about contract state variables
* Updated contract state struct
* Introduced transaction to update the contract state
* Moved transactions to separate file
* Corrected return type on query
* Corrected query match
* Added test for state params query
* Test for state params update
* Removed unused imports
* Helper functions to query for state params
* Removed hardcoded inside bond, old mix bond value
* Helper function to update contract state
* Changed typescript StateParam from numbers to strings
* Somehow unresolved post-merge issues in tests
* Introduced additional helpers for the validator client to use the new contract features
* Using the state-specified bond values
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Made mixnode bonding process similar to that of gateways' + lowered bonding fee
* Adjusted bonding fee to 100
* Adjusted MixNode Display implementation for nicer formating
* Renamed bonding stake to just bond
* Renamed other cases where stake was referring to bond
* 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
* Added contract query to check if given address owns a mixnode/gateway
* Fixed merge conflict
* Possibly working, but yet untested, checking for mix ownership for validator client
* 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
* Exporting Coin struct, needed for wallet
* Passing the url through instead of using local options.
This gives us the ability to hook up to the new validator
* Removing examples
* Simplifying dependencies a bit
* Setting all contract denominations to uhal
* Making stakeDenom configurable throughout
* Exporting Coin struct, needed for wallet
* Passing the url through instead of using local options.
This gives us the ability to hook up to the new validator
* 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
* Defined gateway and gatewaybond types
* Gateway related errors
* New message types
* gateway tests fixtures and helpers
* Handling of gateway-related messages
* Fixed most of clippy warnings
* Fixed eslint errors in the validator client
* Defining gateway bonds on the typescript side
Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
* Defined gateway and gatewaybond types
* Gateway related errors
* New message types
* gateway tests fixtures and helpers
* Handling of gateway-related messages
* Fixed most of clippy warnings
* 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
* 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
* 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
* 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
* Explorer also downloading 'active' and 'removed' topologies
* Updated dashboard with new standby and removed nodes
* Additional cleanup + restored commented code
* Not testing or informing validator about pre 0.9.2 nodes
* Corrected version check
* Updated JS file to monitor 0.9.2+ nodes
* Restored updates every minute
Notifications are run by adding the snippet above to a GitHub Action, and:
1. Installing node packages needed at run time
2. Set the env vars as required:
-`NYM_NOTIFICATION_KIND` matches the directory in `.github/workflows/support-files/${NYM_NOTIFICATION_KIND}` to provide the templates and extra scripting in `index.js`
- Matrix credentials, room and other env vars for the status of the build and repo
3. Replacing the default entry point shell script on the `keybaseio/client:stable-node` docker image to run `.github/workflows/support-files/notifications/entry_point.sh`
### Running locally
You will need:
- Node 16 LTS
- npm
Copy `.github/workflows/support-files/.env.example` to `.github/workflows/support-files/.env` and valid Matrix credentials.
Then run `npm install` to get dependencies.
Start development mode for the notification type you want either by passing the value as an env var called `NYM_NOTIFICATION_KIND` or set the `.env` file values correctly.
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
Standard License Header
There is no standard license header for the license
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Standard License Header
There is no standard license header for the license
Copyright 2020 - Nym Technologies SA <contact@nymtech.net>
SPDX-License-Identifier: Apache-2.0
-->
This repository contains the Nym mixnet.
## The Nym Privacy Platform
The platform is composed of multiple Rust crates. Top-level executable binary crates include:
* nym-mixnode - shuffles [Sphinx](https://github.com/nymtech/sphinx) packets together to provide privacy against network-level attackers.
* nym-client - an executable which you can build into your own applications. Use it for interacting with Nym nodes.
* nym-socks5-client - a Socks5 proxy you can run on your machine, and use with existing applications
* nym-gateway - acts sort of like a mailbox for mixnet messages, removing the need for directly delivery to potentially offline or firewalled devices.
* nym-socks5-client - a Socks5 proxy you can run on your machine and use with existing applications.
* nym-gateway - acts sort of like a mailbox for mixnet messages, which removes the need for direct delivery to potentially offline or firewalled devices.
* nym-network-monitor - sends packets through the full system to check that they are working as expected, and stores node uptime histories as the basis of a rewards system ("mixmining" or "proof-of-mixing").
* nym-explorer - a (projected) block explorer and (existing) mixnet viewer.
* nym-explorer - a (projected) block explorer and (existing) mixnet viewer.
* nym-wallet - a desktop wallet implemented using the [Tauri](https://tauri.studio/en/docs/about/intro) framework.
Platform build instructions are available on [our docs site](https://nymtech.net/docs).
Platform build instructions are available on [our docs site](https://nymtech.net/docs/stable/run-nym-nodes/build-nym).
Wallet build instructions are also available on [our docs site](https://nymtech.net/docs/stable/nym-apps/wallet#for-developers).
### Developing
There's a `.env.sample-dev` file provided which you can rename to `.env` if you want convenient logging, backtrace, or other environment variables pre-set. The `.env` file is ignored so you don't need to worry about checking it in.
For Typescript components, please see [ts-packages](./ts-packages).
### Developer chat
You can chat to us in [Keybase](https://keybase.io). Download their chat app, then click **Teams -> Join a team**. Type **nymtech.friends** into the team name and hit **continue**. For general chat, hang out in the **#general** channel. Our development takes places in the **#dev** channel. Node operators should be in the **#node-operators** channel.
### Rewards
Node, node operator and delegator rewards are determined according to the principles laid out in the section 6 of [Nym Whitepaper](https://nymtech.net/nym-whitepaper.pdf). Below is a TLDR of the variables and formulas involved in calculating the epoch rewards. Initial reward pool is set to 250 million Nym, making the circulating supply 750 million Nym.
|Symbol|Definition|
|---|---|
|<img src="https://render.githubusercontent.com/render/math?math=R#gh-light-mode-only"><img src="https://render.githubusercontent.com/render/math?math=\color{white}R#gh-dark-mode-only">|global share of rewards available, starts at 2% of the reward pool.
|<img src="https://render.githubusercontent.com/render/math?math=R_{i}#gh-light-mode-only"><img src="https://render.githubusercontent.com/render/math?math=\color{white}R_{i}#gh-dark-mode-only">|node reward for mixnode `i`.
|<img src="https://render.githubusercontent.com/render/math?math=\sigma_{i}#gh-light-mode-only"><img src="https://render.githubusercontent.com/render/math?math=\color{white}\sigma_{i}#gh-dark-mode-only">|ratio of total node stake (node bond + all delegations) to the token circulating supply.
|<img src="https://render.githubusercontent.com/render/math?math=\lambda_{i}#gh-light-mode-only"><img src="https://render.githubusercontent.com/render/math?math=\color{white}\lambda_{i}#gh-dark-mode-only">|ratio of stake operator has pledged to their node to the token circulating supply.
|<img src="https://render.githubusercontent.com/render/math?math=\omega_{i}#gh-light-mode-only"><img src="https://render.githubusercontent.com/render/math?math=\color{white}\omega_{i}#gh-dark-mode-only">|fraction of total effort undertaken by node `i`, set to `1/k`.
|<img src="https://render.githubusercontent.com/render/math?math=k#gh-light-mode-only"><img src="https://render.githubusercontent.com/render/math?math=\color{white}k#gh-dark-mode-only">|number of nodes stakeholders are incentivised to create, set by the validators, a matter of governance. Currently determined by the `reward set` size, and set to 720 in testnet Sandbox.
|<img src="https://render.githubusercontent.com/render/math?math=\alpha#gh-light-mode-only"><img src="https://render.githubusercontent.com/render/math?math=\color{white}\alpha#gh-dark-mode-only">|Sybil attack resistance parameter - the higher this parameter is set the stronger the reduction in competitivness gets for a Sybil attacker.
|<img src="https://render.githubusercontent.com/render/math?math=PM_{i}#gh-light-mode-only"><img src="https://render.githubusercontent.com/render/math?math=\color{white}PM_{i}#gh-dark-mode-only">|declared profit margin of operator `i`, defaults to 10% in.
|<img src="https://render.githubusercontent.com/render/math?math=PF_{i}#gh-light-mode-only"><img src="https://render.githubusercontent.com/render/math?math=\color{white}PF_{i}#gh-dark-mode-only">|uptime of node `i`, scaled to 0 - 1, for the rewarding epoch
|<img src="https://render.githubusercontent.com/render/math?math=PP_{i}#gh-light-mode-only"><img src="https://render.githubusercontent.com/render/math?math=\color{white}PP_{i}#gh-dark-mode-only">|cost of operating node `i` for the duration of the rewarding epoch, set to 40 NYMT.
Node reward for node `i` is determined as:
<img src="https://render.githubusercontent.com/render/math?math=R_{i}=PF_{i} \cdot R \cdot (\sigma^'_{i} \cdot \omega_{i} \cdot k %2b \alpha \cdot \lambda^'_{i} \cdot \sigma^'_{i} \cdot k)/(1 %2b \alpha)#gh-light-mode-only">
<img src="https://render.githubusercontent.com/render/math?math=\color{white}R_{i}=PF_{i} \cdot R \cdot (\sigma^'_{i} \cdot \omega_{i} \cdot k %2b \alpha \cdot \lambda^'_{i} \cdot \sigma^'_{i} \cdot k)/(1 %2b \alpha)#gh-dark-mode-only">
where `s'` is stake `s` scaled over total token circulating supply.
### Licensing and copyright information
This program is available as open source under the terms of the Apache 2.0 license. However, some elements are being licensed under CC0-1.0 and MIT. For accurate information, please check individual files.
If you're here because you're trying to figure out how to notify us of a security issue, go to Discord, and alert the core engineers:
Dave Hrycyszyn futurechimp#5430
Drazen Urch drazen#4873
Jedrzej Stuczynski "Jedrzej | Nym#5666"
Please avoid opening public issues on GitHub that contain information about a potential security vulnerability as this makes it difficult to reduce the impact and harm of valid security issues.
1. Go to https://fonts.google.com/specimen/Open+Sans
2. Add all the styles you want and select `@import`
3. Copy the url (e.g. curl https://fonts.googleapis.com/css2\?family\=Open+Sans:ital,wght@0,300\;0,400\;0,500\;0,600\;0,700\;0,800\;1,300\;1,400\;1,500\;1,600\;1,700\;1,800\&display\=swap)
4. Run `curl curl https://fonts.googleapis.com/css2\?family\=Open+Sans:ital,wght@0,300\;0,400\;0,500\;0,600\;0,700\;0,800\;1,300\;1,400\;1,500\;1,600\;1,700\;1,800\&display\=swap`
5. Use the response as the CSS import directives and download the font files for each font weight
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.