* 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
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
2020-11-26 16:44:18 +00:00
1407 changed files with 226473 additions and 72111 deletions
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`
- Keybase credentials, channel 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 Keybase 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.
-Corrected version on client-core [\#377](https://github.com/nymtech/nym/pull/377) ([jstuczyn](https://github.com/jstuczyn))
-Mixnodes - claim tokens scenario does not work with telegram bot [\#938](https://github.com/nymtech/nym/issues/938)
-\[Issue\]"create account" button does not work on Ubuntu 20.04.03 LTS [\#916](https://github.com/nymtech/nym/issues/916)
-\[Issue\] NodeJS 17.1.0 and webpack issues causing nym-wallet build to fail on Pop!OS 21.04\(Ubuntu\) [\#914](https://github.com/nymtech/nym/issues/914)
-Prevent overwriting of Mixnodes if the mixnode is already bonded [\#912](https://github.com/nymtech/nym/issues/912)
-Pasting mnemonic doesn't work on MacOS [\#908](https://github.com/nymtech/nym/issues/908)
- Wallet - investigate nav freezes [\#716](https://github.com/nymtech/nym/issues/716)
- Fixes crash condition in validator API when calculating last day uptime [\#909](https://github.com/nymtech/nym/pull/909) ([jstuczyn](https://github.com/jstuczyn))
- Bug fix: Network Explorer: Add freegeoip API key and split out tasks for country distributions [\#806](https://github.com/nymtech/nym/pull/806) ([mmsinclair](https://github.com/mmsinclair))
- Explorer API: port test now split out address resolution and add units tests [\#755](https://github.com/nymtech/nym/pull/755) ([mmsinclair](https://github.com/mmsinclair))
-Added validators to dashboard + validator and block count [\#443](https://github.com/nymtech/nym/pull/443) ([jstuczyn](https://github.com/jstuczyn))
-Adding keybase to allowed.list.sample [\#442](https://github.com/nymtech/nym/pull/442) ([futurechimp](https://github.com/futurechimp))
-Spawning rocket as a blocking task [\#440](https://github.com/nymtech/nym/pull/440) ([jstuczyn](https://github.com/jstuczyn))
-Passing validator base url as an argument [\#439](https://github.com/nymtech/nym/pull/439) ([jstuczyn](https://github.com/jstuczyn))
-Changing default validator location to make it clear we're testnet [\#437](https://github.com/nymtech/nym/pull/437) ([futurechimp](https://github.com/futurechimp))
-Added nym prefix to binary names [\#436](https://github.com/nymtech/nym/pull/436) ([jstuczyn](https://github.com/jstuczyn))
-Added option to set incentives address during mix and gateway init [\#419](https://github.com/nymtech/nym/pull/419) ([jstuczyn](https://github.com/jstuczyn))
-Flag to start network requester in open proxy mode [\#418](https://github.com/nymtech/nym/pull/418) ([jstuczyn](https://github.com/jstuczyn))
-Renamed 'sphinx-socks' to 'network-requester' [\#417](https://github.com/nymtech/nym/pull/417) ([jstuczyn](https://github.com/jstuczyn))
-Updated upgrade commands to set new default validator [\#413](https://github.com/nymtech/nym/pull/413) ([jstuczyn](https://github.com/jstuczyn))
* a reputation tracking system which starts to link node reputation to quality of service
* a new component, the `nym-network-monitor`, which tracks whether nodes are working properly and providing good service
* automatic node registration and de-registration at node startup
* working Cosmos validators with a `nym` token
* starting to decentralize the old directory server into the validators
* a new block explorer at https://testnet-explorer.nymtech.net which looks the same as the old dashboard but is the basis of something much more advanced. It can be run by anyone.
* de-coupling metrics collection from directory services to make the system scale better overall
* reliability and performance improvements for mixnode networking
See the changelog for detailed release notes.
**Implemented enhancements:**
-Nicer error if trying to run an uninitialised client/node [\#389](https://github.com/nymtech/nym/issues/389)
-Explicit proxy runner + closing local connection if remote is over [\#314](https://github.com/nymtech/nym/pull/314) ([jstuczyn](https://github.com/jstuczyn))
- Upgrades tungstenite libraries to new versions with 64MB message sizes. [\#310](https://github.com/nymtech/nym/pull/310) ([futurechimp](https://github.com/futurechimp))
- Assigning connection shared key post registration [\#308](https://github.com/nymtech/nym/pull/308) ([jstuczyn](https://github.com/jstuczyn))
- Feature/client binary api update [\#306](https://github.com/nymtech/nym/pull/306) ([jstuczyn](https://github.com/jstuczyn))
- Removes unused Cargo dependencies so we stay slim and trim. [\#305](https://github.com/nymtech/nym/pull/305) ([futurechimp](https://github.com/futurechimp))
- Removes unused code from the socks client implementation [\#304](https://github.com/nymtech/nym/pull/304) ([futurechimp](https://github.com/futurechimp))
- Removed the healthcheck module, it's no longer in use. [\#271](https://github.com/nymtech/nym/pull/271) ([futurechimp](https://github.com/futurechimp))
- Adding description field to wasm client to kill warning [\#270](https://github.com/nymtech/nym/pull/270) ([futurechimp](https://github.com/futurechimp))
- Running `npm audit fix` on js examples [\#269](https://github.com/nymtech/nym/pull/269) ([futurechimp](https://github.com/futurechimp))
- could not count to ten properly [\#262](https://github.com/nymtech/nym/pull/262) ([ststefa](https://github.com/ststefa))
- build\(deps\): bump websocket-extensions from 0.1.3 to 0.1.4 in /clients/webassembly/js-example [\#261](https://github.com/nymtech/nym/pull/261) ([dependabot[bot]](https://github.com/apps/dependabot))
- add disabling feature 'offline-test' for network-dependent tests [\#260](https://github.com/nymtech/nym/pull/260) ([hyperfekt](https://github.com/hyperfekt))
* the retiring of the store-and-forward providers in favour of gateway nodes
* got rid of TCP connections for clients, everything now happens through websockets
* a new [Nym webassembly client](https://www.npmjs.com/package/@nymproject/nym-client-wasm), making it possible interact with Nym easily in browser-based runtimes
* reliability and performance improvements for mixnode networking
- Give some love to the service provider client ledger [\#116](https://github.com/nymtech/nym/issues/116)
- Start Gateway node type [\#80](https://github.com/nymtech/nym/issues/80)
- Bring health-checker into validator mix-mining [\#78](https://github.com/nymtech/nym/issues/78)
- Solidify TCPSocket on client [\#72](https://github.com/nymtech/nym/issues/72)
- scripts: run\_local\_network.sh doesn't die nicely [\#45](https://github.com/nymtech/nym/issues/45)
- WASM version of the Sphinx packet [\#19](https://github.com/nymtech/nym/issues/19)
- Persistent socket connection \(TCP Socket with provider\) [\#18](https://github.com/nymtech/nym/issues/18)
- Persistent socket connection \(Websocket with client\) [\#17](https://github.com/nymtech/nym/issues/17)
- Persistent socket connection \(TCP Socket with client\) [\#13](https://github.com/nymtech/nym/issues/13)
- Persistent socket connection \(Websocket with client\) [\#12](https://github.com/nymtech/nym/issues/12)
- Persistently store ledger with registered clients and their auth tokens [\#6](https://github.com/nymtech/nym/issues/6)
**Merged pull requests:**
- systemd service unit example [\#257](https://github.com/nymtech/nym/pull/257) ([ststefa](https://github.com/ststefa))
- renaming desktop to native client [\#251](https://github.com/nymtech/nym/pull/251) ([futurechimp](https://github.com/futurechimp))
- Adding a pipenv dependencies file to the python client example [\#250](https://github.com/nymtech/nym/pull/250) ([futurechimp](https://github.com/futurechimp))
- Cleaning up startup messages in native client [\#249](https://github.com/nymtech/nym/pull/249) ([futurechimp](https://github.com/futurechimp))
- fixing up readme, bumping version number [\#246](https://github.com/nymtech/nym/pull/246) ([futurechimp](https://github.com/futurechimp))
- Adding some documentation to the webassembly client [\#244](https://github.com/nymtech/nym/pull/244) ([futurechimp](https://github.com/futurechimp))
- Simplified some names and used the published npm package [\#242](https://github.com/nymtech/nym/pull/242) ([futurechimp](https://github.com/futurechimp))
- Feature/make andrew happy [\#241](https://github.com/nymtech/nym/pull/241) ([futurechimp](https://github.com/futurechimp))
- Fixed unwrap on none value [\#230](https://github.com/nymtech/nym/pull/230) ([jstuczyn](https://github.com/jstuczyn))
- Bugfix/gateway crash on incomplete ws handshake [\#229](https://github.com/nymtech/nym/pull/229) ([jstuczyn](https://github.com/jstuczyn))
- Feature/start local network improvements [\#228](https://github.com/nymtech/nym/pull/228) ([jstuczyn](https://github.com/jstuczyn))
- Updated directory\_client reqwest to 0.10 [\#226](https://github.com/nymtech/nym/pull/226) ([jstuczyn](https://github.com/jstuczyn))
- Updated js-example to get gateway from topology [\#225](https://github.com/nymtech/nym/pull/225) ([jstuczyn](https://github.com/jstuczyn))
- Requiring explicit timestamp when converting from rest to service mix… [\#224](https://github.com/nymtech/nym/pull/224) ([jstuczyn](https://github.com/jstuczyn))
- Removed having to care about SURB\_ID [\#222](https://github.com/nymtech/nym/pull/222) ([jstuczyn](https://github.com/jstuczyn))
- Moved relevant parts of old mix-client to nymsphinx [\#221](https://github.com/nymtech/nym/pull/221) ([jstuczyn](https://github.com/jstuczyn))
- Feature/load keys on run [\#220](https://github.com/nymtech/nym/pull/220) ([jstuczyn](https://github.com/jstuczyn))
- Updated wasm code to work with new gateway and updated the example [\#219](https://github.com/nymtech/nym/pull/219) ([jstuczyn](https://github.com/jstuczyn))
- validator: removing health checker [\#217](https://github.com/nymtech/nym/pull/217) ([futurechimp](https://github.com/futurechimp))
- The great sfw-provider purge of 2020 [\#216](https://github.com/nymtech/nym/pull/216) ([jstuczyn](https://github.com/jstuczyn))
- Fixed compilation warnings on unreachable code when compiling with fe… [\#215](https://github.com/nymtech/nym/pull/215) ([jstuczyn](https://github.com/jstuczyn))
- Feature/improve js example [\#190](https://github.com/nymtech/nym/pull/190) ([futurechimp](https://github.com/futurechimp))
- Feature/limit direct sphinx dependency + remove direct curve25519 dependency from wasm client [\#189](https://github.com/nymtech/nym/pull/189) ([jstuczyn](https://github.com/jstuczyn))
- Feature/very minor refactoring [\#188](https://github.com/nymtech/nym/pull/188) ([jstuczyn](https://github.com/jstuczyn))
This release fixes bugs in v0.5.0. All testnet node operators are advised to upgrade from v0.5.0.
* fixed premature EOFs on socket connections by using the new multi-TCP client
* fixed a bug causing client and mixnode connection hangs for misconfigured nodes
* by default 'Debug' section of saved configs is now empty and default values are used unless explicitly overridden
* introduced packet chunking allowing clients to send messages of arbitrary length. Note that packet retransmission is not implemented yet, so for longer messages, you might not get anything
* mixnodes now periodically log stats regarding number of packets mixed
* fixed possible client hang ups when sending high rates of traffic
* preventing mixes from starting with same announce-host as an existing node
* fixed overflow multiplication if connection backoff was set to a high value
- Checking if any other node is already announcing the same host [\#168](https://github.com/nymtech/nym/pull/168) ([jstuczyn](https://github.com/jstuczyn))
- Bugfix/closing tcp client connections on drop [\#167](https://github.com/nymtech/nym/pull/167) ([jstuczyn](https://github.com/jstuczyn))
- Yielding tokio task upon creating loop/real traffic message [\#166](https://github.com/nymtech/nym/pull/166) ([jstuczyn](https://github.com/jstuczyn))
1. Introduced proper configuration options for mixnodes, clients and providers. Everything is initialised with the `init` command that creates a saved config.toml file. To run the binary you now use `nym-<binary-name> run`, for example `nym-mixnode run`. Each flag can be overwritten at any stage with the following priority: run flags, data in config.toml and finally init flags.
2. Made mixnet TCP connections persistent. When sending a Sphinx packet, it should no longer go through the lengthy process of establishing a TCP connection only to immediately tear it down after sending a single packet. This significantly boosts throughput.
3. A lot of work on code clean up and refactoring including some performance fixes.
4. Client now determines its default nym-sfw-provider at startup and should always try to connect to the same one. Note: we still can't reliably run more than a single provider on the network.
5. Logging messages now have timestamps and when running at more aggressive log mode (like debug or even trace) we should no longer be overwhelmed with messages from external crates.
6. Initial compatibility with Windows. Please let us know if you have problems.
7. More work on validator, including initial Tendermint integration in Rust, and the start of the mixmining system.
**Closed issues:**
- Introduce timestamps to log messages [\#124](https://github.com/nymtech/nym/issues/124)
- Defaulting for global 'Info' logging level if not set in .env [\#140](https://github.com/nymtech/nym/pull/140) ([jstuczyn](https://github.com/jstuczyn))
- Provider not storing loop cover messages [\#139](https://github.com/nymtech/nym/pull/139) ([jstuczyn](https://github.com/jstuczyn))
- Using log builder to include timestamps + filters [\#138](https://github.com/nymtech/nym/pull/138) ([jstuczyn](https://github.com/jstuczyn))
- Removed outdated and redundant sample-configs [\#131](https://github.com/nymtech/nym/pull/131) ([jstuczyn](https://github.com/jstuczyn))
- If not overridden, 'announce-host' should default to 'host' [\#130](https://github.com/nymtech/nym/pull/130) ([jstuczyn](https://github.com/jstuczyn))
- Nice to know who we're talking to at startup... [\#129](https://github.com/nymtech/nym/pull/129) ([futurechimp](https://github.com/futurechimp))
- Create config struct for mixnode \(possibly also for client\) [\#21](https://github.com/nymtech/nym/issues/21)
- Reuse TCP socket connection between client and mixnodes [\#20](https://github.com/nymtech/nym/issues/20)
- Once implementation is available, wherever appropriate, replace `futures::lock::Mutex` with `futures::lock::RwLock` [\#9](https://github.com/nymtech/nym/issues/9)
- Check if RwLock on MixProcessingData is still needed [\#8](https://github.com/nymtech/nym/issues/8)
- Reuse TCP socket connection between mixnodes and providers [\#3](https://github.com/nymtech/nym/issues/3)
- Persistent socket connection with other mixes [\#2](https://github.com/nymtech/nym/issues/2)
- Simplified the use of generics on identity keypair by using output types [\#109](https://github.com/nymtech/nym/pull/109) ([jstuczyn](https://github.com/jstuczyn))
In this release, we're taking a lot more care with version numbers, so that we can ensure upgrade compatibility for mixnodes, providers, clients, and validators more easily.
This release also integrates a health-checker and network topology refresh into the Nym client, so that the client can intelligently choose paths which route around any non-functional or incompatible nodes.
- Release builds should no longer silently fail - everything will be im… [\#89](https://github.com/nymtech/nym/pull/89) ([jstuczyn](https://github.com/jstuczyn))
- Using println rather than log for startup banner, it's not an error [\#87](https://github.com/nymtech/nym/pull/87) ([futurechimp](https://github.com/futurechimp))
- print public key for nym client tools [\#53](https://github.com/nymtech/nym/pull/53) ([mileschet](https://github.com/mileschet))
- Showing binding warning on binding to localhost, 0.0.0.0 or 127.0.0.1 [\#52](https://github.com/nymtech/nym/pull/52) ([jstuczyn](https://github.com/jstuczyn))
- Providing a nicer error than "failed on unwrap\(\)" when topology retri… [\#41](https://github.com/nymtech/nym/pull/41) ([futurechimp](https://github.com/futurechimp))
- Prettying up sfw-provider start sequence a bit. [\#40](https://github.com/nymtech/nym/pull/40) ([futurechimp](https://github.com/futurechimp))
- Removing the run command from code and documentation [\#39](https://github.com/nymtech/nym/pull/39) ([futurechimp](https://github.com/futurechimp))
- Feature/refactor mixnet contract test helpers [\#986](https://github.com/nymtech/nym/pull/986) ([futurechimp](https://github.com/futurechimp))
-Making the terminology consistent between mixnode/gateway output and … [\#985](https://github.com/nymtech/nym/pull/985) ([futurechimp](https://github.com/futurechimp))
- Feature/add wallet to gateway init [\#984](https://github.com/nymtech/nym/pull/984) ([futurechimp](https://github.com/futurechimp))
-Feature/add wallet address to init [\#982](https://github.com/nymtech/nym/pull/982) ([futurechimp](https://github.com/futurechimp))
-Update message to bond mixnode [\#981](https://github.com/nymtech/nym/pull/981) ([tommyv1987](https://github.com/tommyv1987))
-Bump version to 0.12.0 [\#980](https://github.com/nymtech/nym/pull/980) ([neacsu](https://github.com/neacsu))
-Removed web wallet [\#978](https://github.com/nymtech/nym/pull/978) ([futurechimp](https://github.com/futurechimp))
-Network Explorer: fix uptime history display to use new API response [\#977](https://github.com/nymtech/nym/pull/977) ([mmsinclair](https://github.com/mmsinclair))
-Make develop branch agnostic of the network [\#976](https://github.com/nymtech/nym/pull/976) ([neacsu](https://github.com/neacsu))
-Fix windows fmt [\#975](https://github.com/nymtech/nym/pull/975) ([neacsu](https://github.com/neacsu))
-Feature/wallet settings area [\#974](https://github.com/nymtech/nym/pull/974) ([fmtabbara](https://github.com/fmtabbara))
-Feature/node info command [\#972](https://github.com/nymtech/nym/pull/972) ([jstuczyn](https://github.com/jstuczyn))
-Use the renamed balance function [\#971](https://github.com/nymtech/nym/pull/971) ([neacsu](https://github.com/neacsu))
-Introduced 'version' command to all relevant binaries [\#969](https://github.com/nymtech/nym/pull/969) ([jstuczyn](https://github.com/jstuczyn))
-Bump next from 11.1.1 to 11.1.3 in /wallet-web [\#952](https://github.com/nymtech/nym/pull/952) ([dependabot[bot]](https://github.com/apps/dependabot))
-Different workshare calculations for rewarded vs active set [\#951](https://github.com/nymtech/nym/pull/951) ([durch](https://github.com/durch))
-Move cleaned up smart contracts to main code repo [\#929](https://github.com/nymtech/nym/pull/929) ([mfahampshire](https://github.com/mfahampshire))
- Feature/mixnet contract further adjustments [\#928](https://github.com/nymtech/nym/pull/928) ([jstuczyn](https://github.com/jstuczyn))
-typo copy change for nodemap [\#926](https://github.com/nymtech/nym/pull/926) ([Aid19801](https://github.com/Aid19801))
- Feature/UI enhancements for Desktop Wallet [\#925](https://github.com/nymtech/nym/pull/925) ([fmtabbara](https://github.com/fmtabbara))
- Fixing some clippy warnings [\#922](https://github.com/nymtech/nym/pull/922) ([futurechimp](https://github.com/futurechimp))
- Fixing go warning re unused btc lib [\#921](https://github.com/nymtech/nym/pull/921) ([futurechimp](https://github.com/futurechimp))
-quick fix adding dimensions to nodemap page for consistency [\#920](https://github.com/nymtech/nym/pull/920) ([Aid19801](https://github.com/Aid19801))
-Bump nth-check from 2.0.0 to 2.0.1 in /nym-wallet [\#918](https://github.com/nymtech/nym/pull/918) ([dependabot[bot]](https://github.com/apps/dependabot))
- Fix Mobile View for MUI data-grid \(CARD 108\) [\#915](https://github.com/nymtech/nym/pull/915) ([Aid19801](https://github.com/Aid19801))
- Change MixnodeDetail page's datagrid into a reuseable table component [\#887](https://github.com/nymtech/nym/pull/887) ([Aid19801](https://github.com/Aid19801))
- GitHub Actions: only run job to generate types when not in a PR [\#886](https://github.com/nymtech/nym/pull/886) ([mmsinclair](https://github.com/mmsinclair))
- Adding data-test-ids for the explorer [\#885](https://github.com/nymtech/nym/pull/885) ([tommyv1987](https://github.com/tommyv1987))
- Fix path for github action running tauri-wallet-tests [\#884](https://github.com/nymtech/nym/pull/884) ([tommyv1987](https://github.com/tommyv1987))
-Reverted gateway registration handshake to its 0.11.0 version [\#882](https://github.com/nymtech/nym/pull/882) ([jstuczyn](https://github.com/jstuczyn))
-Network Explorer [\#881](https://github.com/nymtech/nym/pull/881) ([mmsinclair](https://github.com/mmsinclair))
-Put client\_address and id in the correct order [\#875](https://github.com/nymtech/nym/pull/875) ([neacsu](https://github.com/neacsu))
-remove gateway selection on delegation and undelegation pages [\#873](https://github.com/nymtech/nym/pull/873) ([fmtabbara](https://github.com/fmtabbara))
-Set MSRV on all binaries to 1.56 [\#872](https://github.com/nymtech/nym/pull/872) ([jstuczyn](https://github.com/jstuczyn))
-add native window items \(copy/paste\) via tauri [\#871](https://github.com/nymtech/nym/pull/871) ([fmtabbara](https://github.com/fmtabbara))
-Remove stale migration code [\#868](https://github.com/nymtech/nym/pull/868) ([neacsu](https://github.com/neacsu))
-Fixed most recent nightly clippy warnings [\#865](https://github.com/nymtech/nym/pull/865) ([jstuczyn](https://github.com/jstuczyn))
- Active sets =\> Rewarded + Active/Idle sets [\#864](https://github.com/nymtech/nym/pull/864) ([jstuczyn](https://github.com/jstuczyn))
- Made daily uptime calculation be independent of epoch rewarding [\#860](https://github.com/nymtech/nym/pull/860) ([jstuczyn](https://github.com/jstuczyn))
-Explorer-api: add API resource to show the delegations for each mix node [\#774](https://github.com/nymtech/nym/pull/774) ([mmsinclair](https://github.com/mmsinclair))
-Migrate legacy delegation data [\#771](https://github.com/nymtech/nym/pull/771) ([durch](https://github.com/durch))
- Adding deps for building the Tauri wallet under Ubuntu [\#770](https://github.com/nymtech/nym/pull/770) ([futurechimp](https://github.com/futurechimp))
- Bump next from 11.1.0 to 11.1.1 in /wallet-web [\#758](https://github.com/nymtech/nym/pull/758) ([dependabot[bot]](https://github.com/apps/dependabot))
-Add block\_height in the Delegation structure as well [\#757](https://github.com/nymtech/nym/pull/757) ([neacsu](https://github.com/neacsu))
-NetworkMonitorBuilder - starting the monitor after rocket has launched [\#754](https://github.com/nymtech/nym/pull/754) ([jstuczyn](https://github.com/jstuczyn))
-Enabled validators api argument [\#753](https://github.com/nymtech/nym/pull/753) ([jstuczyn](https://github.com/jstuczyn))
-Correctly bounding nominator of uptime calculation [\#752](https://github.com/nymtech/nym/pull/752) ([jstuczyn](https://github.com/jstuczyn))
-Fixed argument parsing for ipv6 'good' topology [\#751](https://github.com/nymtech/nym/pull/751) ([jstuczyn](https://github.com/jstuczyn))
- Revert "Migration commit, will be reverted after the testnet contract… [\#749](https://github.com/nymtech/nym/pull/749) ([neacsu](https://github.com/neacsu))
- Feature/get own delegations [\#748](https://github.com/nymtech/nym/pull/748) ([neacsu](https://github.com/neacsu))
-Feature/copy to clipboard [\#740](https://github.com/nymtech/nym/pull/740) ([fmtabbara](https://github.com/fmtabbara))
- Feature/update wallet with stake rates [\#739](https://github.com/nymtech/nym/pull/739) ([neacsu](https://github.com/neacsu))
- Add stake reward rates and bump version of client [\#738](https://github.com/nymtech/nym/pull/738) ([neacsu](https://github.com/neacsu))
- Bump next from 10.1.3 to 11.1.0 in /wallet-web [\#737](https://github.com/nymtech/nym/pull/737) ([dependabot[bot]](https://github.com/apps/dependabot))
-Bug/fix parking lot on wasm [\#735](https://github.com/nymtech/nym/pull/735) ([neacsu](https://github.com/neacsu))
-Explorer API: add new HTTP resource to decorate mix nodes with geoip locations [\#734](https://github.com/nymtech/nym/pull/734) ([mmsinclair](https://github.com/mmsinclair))
- Feature/completing nymd client api [\#732](https://github.com/nymtech/nym/pull/732) ([jstuczyn](https://github.com/jstuczyn))
- Explorer API - add port check and node description/stats proxy [\#731](https://github.com/nymtech/nym/pull/731) ([mmsinclair](https://github.com/mmsinclair))
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:
@@ -9,18 +12,68 @@ The platform is composed of multiple Rust crates. Top-level executable binary cr
* 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-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">|global share of rewards available, starts at 2% of the reward pool.
|<img src="https://render.githubusercontent.com/render/math?math=R_{i}">|node reward for mixnode `i`.
|<img src="https://render.githubusercontent.com/render/math?math=\sigma_{i}">|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}">|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}">|fraction of total effort undertaken by node `i`, set to `1/k`.
|<img src="https://render.githubusercontent.com/render/math?math=k">|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">|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}">|declared profit margin of operator `i`, defaults to 10% in.
|<img src="https://render.githubusercontent.com/render/math?math=PF_{i}">|uptime of node `i`, scaled to 0 - 1, for the rewarding epoch
|<img src="https://render.githubusercontent.com/render/math?math=PP_{i}">|cost of operating node `i` for the duration of the rewarding eopoch, 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)">
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.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam quis efficitur neque. Quisque aliquet vulputate ante, eget vehicula odio feugiat ac. Nulla ut mattis magna. Aenean tincidunt quis nulla eget eleifend. Cras in pretium sem. Nunc lorem metus, blandit sit amet egestas ut, feugiat quis tellus. Aenean tristique, enim a tincidunt condimentum, eros est blandit nunc, id viverra metus erat at nulla. Vivamus at tellus sodales, feugiat odio vel, laoreet neque. Vivamus posuere nulla ac sodales bibendum.
Vestibulum pulvinar nisi non ultricies egestas. Integer finibus ultrices justo vitae suscipit. Etiam interdum eu justo vel interdum. Morbi sagittis ac nisl quis consequat. Mauris dapibus ut risus ac facilisis. Pellentesque non tortor feugiat, consectetur arcu vel, ullamcorper sapien. Proin sodales purus non orci bibendum, sit amet ultrices justo ullamcorper. Nullam ac risus ac justo ultricies efficitur auctor nec arcu. Etiam sed finibus felis. Suspendisse potenti. Phasellus malesuada velit ac ullamcorper egestas. Sed elementum diam ut est gravida ultricies.
Pellentesque sed metus massa. Cras imperdiet lacus sit amet dolor aliquam, luctus posuere justo hendrerit. Morbi augue ex, gravida a metus sed, scelerisque euismod lacus. Nam consequat sapien ac pellentesque sagittis. Morbi a ultrices massa, vel aliquet ex. Maecenas ac sem diam. Nunc sed erat et ipsum volutpat auctor. Etiam elit felis, commodo vitae ipsum ac, fermentum lobortis arcu. Aliquam eu tempus enim. Curabitur vulputate imperdiet aliquam. Morbi iaculis rhoncus risus at malesuada. Donec accumsan feugiat ligula ut facilisis. Nunc porttitor sit amet est eget malesuada. Sed sed consectetur augue, non dapibus orci. Mauris aliquam pellentesque quam, sit amet pellentesque velit cursus vitae. Morbi sit amet molestie risus.
Nam gravida non ligula a egestas. Fusce sodales, purus id rhoncus mattis, purus est vehicula urna, vel finibus augue velit et est. Donec dictum erat eleifend lobortis iaculis. Praesent id venenatis ante. Donec feugiat, ipsum eget porttitor pulvinar, nisl odio posuere lorem, ut placerat elit nulla a ligula. Suspendisse nec nibh tincidunt, sollicitudin mi a, volutpat ligula. In maximus quam lacus, eget semper dolor sagittis sit amet.
In vitae hendrerit est, quis facilisis dui. In eu ante enim. Nullam hendrerit odio sit amet odio tincidunt eleifend. Aliquam erat volutpat. Curabitur commodo, purus pharetra lobortis rhoncus, tortor massa imperdiet nisl, vel dignissim tortor sem at orci. Aliquam maximus lobortis lacus, eu porttitor purus dapibus ut. Praesent at dapibus felis, efficitur blandit tortor. In hac habitasse platea dictumst. Aenean ultrices, nisl a pretium sagittis, tellus sapien mollis erat, eu consectetur erat mauris sed libero. Duis feugiat dapibus mi, vel ornare velit vehicula mattis. Ut suscipit pharetra leo et sollicitudin.
.help("Port for the socket (if applicable) to listen on in all subsequent runs")
.takes_value(true)
)
.arg(Arg::with_name("vpn-mode")
.long("vpn-mode")
.help("Set the vpn mode of the client")
.long_help(
r#"
Special mode of the system such that all messages are sent as soon as they are received
and no cover traffic is generated. If set all message delays are set to 0 and overwriting
'Debug' values will have no effect.
"#
)
)
.arg(Arg::with_name("fastmode")
.long("fastmode")
.hidden(true)// this will prevent this flag from being displayed in `--help`
.help("Mostly debug-related option to increase default traffic rate so that you would not need to modify config post init")
);
#[cfg(feature = "eth")]
#[cfg(not(feature = "coconut"))]
letapp=app
.arg(
Arg::with_name(TESTNET_MODE_ARG_NAME)
.long(TESTNET_MODE_ARG_NAME)
.help("Set this client to work in a testnet mode that would attempt to use gateway without bandwidth credential requirement. If this value is set, --eth_endpoint and --eth_private_key don't need to be set.")
.help("URL of an Ethereum full node that we want to use for getting bandwidth tokens from ERC20 tokens. If you don't want to set this value, use --testnet-mode instead")
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.