* add additional tests that attempt to borrow funds from the insolvent market(should fail), and attempt to borrow funds from the not insolvent market (it will fail, but shouldn't). The not insolvent market should continue to processs borrows
* remove unused code
* make tests less specific for string contains
* add new get total reserves for denoms functionality
* start utilizing GetTotalReservesForDenoms in ValidateBorrow
* update tests for Borrow to not fail when borrowing from an insolvent market
* use get total reseves in GetTotalReservesForDenoms for reusability
* refactor GetTotalReservesForDenoms to GetTotalReservesByCoinDenoms for more clarity
* change the structure for new and old tests and add more verbosity for other tests
* remove print
* remove unneeded code
* add paren
* adjust structure again after initial PR
* remove duplicate test case with invalid test name, and update to use error contains in places where it was validating if true for strings contains
* no need for keeper method
* add additional tests that attempt to borrow funds from the insolvent market(should fail), and attempt to borrow funds from the not insolvent market (it will fail, but shouldn't). The not insolvent market should continue to processs borrows
* remove unused code
* make tests less specific for string contains
* change the structure for new and old tests and add more verbosity for other tests
* remove print
* remove unneeded code
* add paren
* remove duplicate test case with invalid test name, and update to use error contains in places where it was validating if true for strings contains
---------
Co-authored-by: Sam Sheffield <sam.sheffield@kavalabs.io>
Module reserve represents fractional balances, so it should be hidden to consumers to not have a misleading total balance that doubles the fractional balances. This modifies GetBalance() and SpendableCoin() to always return zero coins when fetching the reserve address balance for fractional amounts.
Change GetBalance() to return full balances instead of spendable to align behavior with x/bank. Add SpendableCoin() method with support of akava for use in x/evm.
Emits the **total** akava amount for both ukava and akava send/mint/burns. If both akava,ukava are sent (not possible via x/evm nor cosmos messages but still an edge case), then the sum is emitted. No other denoms are emitted by x/precisebank as they will be emitted by the underlying x/bank
Fix reserve minting an extra coin when the recipient module both carries fractional over to integer balance AND remainder is insufficient. Adjusts fractional carry to simply send from reserve, instead of doing an additional mint. Add invariant to ensure reserve matches exactly with fractional balances + remainder, failing on both insufficient and excess funds.
Implement GetBalance for extended balances which passes through to `x/bank` for non-extended denoms. This diverges from `x/evmutil` behavior which will panic on non-"akava" calls.
Add bank / account keeper mocks for testing, with mockery config for [mockery package setup](https://vektra.github.io/mockery/latest/migrating_to_packages/)
- Validate total fractional amounts in genesis type
- Validate against fractional balances such that `(sum(balances) + remainder) % conversionFactor == 0`
- Add new utility type `SplitBalance` for splitting up full balances into each
* optimize cdp begin blocker by removing unnecessary checks, reusing data
and prefix stores in loops, and reducing number of repeated calculations
* fix panic for new cdp types if both previous accural time and global
interest factor are not set
* do not touch global interest factor if no CDP's exist; revert to panic
if global interest factor is not found since this is an unreachable
state by normal keeper operation -- it can only be reached if store
is modified outside of public interface and normal operation
* optimize pricefeed endblocker to iterate all markets only once to remove
overhead of opening and closing iterator for each market individually.
In addition, extend tests to cover 100% of abci and price updating
behavior.
* use test cases that can't be confused with mean to ensure median is
always used
* Update cometbft, cosmos, ethermint, and ibc-go
* Replace github.com/tendermint/tendermint by github.com/cometbft/cometbft
* Replace github.com/tendermint/tm-db by github.com/cometbft/cometbft-db
* Replace gogo/protobuf with cosmos/gogoproto & simapp replacement
* Replace cosmos-sdk/simapp/helpers with cosmos-sdk/testutil/sims
* Remove no longer used simulations
* Replace ibchost with ibcexported
See https://github.com/cosmos/ibc-go/blob/v7.2.2/docs/migrations/v6-to-v7.md#ibc-module-constants
* Add new consensus params keeper
* Add consensus keeper to blockers
* Fix keeper and module issues in app.go
* Add IsSendEnabledCoins and update SetParams interface changes
* Fix protobuf build for cosmos 47 (#1800)
* fix cp errors by using -f; fix lint by only linting our proto dir;
and use proofs.proto directly from ics23 for ibc-go v7
* run proto-all; commit updated third party deps and swagger changes
* regenerate proto files
* use correct gocosmos build plugin for buf
* re-gen all protobuf files to update paths for new gocosmos plugin
* update protoc and buf to latest versions
* fix staking keeper issues in app.go
* update tally handler for gov changes
* chain id fix and flag fixes
* update deps for cometbft 47.7 upgrade
* remove all module legacy queriers
* update stakingKeeper to pointer
* Replace ModuleCdc from govv1beta1 to govcodec
* remove simulations
* abci.LastCommitInfo → abci.CommitInfo
* Remove unused code in keys.go
* simapp.MakeTestEncodingConfig -> moduletestutil.MakeTestEncodingConfi
* Fix chain id issues in tests
* Fix remaining unit test issues
* Update changelog for upgrade
* Fix e2e tests using updated kvtool
* Update protonet to v47 compatible genesis
* Bump cometbft-db to v0.9.1-kava.1
* Update kvtool
* Remove extra changelog
* Fix merged rocksdb issues
* go mod cleanup
* Bump cometbft-db to v9 and go to 1.21
* Bump rocksdb version to v8.10.0
* Update kvtool to latest version
* Update gin to v1.9.0
* Use ibctm.ModuleName in app_test
* Fallback to genesis chain id instead of client toml
* Remove all simulations
* Fix cdp migrations issue with v47
* Update dependencies to correct tags
---------
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* (feat) update x/cdp to run every X blocks based off params (#1814)
* add new cdp module param to protonet genesis
* update cdp / cdp related tests for new module param
* update telemetry docs and setup for collecting against local node
* update kvool commit for new cdp param
(cherry picked from commit 4d62f47773)
* add tests for configurable x/cdp begin blocker interval param
add migration for default value of param
* make adjustments based off pr feedback
* fix proto back compat check
* add new cdp module param to protonet genesis
* update cdp / cdp related tests for new module param
* update telemetry docs and setup for collecting against local node
* update kvool commit for new cdp param
* Initial e2e setup
* Fix inflation disable tests
* Add upgrade handler
* Add param tests for after upgrade
* Replace deprecated grpc creds
* Remove upgrade for e2e test
* Update upgrade handler to set x/community params
* Remove params check in upgrade
* Update tests for switchover time and params check
* wip inflation
* Add attribute to disable inflation event
* Add before/after switchover mint and dist checks
* Add missing attribute to disable inflation test check
* Check mint events are 0
* Check total supply doesn't change
* Check inflation and events before switchover
* Check staking reward payouts from x/community
* move events funcs to util
* Add keyring to chain, fetch keys from kvtool and test withdrawal
* Remove duplicate KavaHomePath
* Update subtest names to specify before/after switchover
Co-authored-by: Draco <draco@dracoli.com>
* Use blocktime for InflationStop event DisableTime
* Test 5 blocks for staking rewards payout
* Remove logging and unused lines
* Check val claimed balance with queried
* Enable and update consolidation tests
* Update test for modified EventTypeInflationStop time attr
* Test x/distribution community tax
* Fix test names
* Update e2e tests for better live network test support (#1749)
* Update e2e tests to support mirrornet
* Skip claim rewards on live network, require no errors for existing tests
* Update readme with upgrade height
* Update .env example with usdt contract address
* Restore .env file to original local e2e
* Log community params when set
* Make AttributeKeyInflationDisableTime more precise
* Add mainnet and testnet community params (#1753)
* Re-enable ibc tests
* Remove duplicate types.EventTypeInflationStop emit
* feat: set validator minimum commissions to at least 5% in upgrade handler (#1761)
* Update validator min commission in upgrade
* Add min commission upgrade test
* Update changelog
* Set validator MaxRate, call BeforeValidatorModified hook
* Check max commission and update time in tests
* Update e2e test for max rate
* Test val update time
* Use SdkBlock instead of Block
* Remove upgrade related handlers and tests
Preserve any module and test util changes
* Update e2e x/community params proposal test to work without upgrade handler
---------
Co-authored-by: Draco <draco@dracoli.com>