* New transactions for increasing amount of pledged tokens
* unit tests
* Added an option to pledge extra tokens through the vesting contract
* Introduced wallet endpoints for new operations
* Using updated pledge cap in the vesting contract
* Changelog update
* Disallowing the use of unwraps and expects in vesting and mixnet contracts
* Removed dodgy unwraps from the mixnet contract
* Removed dodgy unwraps from the vesting contract
* Removed unwraps/expects from common contracts crate
* ...but adding the unwraps in tests
* simple multi-node simulator
* Extending simulator with multi-node feature + testing against known good values
* Mixnet contract test fixes
* comment explaining the epsilon choice
* Renamed the type alias NodeId to MixId and fixed some usages
* fix(wallet): bonding context
* fix(wallet): remove ip field (type error)
Co-authored-by: pierre <dommerc.pierre@gmail.com>
* Replaced serde renames to aliases
Ideally I would have removed all serde macros, but then it would have broken existing QA deployments - perhaps we should do it later
* Renamed 'node_id' in Delegation to 'mix_id'
* Further renamings of 'node_id' to 'mix_id' in various places
* Query for node stake saturation
* Queries for currently pending events
* Rewarded set query
* Moved ContractState to common types
since it's being returned as a result of one of the queries on the mixnet contract and thus it needs to be accessible outside the contract itself
* Cleaend up storage initialisation
* started restoring unit tests
* Removed attached 1ucoin for cross-contract execute msgs
* wip
* query for rewarding details of a mix node
* Changes for mixnodes and gateways
* Furher progress on v2 changelog(-ish) description
* wip
* first version of the description
* mixnode bonding queries tests and fixes
* ibid for storage
* MixnodeEventType enum + created events for missing mixnode txs
* tests for adding new mixnode
* Additional mixnode-related tests + bug fixes
* Display for Percent
* Bunch of tests for try_reward_mixnode
* More tests and fixes
* ibid
* tests for updating rewarding params + important bug fix
* Started removing unused imports
* rewarding queries tests + undelegation bugfix
* A lot of todo()-ing and commenting out unimplemented code
* implements https://github.com/nymtech/team-core/issues/113
* Delegation tests + fixes
* Emiting events by top level interval txs + incorporating limit
* question
* Missing events emissions
* removed some code duplication
* wip
* pending delegation tests
* Vesting contract update
* More tests (and fixes) for pending events txs
* Restored gateway tx tests
* Another cleanup iteration
* removed redundant comment
* Unit tests, fixes and simplifcations for interval-related txs
* Unit tests for helper functions
* Interval queries unit tests
* Test for correct contract initialisation
* Another round of cleanup
* Work on mixnet_query_client trait
* mixnet_signing_client trait
* Removed redundant methods
* Slowly restoring validator client functionality
* Added deprecated query for mix details by identity
* wip restoration of validator-api
* Work on deprecating validator API routes
* Further validator-api routes
* Restored rest of status api routes
* Resolved all todos in ValidatorApiStorage
There's still bunch left in StorageManager though
* Changed NodeId from u64 to u32
* Updating sql code
* Network monitor internals
* Changed behaviour of full_epoch_id and updated epoch operations
* Fixed sql queries
* [most likely] finished updating rest of the validator API
* Post rebasing fixes
* Feature/rewarding revamp explorer api changes (#1511)
* Changed cache to allow for non-string keys
* Helper method for best-effort conversion of pubkey to nodeid
* Updated validator-api client routes
* Updated routes to use mix-id indexing
* Introduction of deprecated routes callable by identity key
* Fixed mixnode compatibility by changing read node details fields (#1512)
* Fixed bond to topology conversion for client compatibility (#1513)
* Updated 'verify_gateway_owner' to use correct nymd_client method for obtaining gateway details (#1515)
* Updated constructor for ValidatorCacheInner
* Fixed wasm client topology construction
* Run cargo fmt on the entire codebase
* Feature/rewarding revamp wallet backend changes (#1529)
* Updated mixnode-related ts types
* Updated nym-wallet-types
* Updated 'get_contract_settings' and commented out code of other tauri commands
* 'update_contract_settings'
* 'bond_gateway'
* unbond_gateway'
* Utility commands for the transition period
* 'bond_mixnode'
* 'unbond_mixnode'
* Ability to update mixnode cost paramaters
* Mixnode config update
* Updated mixnode_bond_details
It also returns a different underlying type now
* Updated 'gateway_bond_details'
* Obtaining pending operator rewards
* Improved way of obtaining number of mixnode delegators
* simplified error handling in 'fetch_mix_node_description'
* mixnode and gateway ownership queries
* updated get_number_of_mixnode_delegators to use mix_id since we have the conversion utils helper
* mixnode delegation
* undelegating
* Obtaining pending delegator rewards
* Command for obtaining current interval details
* Queries to handle paging for pending events
* Additional level of indirection to pending events to incorporate event id into response
* Wallet compatible pending event types
* Commands fo obtaining pending events
* Re-implemented pending delegation events
* Further work on delegation
* Removed unused imports
* Commands for withdrawing rewards
* Admin-related simulations
* mixnet-related simulation commands
* Validator-api related routes
* Bond-related vesting operations
* Vesting simulations
* Vesting handler for UpdateMixnodeCostParams
* Vesting reward claiming
* Vesting queries
* claim_locked_and_unlocked_delegator_reward
* The massive delegation query
* cleanup
* updated typescript requests
* sorted the new type exports in ts-rs-cli
* Regenerated typescript types
* temporarily ignoring unreachable code in vesting migration
* Updated missed test fixture
* Fixed missing coconut-specific import
* cargo fmt
* Exporting reward-related types
* utility to convert stringified decimal to cosmjs Decimal
* deriving Eq alongside PartialEq
* wip - typescript fixes
* using default operating cost when bonding mixnode
* Using default operating cost when updating mixnode cost params
* most delegation fixes
* Wrapping delegation with node identity
* Added MultiIndex on owner and identity key to unbonded mixnodes
* Support for queries for unbonded nodes by owner or by identity key
* Cargo fmt + ts types update
* feature locking unused imports
* fix(nym-wallet): typing and error (#1548)
* post-rebase fixes
* Changed storage key for new delegations map in vesting contract
* fix(wallet): typing issues (#1562)
* fix(wallet): error UI feedback (#1565)
* clean(wallet): remove useless files (with flamethrowers 🔥) (#1567)
* Changed default_mixnode_cost_params to allow accepting f32 instead
* Revert "Changed default_mixnode_cost_params to allow accepting f32 instead"
This reverts commit fb62a0014f.
* Fixed APY calculation for 0 pledge value
* Don't send rewarding transactions for empty rewarded set
* Fixed mixnode rewarding in validator API
* fix(nym-wallet): profit margin (#1574)
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* Removed todo!() from vesting contract migration since its going to be dealt with differently
* fix(nym-wallet): stake saturation and delegations (#1578)
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): stake saturation percentage
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* fix(nym-wallet): get rid of delegation history
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* fix(nym-wallet): welcome back pending events and delegation menu
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): get rid of delegation history
* Updated typescript side of things
* fix(nym-wallet): welcome back pending events and delegation menu
* fix(nym-wallet): fix clippy
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Updated vesting contract migration to update the mixnet contract address
* feat(wallet): add confirmation/warning modal for unbonding
* Post rebasing fixes
* commented out all code
* Bunch of work in progres, but working simulator
* Removing redundant fields + increased precision to 9decimal places
* deserialization of Percent with value validation
* wip
* Further moving things around + mixnode bonding
* Mixnode unbonding
* Starting restoration on contract state
* Revamping interval
* More work on epoch/interval
* progress on mixnode rewarding
* Moved MixNodeRewarding to rewards storage
* wip on delegations
* Removed concept of periods and historical records and moved cummulative reward ratio directly to delegation
* more wip delegation
* Full delegation flow
* mixnode config updates
* Mixnode cost function updates
* Work on moving mixnode unbonding to post-epoch actions
* Unbonding
* Processing undelegation
* changing cost params
* Uncommented existing gateways features
without much changes so far, however, things like unbonding should probably also go to epoch queue
* ExecuteMsg cleanup
* unit tests for withdrawing rewards against known values
* Transactions for withdrawing rewards
* Transactions for updating various parameters
* First round of post-tx cleanup
* Moved all storage keys to constants.rs
* Using correct initial gateway pledge amount
* Renamed sybil_resistance_percent to sybil_resistance with percent being implicit from the typ
* Starting with contract queries
* Keeping minimal details of unbonded mixnoces
* Checking for owner address rather than rewarding validator when updating rewarding params
* Mixnode-related queries
* Gateway-related queries
* Query for paged unbonded mixnodes
* Delegations queries
* Query for current interval details
* Removed 'fixed' dependency from the mixnet common
* wip on implementing rewards-related queries
* Pending rewards queries
* Query for node stake saturation
* Queries for currently pending events
* Rewarded set query
* Moved ContractState to common types
since it's being returned as a result of one of the queries on the mixnet contract and thus it needs to be accessible outside the contract itself
* Cleaend up storage initialisation
* started restoring unit tests
* Removed attached 1ucoin for cross-contract execute msgs
* wip
* query for rewarding details of a mix node
* Changes for mixnodes and gateways
* Furher progress on v2 changelog(-ish) description
* wip
* first version of the description
* mixnode bonding queries tests and fixes
* ibid for storage
* MixnodeEventType enum + created events for missing mixnode txs
* tests for adding new mixnode
* Additional mixnode-related tests + bug fixes
* Display for Percent
* Bunch of tests for try_reward_mixnode
* More tests and fixes
* ibid
* tests for updating rewarding params + important bug fix
* Started removing unused imports
* rewarding queries tests + undelegation bugfix
* A lot of todo()-ing and commenting out unimplemented code
* implements https://github.com/nymtech/team-core/issues/113
* Delegation tests + fixes
* Emiting events by top level interval txs + incorporating limit
* question
* Missing events emissions
* removed some code duplication
* wip
* pending delegation tests
* Vesting contract update
* More tests (and fixes) for pending events txs
* Restored gateway tx tests
* Another cleanup iteration
* removed redundant comment
* Unit tests, fixes and simplifcations for interval-related txs
* Unit tests for helper functions
* Interval queries unit tests
* Test for correct contract initialisation
* Another round of cleanup
* Work on mixnet_query_client trait
* mixnet_signing_client trait
* Removed redundant methods
* Slowly restoring validator client functionality
* Added deprecated query for mix details by identity
* wip restoration of validator-api
* Work on deprecating validator API routes
* Further validator-api routes
* Restored rest of status api routes
* Resolved all todos in ValidatorApiStorage
There's still bunch left in StorageManager though
* Changed NodeId from u64 to u32
* Updating sql code
* Network monitor internals
* Changed behaviour of full_epoch_id and updated epoch operations
* Fixed sql queries
* [most likely] finished updating rest of the validator API
* Post rebasing fixes
* Feature/rewarding revamp explorer api changes (#1511)
* Changed cache to allow for non-string keys
* Helper method for best-effort conversion of pubkey to nodeid
* Updated validator-api client routes
* Updated routes to use mix-id indexing
* Introduction of deprecated routes callable by identity key
* Fixed mixnode compatibility by changing read node details fields (#1512)
* Fixed bond to topology conversion for client compatibility (#1513)
* Updated 'verify_gateway_owner' to use correct nymd_client method for obtaining gateway details (#1515)
* Updated constructor for ValidatorCacheInner
* Fixed wasm client topology construction
* Run cargo fmt on the entire codebase
* Feature/rewarding revamp wallet backend changes (#1529)
* Updated mixnode-related ts types
* Updated nym-wallet-types
* Updated 'get_contract_settings' and commented out code of other tauri commands
* 'update_contract_settings'
* 'bond_gateway'
* unbond_gateway'
* Utility commands for the transition period
* 'bond_mixnode'
* 'unbond_mixnode'
* Ability to update mixnode cost paramaters
* Mixnode config update
* Updated mixnode_bond_details
It also returns a different underlying type now
* Updated 'gateway_bond_details'
* Obtaining pending operator rewards
* Improved way of obtaining number of mixnode delegators
* simplified error handling in 'fetch_mix_node_description'
* mixnode and gateway ownership queries
* updated get_number_of_mixnode_delegators to use mix_id since we have the conversion utils helper
* mixnode delegation
* undelegating
* Obtaining pending delegator rewards
* Command for obtaining current interval details
* Queries to handle paging for pending events
* Additional level of indirection to pending events to incorporate event id into response
* Wallet compatible pending event types
* Commands fo obtaining pending events
* Re-implemented pending delegation events
* Further work on delegation
* Removed unused imports
* Commands for withdrawing rewards
* Admin-related simulations
* mixnet-related simulation commands
* Validator-api related routes
* Bond-related vesting operations
* Vesting simulations
* Vesting handler for UpdateMixnodeCostParams
* Vesting reward claiming
* Vesting queries
* claim_locked_and_unlocked_delegator_reward
* The massive delegation query
* cleanup
* updated typescript requests
* sorted the new type exports in ts-rs-cli
* Regenerated typescript types
* temporarily ignoring unreachable code in vesting migration
* Updated missed test fixture
* Fixed missing coconut-specific import
* cargo fmt
* Exporting reward-related types
* utility to convert stringified decimal to cosmjs Decimal
* deriving Eq alongside PartialEq
* wip - typescript fixes
* using default operating cost when bonding mixnode
* Using default operating cost when updating mixnode cost params
* most delegation fixes
* Wrapping delegation with node identity
* Added MultiIndex on owner and identity key to unbonded mixnodes
* Support for queries for unbonded nodes by owner or by identity key
* Cargo fmt + ts types update
* feature locking unused imports
* fix(nym-wallet): typing and error (#1548)
* post-rebase fixes
* Changed storage key for new delegations map in vesting contract
* fix(wallet): typing issues (#1562)
* fix(wallet): error UI feedback (#1565)
* clean(wallet): remove useless files (with flamethrowers 🔥) (#1567)
* Changed default_mixnode_cost_params to allow accepting f32 instead
* Revert "Changed default_mixnode_cost_params to allow accepting f32 instead"
This reverts commit fb62a0014f.
* Fixed APY calculation for 0 pledge value
* Don't send rewarding transactions for empty rewarded set
* Fixed mixnode rewarding in validator API
* fix(nym-wallet): profit margin (#1574)
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* Removed todo!() from vesting contract migration since its going to be dealt with differently
* fix(nym-wallet): stake saturation and delegations (#1578)
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): stake saturation percentage
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* fix(nym-wallet): get rid of delegation history
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* Correctly assigning Delegate event type to PendingEpochEventData::Delegate
* Replaced 'history' in with 'pending_events' in DelegationWithEverything
* Updated typescript side of things
* fix(nym-wallet): welcome back pending events and delegation menu
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): stake saturation percentage
* fix(nym-wallet): get rid of delegation history
* Updated typescript side of things
* fix(nym-wallet): welcome back pending events and delegation menu
* fix(nym-wallet): fix clippy
Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com>
* Updated vesting contract migration to update the mixnet contract address
* feat(wallet): add confirmation/warning modal for unbonding
* Post rebasing fixes
* Removed deprecation on GetMixnodeDetailsByIdentity
* Fixed nym-cli
* Removed needless borrow
* Updated colorMap and textMap
Co-authored-by: durch <durch@users.noreply.github.com>
Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
Co-authored-by: Pierre Dommerc <dommerc.pierre@gmail.com>
* Clients use env
* Explorer api uses env
* Mainnet and qa env files
* Set CONFIGURED on the mainnet defaulting
* Gateway uses env
* Mixnode uses env
* Wallet error simplification
* Network requester takes only mainnet client address
* Validator api uses env
* Mixnet contract uses denom from instantiate
* Vesting contract uses denom from instantiate
* More contract test refactoring
* Coconut bandwidth contract uses denom from instantiate
* Bandwidth claim contract uses denom from instantiate and remove from Cargos
* More remove from Cargos and one missed DEFAULT_NETWORK
* Refactor some other missed places
* Minor fixes
* Test and clippy fixes
* Update CHANGELOG
* Constructing `EpochRewardParams` with proper staking_supply
* Query for current staking supply
* More crate visibility on epoch reward params
* unused import
* Remove duplicate save of epoch_reward_params
* test fixes
* Changelog
* Moved PR references to correct section
* cargo fmt
* Removed old migration code
* Cosmwasm beta6 => beta8 upgrade
* Introducing additional unique index constraint on sphinx key
* Unit test for checking for duplicate sphinx key
* Fixed other unit tests due to changed constraint
* 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
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.
* 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>
* 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>
* 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
* 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>
* 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>
* 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>
* 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>
* 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
* 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
* 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
* 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>
* 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