* add CommunityPoolCDPRepayDebtProposal proto & type
* add cdpKeeper to x/community's keeper
* add handler for CommunityPoolCDPRepayDebtProposal
* more test cases
* rename CommunityPoolCDP -> CommunityCDP
the proposal does not interact with the vanilla community pool
* fix & test stringer
* update changelog
* ensure RewardIndexes.Mul method is called in test
* remove deprecated line breaks,
add new v0.46 keys cmd
* register kava msg types on authz ModuleCdc
* Use cosmossdk.io/errors for deprecated error methods
* Update error registration with cosmossdk.io/errors
* Use cosmossdk.io/math for deprecated sdk.Int alias
* Fix modified proto file
* Update sdk.Int usage in swap hooks
* Update e2e test deprecated method usage
* Update cosmos-sdk to v0.45.10-kava
* Add RegisterNodeService to app
* Update cosmos proto files
* Update cosmos proto files
* Use tagged v0.45.10-kava-v0.19-0.21 cosmos version
* update x/auth/legacy to x/auth/migrations
* Delete rest packages and registration
* Remove rest from proposal handlers
* Remove legacy types referencing removed sdk types
* Remove legacy tx broadcast handler
* Update incentive staking hooks to return error
* Remove grpc replace directive, use new grpc version
* Fix storetypes import
* Update tally_handler with updated gov types
* Delete legacy types
* Use new gov default config
* Update RegisterTendermintService params
Signed-off-by: drklee3 <derrick@dlee.dev>
* Replace sdk.StoreKey with storetypes.StoreKey
* Replace sdk.Int#ToDec with sdk.NewDecFromInt
* Replace sdk.NewUintFromBigInt with sdkmath.NewUintFromBigInt
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update most intances of govtypes to govv1beta1
* Unpack coin slice for Coins#Sub and Coins#SafeSub
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update committee gov codec registration
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update migrate utils period_vesting Coins#Sub
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update Coin#Sub in community proposal handler
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update Coin#Sub, FundModuleAccount/FundAccount in banktestutil
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update community, earn, kavadist proposal gov registration
* Update evm cli client EthSecp256k1Type check
* AccAddressFromHex to AccAddressFromHexUnsafe
* Add mint DefaultInflationCalculationFn to earn test
* Update use of removed staking.NewHandler
* Rename FlagIAVLFastNode -> FlagDisableIAVLFastNode
* cmd: Update new snapshot app option
Signed-off-by: drklee3 <derrick@dlee.dev>
* cmd: Add tendermint default config, use cosmos rpc status command
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update ethermint import path
github.com/tharsis/ethermint -> github.com/evmos/ethermint
* Upgrade ibc-go to v6
* Update proto dependencies
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update Tally handler test with new gov types
* Update helpers.GenTx -> helpers.GenSignedMockTx
* Update evmkeeper.NewKeeper params
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update ante authz, tests
* Add feemarket transient key, pass subspaces to evm/feemarket keepers
* Update new ante decorators
* Add new addModuleInitFlags to server commands
* Pass codec to keyring.New in genaccounts
* Pass codec to client keys add
* Add SendCoins to evmutil bank_keeper
* Use github.com/cosmos/iavl@v0.19.5
* Add ante HandlerOptions
* Add unimplemented SendCoins to evmutil bank keeper
Ethermint x/evm does not use this method
* Update init-new-chain script to disable post-london blocks
* Modify test genesis states to append 1 validator
* Update tally handler test to use string values
* Prevent querying balance for empty sdk.AccAddress in auction bidding test
* Set default bond denom to ukava
* Remove overwritten bank genesis total supply in committee proposal test
Signed-off-by: drklee3 <derrick@dlee.dev>
* Use ukava for testing staked balance
* Disable minting in community proposal handler test
Previously stake denom is used, which resulted in 0 minted coins
* Update hard APYToSPY test expected value
Increased iterations in sdk.ApproxRoot, updated closer to real value
* Fix NewDecCoinsFromCoins bug in incentive collectDerivativeStakingRewards
* Allow bkava earn incentive test values to match within small margin for rounding
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update invalid denom in issuance message coin validation
Colons are now valid in denoms
Signed-off-by: drklee3 <derrick@dlee.dev>
* Remove genesis validator in incentive delegation tests
* Update pricefeed market test for invalid denom
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update incentive delegator rewards test without genesis validator
Signed-off-by: drklee3 <derrick@dlee.dev>
* Add validator to export test
* Clear bank state in minting tests
Signed-off-by: drklee3 <derrick@dlee.dev>
* Remove validator for no stake tally test
Signed-off-by: drklee3 <derrick@dlee.dev>
* Clear incentive state before InitGenesis in incentive genesis export test
* Update swagger
Signed-off-by: drklee3 <derrick@dlee.dev>
* Update ethermint version to match replaced version
* Remove legacy swagger
* Add NewEthEmitEventDecorator
* Remove redundant func for AddModuleInitFlags
* Remove unused addBankBalanceForAddress func
* Add SetIAVLLazyLoading option to app cmd
* Use legacy.RegisterAminoMsg for committee msg concrete registration
* Remove unnecessary Amino field
* Add evm_util bankkeeper SendCoins comment
* Update test method ResetBankState to DeleteGenesisValidatorCoins to be more clear
* Validate incentive params.RewardsPerSecond to be non-zero
* Validate swap pools to disallow colons in token denoms
* Register all legacy amino types on gov modulecdc
* Remove redundant Comittee interface registration
* Pin goleveldb to v1.0.1-0.20210819022825-2ae1ddf74ef7
Causes failed to load state at height errors
* Update ethermint to new pinned version with minGasPrices parse error fix
* Update cosmos fork dependcy commit to include reverted account constructor patch
* Update Cosmos v0.46.11 and cometbft v0.34.27
* Bump minimum go version to 1.19
* Update tendermint proto
* Update internal testnet genesis
* Move NewCanTransferDecorator before NewEthGasConsumeDecorator
* Add hard borrow store tests (#1514)
* add store tests for Borrow type
* refactor Deposit tests to match
* Fix old bep3 tests (#1515)
* Update Ethermint to 1b17445 to fix duplicate proto registration
* Add custom status command to use snake_case and stdout
* Add SetInflation helper
* Reduce ambiguity with evm CanSignEthTx error
* Remove init genesis validator claim in test
* Add disabled evmante.NewMinGasPriceDecorator with x/feemarket note
* chore: use tagged versions for Cosmos and Ethermint forks
* update kvtool & increase wait for ibc transfer test
---------
Signed-off-by: drklee3 <derrick@dlee.dev>
Co-authored-by: Ruaridh <rhuairahrighairidh@users.noreply.github.com>
Co-authored-by: Robert Pirtle <astropirtle@gmail.com>
* Add incentive grpc query service
* Register query server
* Add grpc query test
* Add grpc query test
* Fix proto lints
* Fix missing savings field, update tests
* Update proto docs
* Use consts for query reward types
* Add owner to queryRewards err
* Add empty reward type to be valid
* add test for exact collateral ratio; fix bug that allows cdps created at
the limit to be liquidated by a keeper; update spec
* touch up spec to be more clear
* adjust test name to better reflect what we are testing
* point community pool lend proposals at fee pool
* update community pool lend proposal tests
* remove unused begin blocker
* increase test coverage
* fix x/community proposal comments
* add proto for LegacyCommunityPool query
* add distribution keeper to community keeper
* implement LegacyCommunityPool query
* add cli cmd for legacy-community-pool
* refactor begin blocker to single func
* remove unused inflation keeper methods
* refactor to private keeper methods
* add testcase for failed mint due to invalid param
* add testcase for GetStakingApy()
* check for zero instead of empty
* actually test super long block time
* skip fund account for earn community proposals
* test x/community keeper GetModuleAccountBalance
* update x/kavamint begin block spec
* use kavamint in incentive to calculate staking apy
* use kavamint minting: rewards_earn_staking_integration_test
* update incentive tests to mint only with kavamint
* remove x/mint from incentive tests
* remove x/mint from kava app
* fix minting in x/auction tests
* replace simapp fund calls with test helper
* remove mint state from genesis.json
* add `x/kavamint` module (#1376)
* stub out the x/kavamint module
* mint staking rewards in x/kavamint BeginBlocker
* calculate cumulative inflation from x/kavamint
* cleanup, abstract bond denom, grpc query tests
* store & use previous block time to calculate mints
* move test suite to testutil
* add test of x/kavamint BeginBlocker
* cleanup & comments from @DracoLi review
* fix x/incentive integration test
* remove rest client grpc test
* add x/kavamint module spec
* track previous block time in genesis
* suggested cleanup from PR review
* bugfix incorrect module account check
* add x/community module (#1388)
* add x/community module
* refactor and setup fund-community-pool tx
* remove unused features (params, genesis state)
* test x/community query and message
* update with master branch deps
* updates from review
* indicate deprecated methods on module (still needed to fulfill interface)
* remove legacy querier
* derive msg Route() and Type() from sdk.MsgTypeURL(&msg)
* use module name for message Route()
* mint community pool inflation in x/kavamint (#1389)
* mint community pool inflation in x/kavamint
* refactor x/kavamint abci inflation test
* test inflation from x/kavamint
* default kavamint rates to 0%
* rename kavamint account name variables
* panic if genesis kavamint previous block time not set
* emit event on kavamint begin blocker
* add kavamint year of inflation sanity check test
* update fund_community_pool message event
* add x/community spec
* refactor inflation accumulation into single func
* use new comm pool in kavadist multispend proposal (#1403)
the x/community module houses the new community pool. this commit
points the CommunityPoolMultiSpendProposal at the new community pool
so that multispend proposals can continue to be processed once original
fee pool funds are move to x/community
* updates from proto lint changes
* update earn proposals to use new community pool
originally the CommunityPoolDepositProposal & CommunityPoolWithdrawProposal
used the vanilla community pool fee pool. this commit updates them both
to use the new x/community module account.
* spec formatting update
* add x/community & x/kavamint to internal testnet genesis
* increase test coverage of x/kavamint
* increase test coverage of x/community
* use string type for sdk.Dec proto fields; disable generation of getters
for genesis and params (and other store objects)
* follow sdk conventions for params endpoint naming
* add kavamint to swagger; update swagger & proto docs
* remove legacy querier; touch up module to match others
* reduce max minting rate; refactor genesis to allow nil/zero block time;
repace proto stringers and remove getters; keep sdk.Dec values strings
in protos; increase validation of sdk.Dec values in params; increase
coverage; add module account permission checks; ensure import and export
of genesis does not change state
* fix scaling of rate values -- should be yearly rates
* revert key change
* fix typo in test name
* fix regression in running tests -- rename method
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* Add initial earn claim migrations
* Use existing types for migrations, add accural time migrations
* Add MigrateRewardIndexes
* Delete old state after migration
* Update store test with multiple entries
* Move key methods to keys.go
* Update incentive consensus version to 3
* Call MigrateRewardIndexes in main migration, remove debugging statements
* Fix migration version to v3
* Update module versions
* Update outdated v1 comment
* Add accumulators
* Move accumulator back to keeper package
* Add earn specific accumulators
* Move store methods to sub-package
* Move earn accumulator
* Rename accumulator files
* Add store doc comment
* Add earn accumulator tests, panic if accumulator not used with earn claim type
* Update earn accumulator tests to use new methods
* Add staking test for earn accumulator
* Add test for accumulator proportional rewards
* Remove old copy of GetProportionalRewardsPerSecond
* Add test for basic accumulator
* Fix AddIncentiveMultiRewardPeriod replacement
* Deduplicate base earn reward accumulator
* Check errors in tests
* Validate RewardPeriods in Params.Validate()
* Use adapter to fetch earn total shares
* Add generic accumulator
* Add MultiRewardPeriodOfClaimType type to params
* Add adapters wrapper
* Add MultiRewardPeriodsOfClaimType to params
* Add multireward period to genesis test
* Rename MultiRewardPeriodOfClaimType to TypedMultiRewardPeriod
* Use source adapters wrapper
* start makefile refactor to smaller units; break out proto-dep updating;
add check-proto-deps target for use in CI in order to determine if
depdencies have diverged
* add proto check workflow
* download go modules before checking proto deps
* clean up -- hide output and add error message for check target
* add error message for check-rsync
* update any type, and ibc-go protos for v3.4.0
* add buf generate files for gogo, docs, and swagger
* update swagger dirs and run with latest swagger gen
* ignore new build directories
* refactor proto makefile logic -- use buf instead of scripts
* remove old protobuf scripts
* run all proto checks on push
* remove moved file
* set default value for protoc machine
* install build deps seperately
* fetch master for buf check breaking
* checkout from https url in CI for buf breaking
* fix rsync file permissions on darwin
* ignore build dirs
* fix issue with apple provided make; clean up build deps; switch to buf
format
* remove clang format file -- using buf format now
* run make proto-format (buf format changes)
* update generated files for proto format changes
* Add init/sync claim methods
* Add todo
* Make GetSynchronizedClaim method todo
* Remove GetSynchronizedClaim
Work moved to different task
* Update GetRewardIndexesOfClaimType method
* add total supply endpoint to x/liquid
* add test of x/liquid total supply query
* refactor x/savings test
* add total supply endpoint for x/savings (w/ test)
* add total supply endpoint for x/earn
* handle converting bkava to underlying staked amount
* aggregate bkava underlying values in x/earn
* aggregate underlying value of bkava in x/savings
* Add methods for reward accrual time
* Add accrual time methods
* Add claim type to IterateAllRewardAccrualTimes callback method
* Use new AccrualTime proto type for state methods, add to genesis
* Add GetAllRewardAccrualTimes doc
* Add accrual times to genesis methods
* Remove DecodeKeyPrefix
* Update acrual time iterate method naming
* Update Iterate claims naming
* Use method for sourceID key conversion
the yaml tags are not needed as they are generated automatically from the
json tags.
additionally fixed proto formatting error requiring doc comments on enum
values (for x/incentive claim type enum).
* Update third party protos for tendermint, cosmos updates
* fix proto gen scripts for go 1.18
* update ibc go swagger for v3.3.0
* update generated files
* update swagger
* update grpc and protobuf deps
Co-authored-by: rhuairahrighairigh <ruaridh.odonnell@gmail.com>
Co-authored-by: drklee3 <derrick@dlee.dev>
Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>
* Update incentive test to use beginblocker instead manual accumulation
* Update integration test suite
* Add base integration test, wip staking reward calculation
* Get actual staking reward amounts from BeginBlocker events, calculate expected indexes
* Simplify event parsing
* Add initial earn accum test with real keepers
* Add the rest of the accum integration tests with real keepers
* Check if delegation rewards are zero before transferring
* Update staking integration test to use updated methods
* Call earn hooks with correct share values
User's shares instead of total vault shares
* Use different amounts for different accounts
* Add claim test with staking claims
* Remove logging statements
* Remove log
* Pass suite.T() to mock earn hooks
* Use begin blocker for staking reward distribution
* Remove unused beginblocker
* Remove log
* add empty grpc endpoint
* add basic implementation
* remove unbonding from returned balance
* fix test typo
* resolve todo, use better method from staking mod
* use an infinite gas meter during evm call operations, then consume
evm reported gas used
* consume gas after failure check -- provide best feedback first
* Add earn deposits query param to return individual vaults value as ukava
* Add value_in_staked_tokens param handler to specific vault query
* Use separate ukava coins when querying deposits in ukava
Avoid usd of sdk.Coins.Add() as those will aggregate ukava amounts
* update params
* stub out methods
* delete legacy migration test
* feat: add infrastructure inflation and payouts
* fix: load same module account blocked addrs in kavadist as app
* fix: testing edge case where period starts and ends same block
* fix: add store key for infra params, update newparams function
* fix: testing edge case where period starts and ends in same block
* add test for basic infra minting
* add test for stand-alone core, partner rewards
* fix: set time elapsed in each case
* add e2e test for infra rewards
* fix: use standard method for naming infra params key
* feat: community pool deposit/withdraw proposals
* fix: check community pool balance in tests
* add new msg type definitions
* add msg methods and tests
* add module and keeper skeleton
* add deposit and withdraw methods (no delegation)
* untested depsit/withdraw with delegation methods
* add cli cmds
* fix cli argument parsing
* add tests for delegate/undelegate msgs
* emit un/delegate events
* add godoc comments
* tally handler with liquid staking support
* clean up
* update for liquid keeper changes
* Exclude non-bkava denoms from aggregate underlying ukava calculation
* wip Add claim
* Add distr keeper and claiming
* Add claim test
* Update claim test with failures
* wip Add staking rewards
* -S
Fix savings to earn incentive methods
* Use a single accural time for all earn incentives
* Add additional required liquid methods
* Update genesis to only include 1 accrual time for earn
* Revert "Update genesis to only include 1 accrual time for earn"
This reverts commit cc7e35347298681c0c8a4a0b9bf9b9b296c25531.
* Revert "Use a single accural time for all earn incentives"
This reverts commit aeb49c4622d4e3d99dc6421c8830932b1b546be9.
* Update tests with incentive distribution
* Add earn to incentive rewards query
* add earn cli tx
* Update claim example to use ukava large
* add proposal to gov router
* fix example tx formating
* add proposal handlers to gov app module
* fix: define gov router after earn keeper
* fix: correct proposal type
* remove outdated comment
* refactor withdraw so that fee pool is allows adjusted by the actual withdraw amount
* fix: lint proto file
* use non blocked module account instead of dist acc
* add fund mod account to app, enable receiving
* update to new withdraw interface
* add human readable apy test cases
* remove duplicate changes from previous merge
* remove deprecated io/ioutil package
* standardize proposal type as a pointer
(also matches sdk)
* minior comments and formatting
* use withdraw amount in router msgs
Co-authored-by: rhuairahrighairigh <ruaridh.odonnell@gmail.com>
Co-authored-by: Draco <draco@dracoli.com>
Co-authored-by: drklee3 <derrick@dlee.dev>
Co-authored-by: Ruaridh <rhuairahrighairidh@users.noreply.github.com>
* wip Add claim
* Add distr keeper and claiming
* Add claim test
* Update claim test with failures
* wip Add staking rewards
* -S
Fix savings to earn incentive methods
* Use a single accural time for all earn incentives
* Add additional required liquid methods
* Update genesis to only include 1 accrual time for earn
* Revert "Update genesis to only include 1 accrual time for earn"
This reverts commit cc7e35347298681c0c8a4a0b9bf9b9b296c25531.
* Revert "Use a single accural time for all earn incentives"
This reverts commit aeb49c4622d4e3d99dc6421c8830932b1b546be9.
* Update tests with incentive distribution
* Add earn to incentive rewards query
* add earn cli tx
* Update claim example to use ukava large
* Use underlying ukava to determine proportional reward amount
* Rename liquid methods to reflect derivative value
* Add tests for derivative values
* Return error to panic in BeginBlocker
Co-authored-by: karzak <kjydavis3@gmail.com>
* Add module name to multiplier
* Add claim test to use correct multiplier
* Add separate test for GetMultiplierByDenom
* Add 0 length lockup for earn to params test
* Add additional tests for genesis and params
* Add savings support for bkava deposits
* Update savings tests with valid validator
* Add invalid bkava deposit test
* Remove test logs
* Add bkava withdraw test
* Add bkava handler for earn incentives
* Add bkava accum tests
* Add bkava denoms in index state
* Set storeTimeEquals to default value
* Add supply expected keepers
* Add tests for proportional adjustment
* Add liquid keeper to incentive keeper
* Use weighted reward periods for bkava
* Add liquid keeper to tests
* Add Accumulate override rewards period with deccoins
* Adjust test to handle sub unit coins
* Add liquid keeper to test
* Fix div by zero for proportional rewards
* Update test for actual expected values
* Update expected indexes to be same for different vaults
* Allow no stored time for vaults that have no indexes or state
* Add test for partial bkava deposit
* Add math check to test
* Deterministically iterate over bkava denoms
* Remove unused expected liquid method GetAllDerivativeDenoms
* Add incentive types
* Add earn state methods
* Update earn incentives
* Update unit test NewKeeper to include earn keeper
* Fix sharesOwned typo
* Shares not used for AfterVaultDepositCreated
* Add earn to init genesis
* Pass earn keeper to incentive keeper
* Add sdk.Msg impl, disable legacy migrations
* Disable migrations
* Update incentive earn sync test
* Add earn to client and querier
* Add accum and init tests
* Add additional earn tests
* Fill in fakeEarnKeeper methods to fix tests
* Add earn reward periods to params, begin blocker earn reward
* Add earn to query
* Update genesis_test with missing DefaultMultiRewardPeriods parameter
* Remove disable of migration package
* Fix proto type comments
* Remove unused migration state
* Add legacytx.LegacyMsg compile time interface check
* add earn state validation to genesis validation
Co-authored-by: rhuairahrighairigh <ruaridh.odonnell@gmail.com>
* Use custom aggregate handler for querying 'bkava' vault
* Add 3rd bkava vault
* Add special kava deposit handlers
* Separate bkava logic to parent deposits handler
* Rename single vault/account queries
* Remove all deposits queries
* Include empty vaults in /vaults query
* Respond with empty values when querying account deposits with no deposits
* return ukava value in bkava vault queries
* remove refernce to specific staked token denom
* return ukava value in bkava deposit queries
Co-authored-by: rhuairahrighairigh <ruaridh.odonnell@gmail.com>
* proto types
* proto generated types
* liquidstaking top level files: module, genesis
* liquidstaking types
* liquidstaking keeper
* liquidstaking client/cli
* add liquidstaking to app, simapp
* implement mint derivative
* set up liquidstaking keeper test suite
* test mint derivative
* rename module to liquid
* rename proto types, app.go to liquid
* use sdk.Coin instead of shares
* mint liquid tokens to delegator
* burn derivative tokens to receive delegation
* use conversion method instead of type cast
* simplify delegation transfer logic
* broaden delegation transfer tests
* simplify transfer delegation method
This removes a source of rounding errors
* move derivative denom to keeper config
* check for invalid coins in msg validation
* block 0share transfers to avoid handling edge case
* refactor MintDerivative to test calculations
* simplify burn method so shares and tokens equal
* convert TransferShares back to old design
this makes handling vesting tokens easier
* fix missed merge conflict
* remove deprecated constants
* tidy up msg.go
* add msg tests
* remove unused store key
* fix msg event sender
* remove unused params
* tidy up documentation and errors
* remove unused mocks
* remove unused keepers from AppModule
* tidy up msg return values
keeper return values to be used in router msgs
* reinstate unintentionally removed interface check
* catch invalid input for MnitDerivative
clear up test TODOs
* clear up InitGenesis TODO
* Update x/liquid/client/cli/tx.go
Co-authored-by: Derrick Lee <derrick@dlee.dev>
* Update x/liquid/client/cli/tx.go
Co-authored-by: Derrick Lee <derrick@dlee.dev>
* show error logs in devnet
* unblock mod account so it can receive dist rewards
* catch zero amout msgs early
* minor cli fixes
Co-authored-by: rhuairahrighairigh <ruaridh.odonnell@gmail.com>
Co-authored-by: Ruaridh <rhuairahrighairidh@users.noreply.github.com>
Co-authored-by: Derrick Lee <derrick@dlee.dev>
* Add basic savings strategy
Supports ukava
* Use clearer error message for ErrInvalidVaultStrategy
* Add invariants
* Separate specific vault/all vaults query, update depositor inconsistencies
* Update swagger
* Use single bkava AllowedVault for all bkava variants
* Do not use allowedVault.Denom for value
* Fix vault balance query
* Update query to list bkava vaults
* Add vaults query doc
* Update grpc query test with no supply
* Add earn hooks
* Handle errors
* Update outdated doc comments, make getAllowedVault_Raw private
* Fix outdated comments, lints
* Fix comment maths
* Use AccAddressFromBech32 to validate message addresses
* Add multiple strategies to params, queries, txs
* Check deposit/withdraw strategy if supported by vault
* Add note for deposit strategy
* Add strategy type to messages
* Update swagger docs, ignore ethermint proto linting errors
* Update strategy test, move single strategy support to strategytype
* Simplify NewStrategyTypeFromString
* Change vault supply to shares
* Update deposit shares
* Use shares instead of supplied
* Update tests, fix share calculation
* Pass hard and savings keeper as pointer to earn keeper
* Update remaining failing test
* Add different share price test, fix comment for share price
* Add shares amount to events
* Additional share tests, use share to asset conversion for withdraw amount
* Update VaultTotalValue test
* Use sdk.Dec for vault shares instead of sdk.Int
* Add test for expensive 20:1 shares
* Update ConvertToShares comment for division, remove redundant test
* Add vault share tests
* Add vault and vault shares to genesis
* Fix error and denoms
* Update init and export genesis with correct data
* Fix total supply genesis check, remove legacy test for enum errors
* Add vault slice validate tests
* Update denom validation, add additional test
* Add query methods
* Add TotalDeposited rpc query
* All accounts and all denoms query wip
* Add query deposits
* Remove IsDenomSupported strategy method
This is not necessary and is already set in params allowed vaults
* Add Vaults, TotalDeposited queries
* Deposits query tests and fixes
* proto lints
* Add earn swagger docs
* Add cli query cmds
* Update init-new-chain.sh with usdx strategy and funds
* Add denom url query path for vaults
* Return a list of coins for each depositor instead of multiple deposit entries
* Simplify strategies to lend and savings
* Add hard and savings keepers
* Add ctx to strategy interface, fill in lend strategy
* Rename lend strategy to hard
* Fix hard deposit query, fix withdraw bank send
* Fix misleading borrow instead of withdraw for hard
* Remove liquidateall strategy method
* Withdraw tests
* Add hard gs to testutil suite
* Update withdraw tests with working hard strategy, clean strategy interface methods
* Check allowed denom for strategy
* Update GetVaultTotalValue doc note
* Update error wrap message for unsupported denom
* Remove unnecessary viewvault keeper
* Withdraw amount from account value, not supplied value
* Test value > supplied withdraw
* Use dec when dividing for withdrawAmountPercent
* Use the correct store prefix for vault shares
* Update swap references to earn
* Simplify vault shares, use a single share for all coins per address
* add committee migration skeleton
* add helper methods to help modify permissions
* modify permissions in migration
* tidy up committee migrations into own file
* add initial auction migration from Levi's work
* reserve bid_duration field name as well
* refactor auction specifc migration code to legacy v0_17 pkg
* Add auction migration specific test. Delete v016 migration files. Add makefile target for running migration tests.
Co-authored-by: galxy25 <levismschoen@gmail.com>
* ibc v3 upgrade
* ibc no longer uses confio
* add proofs proto for ibc/v3
* wip add ethermint module
* update cosmos to 0.45.0
* add ethermint proto & bug fixes
* remove todo
* update docs
* fix a number of bugs
* minor comments update
* fix breaking tests
* Wrap bank keeper for EVM to convert decimals (#1154)
* Add bankkeeper wrapper for evm
* Remove agas from init-new-chain.sh, use ukava for evm_denom
* Fix sdk.Coins conversion, require min 1 coin amount
* Remove gas from init script
idk how this happened lol
* Remove debug logging stmt
* Restore original init ukava amounts
* Fix inplace coins conversion
* Use evmtypes.BankKeeper interface insteadof banktypes
* Add TestGetBalance
* Add doc comments, remove temp actualAmt vars
actualAmt vars replaced with inline calls to make it more clear that the
converted value is being used, as opposed to accidentally reusing the
raw EVM amt.
* Add TestSetBalance
* Add TestIdempotentConversion
* Panic if converted coin from EVM is 0
This happens if a value is less than 1ukava
* Deep copy coins instead of in place modification
* Update test coins amount
* Add panic tests for small EVM amounts
* Use evmtypes.BankKeeper as NewEVMBankKeeper param
* Tidy test setup
* ensure sdk config is set when creating new apps
* Respond EVM bank keeper GetBalance with SpendableCoins
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* further speed up docker builds
* feat: restore previous keys add defaults, add eth flag (#1172)
* feat: restore previous keys add defaults, add eth flag
* remove outdated comment
* fix: remove redundant flag default
* evm bank keeper with akava handling
* fix issues
* add remaining tests
* add emv module to app
* add missing imports
* clean up comments
* wip akava keeper
* evm keeper
* fix genesis import
* reduce module permissions
* add bank keeper tests
* cleanup tests
* genesis tests
* change defaults
* add eth faucet key & fix issues
* switch to kava ethermint
* add a lot of tests
* add balances invariant
* add evm tests
* Remove panic if Swagger disabled in config (#1155) (#1183)
Co-authored-by: Derrick Lee <derrick@dlee.dev>
* add invariant to catch any akava balance > 1 ukava
* clarify name of balances invariant
* connect invariants to app
* fix evmbankkeeper akava issues
* add spec for evmutil
* remove zero balance accounts from state
* minor adustments
* update to ethermint 0.10.0
* fix eth ante
* add missing godoc comment
* Update x/evmutil/spec/01_concepts.md
Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>
* Update x/evmutil/spec/01_concepts.md
Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>
* Update ethermint to v0.12 (#1203)
* update to ethermint v0.12.2
* use app.Options for new evm options
* fix missed references to app.Options
* use ethermint branch while waiting on upstream fix
* evm migrations for tesnet alpha 2 (#1206)
* update to ethermint v0.12.2
* use app.Options for new evm options
* fix missed references to app.Options
* use ethermint branch while waiting on upstream fix
* add upgrade handler for evm-alpha testnet 2
* v17 migration setup + evm modules
* refactor migrate states
* x/feemarket migration
* v17 migrations setup + evm modules migration (#1210)
* v17 migration setup + evm modules
* refactor migrate states
* update gen time
* fix: update genesis time in test output
Co-authored-by: karzak <kjydavis3@gmail.com>
* add savings module to app blockers
Co-authored-by: Derrick Lee <derrick@dlee.dev>
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
Co-authored-by: rhuairahrighairigh <ruaridh.odonnell@gmail.com>
Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>
Co-authored-by: Ruaridh <rhuairahrighairidh@users.noreply.github.com>
Co-authored-by: karzak <kjydavis3@gmail.com>
* define and generate proto types
* implement savings claim msg + test
* implement savings claim + test
* register msg and add store keys
* implement savings claim keeper methods
* update function comment
* define and generate proto types, update types dir
* update gen state with savings + test
* update legacy test data for ci test
* update proto types numbering
* update params proto types numbering
* add deposits to genesis state
* import/export genesis with deposits
* add helper keeper method + update tests
* invariants + tests
* register invariants on module
* fix genesis test invariant init
* clean up invariants test
* remove comment from test file
* fix invariants test
* run 'make proto-all'
* Split bid_duration field into forward/reverse durations
* Update params.go
* Update params_test for forward/reverse bid durations
* Remove duplicated import
* Replace bid duration on place bids
* Fix reversed bid errors
* Update auctions test
* Update bidding test
* Update testutil suite to use default forward/reverse bid durations
* Fix missing ReverseBidDuration param field
* Check if auction is reversed on forward bid
* Add test for conversion to reverse auction that reaches maxbid
* Make proto fields backwards compatible
* Use ForwardBidDuration for debt bid
* Make copy of v16 auction types
this doesn't actually work but keeping it in history
* Disable migrations
* Update debt tests to use forward bid duration
* reinstate and expand export test
* format testdata json
* sort bep3 testdata json for easier diffing
* add more bep3 swap examples to test data
* reset swaps for zero height
* update top level migration testdata
* add uatom ibc denom to money markets in hard migration
* add new money market to stability committee
* clean up
* update v0_16 migration test data
* add swp, uatom ibc denoms to hard gov committee
* update committee migration testdata
* update general migration test data
* specify committee ID with vars
* fix merge var rename bug
Co-authored-by: rhuairahrighairigh <ruaridh.odonnell@gmail.com>
* fix: update circulating supply to accurately reflect inflationary KAVA supply
* revert lp claims subtraction
* fix: use total supply after all vesting complete
* Add cdp/totals rest endpoint for aggregated principal and fees
* Add total collateral to aggregated cdp
* Add pagination
* Update totalPrincipal endpoint to use keeper GetTotalPrincipal
* Update documentation for queryGetTotalPrincipal
Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>
* Remove unused AggregatedCDP types
* Make CDP type optional, return all if not provided
* add total collateral endpoint that efficient fetches collateral
for a types, only iterating cdps for types b, etc
* correctly and efficienlty filter for a single collateral type
Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* add no votes information to polling status, updating events and querier
cli/rest responses. This allows clients to differeniate between no and
abstain votes
* update querier test to include no vote assertion
* move multipliers to their own file
* add multipliers per denom to MsgClaimHardReward
* claim with multipliers per denom for hard claims
* remove unused error
* add multipliers per denom to params
connect to to hard claiming
* temporary fix migration
* update usdx claiming for new multiplier params
* claim with multipliers per denom for delegator
* claim with multipliers per denom for swap rewards
* tidy up multiplier name validation
* rename new multipliers field in params
* remove old multpliers from params
* clear up various TODOs
* add tags to new structs
* remove dead code
* extract borrow sync logic into separate func
* fix borrow reward calculations
Use the normalized borrow as the source shares in reward calculations.
* extract supply sync logic into separate func
* prepare to fix supply reward calculations
* fix deposit reward calculations
Use the normalized deposit as the source shares in reward calculations.
* extract usdx sync logic into separate func
* prepare to fix usdx reward calculations
* fix cdp reward calculations
Use the normalized cdp debt as the source shares in reward calculations.
* fix compile error from messed up partial stage
* Fix incentive usdx reward bug (#976)
* minor test refactors
* fix overpayment bug
Init methods should not read params.
Add test to cover bug
* fix typos
* add test for validate multi reward periods
* tidy up: combine files
* don't accumulate global indexes containing zeros
Previously if the time since last block was 0,
indexes were added containing 0s.
Now leave them out. Missing is assumed to be 0.
* move state independent test to types folder
* clarify reward source concept to "source shares"
- rename variables and update doc comments
- extract method from swap accumulation
* tidy up and expand swap accumulation unit tests
* rename swap test file to match others
* update swap pool id format in tests
* refactor borrow accumulation, use new accumulator
* refactor supply accumulation, use new accumulator
* refactor delegator accumulation, use accumulator
* refactor usdx accumulation, use new accumulator
* fix types const
* remove unsed methods
* more usdx minting param validation.
Protect against the rewards per second denom changing.
It should always be "ukava".
* add safety check in InitGenesis
It prevents huge accumulations on the first block by limiting all
previous accumulation times to be within one year of genesis
* add todo for adding swp token distirbution info
* update state store key separator and extract pool key sep
* update state key separater and pool id seperator to not conflict with
'/' in ibc vouchers
* fix pool ids for updated sep
* add regression test for hooks; refactor deposit to commit pool and
shares in one place with commit after validation checks; panic on pool
and share set methods if the record is invalid
* use correct hook ordering; add regression test for order - fails if
hooks are not called before or after share record set
* wip: add swap state persistent to genesis
* separate pool record constructors; add tests for json and yaml encoding
of record structs
* beef up validation checks for state records
* fix integration with master - renamed method
* add test coverage for basic state array validations
* extra test around pool record reserve and id ordering to ensure no
regressions in the future
* add validations to ensure pool records and share records are unique
within the collection types
* test genesis json and yaml encoding
* validate in genesis that the total shares owned for each pool is equal
to the total shares of each pool
* update alias
* nit lint
* test genesis init and export
* add migration todo
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* move defualt values to file where they're used
* add type to hold RewardIndexes in genesis state
* add reward indexes state to genesis
* fix genesis state importers
* add iterator keeper methods for accrual times
* remove syncing from export/init genesis
* separate incentive migration to new file
* refactor out common funcs from incentive migration
* update legacy genesis state to v0.14.3
* add test and example migrated json
* fully initialize rewards in genesis builder
* add kava-7-mainnet incentive state
* run aliasgen
* add missing type to incentive/legacy
Co-authored-by: karzak <kjydavis3@gmail.com>
* add message types for swaps
* add tx client commands
* add test coverage for swap message deadlines
* start handler swap tests, export handler result message event into
private method, add stubbed keeper methods
* add initial swap implementation to get handler tests passing; adds event
specific for trades
* add handler acceptance test for slippage in exact input and exact output
swaps
* implement slippage limit for swap keeper methods
* add tests to ensure a user can only swap spendable coins
* test pool not found, panic on invalid pool, and panic when module
account does not have enough funds
* validate that the exact output when using for exact swaps is less than
the pool liquidity
* nit: long line
* add validation that swap output is greater than zero
* add rest txs for swap messages
* nit: lints
* dry up swap keeper methods
* from pr feedback - spelling and increase clairty around the output
amount of a swap rounding to zero
* add swap claim type
* add store methods for swap claims
* add swap claims to genesis state
* tidy up cdp and hard hook doc comments
* add uncalled hooks to the swap keeper
* add swap rewards sync method
* add swap rewards init method
* connect swap rewards via swap hooks
* Update querier and client for swap claims (#951)
* refactor querier to dedupe code
* add swap claims querier endpoint
* add swap claim querying to rest
* add swap claim querying to cli
* add keeper method to iterate swap reward indexes
* simplify reward-factors query endpoint, add swap
* update swap hook to match latest swap branch
* rename func to not collide with latest swap branch
* Squash merge swap-acceptance branch (#956)
* add failing acceptance test for a user depositing into a pool
* implement GetAccount test helper
* implement swap.MsgDeposit for creating and adding liquidity to a pool
* update aliases, add event types, and fix typo/compiler errors in handler
test
* use only aliases names in handler test (don't use swap types -- ensures
we have run aliasgen), add assertion for even type message
* implement account and module account balance checks in handler test
* fill out handler assertions for testing keeper state and events
* update signed json representation and register swap/MsgDeposit for
proper encoding
* fill out boilerplate to get handler test to compile
* alias gen for pool
* add handling of message type; fill in deposit keeper method for
succesful compile; noop but test assertions now run up to module acc not
nil check
* add module account permissions for swap module -- fixes module account
creation; pass account keeper and supply keeper into swap keeper to
allow the ability to work with user and module accounts
* implement create pool logic for msg deposit; allows creation of a of new
pool, checking params to see if it is allowed. Initi shares are set,
and senders number of shares are stored
* Swap migrations scaffolding (#925)
* swap module scaffolding
* global swap fee
* can't think of a reason for begin blocker; removing for abci.go for now;
* test pair types; refactor pair name logic; simplify pairs validation and
fix stack overflow error
* check comparison
* use test package
* init swap module genesis
* add basic marshall tests
* remove reward apy from pairs
* fix integration helpers
* use max swap fee constant; fix validation of swap fee; add tests to
cover param validation and param set setup
* use noerror over nil
* start genesis tests
* test param set validation mirrors param validation
* add genesis tests
* remove print statement
* add subtests for genesis test cases; add extra querier test for unknown
route; add keeper params testing
* add spec
* update swagger
* find replace hard -> swap in comments
* remove unused method
* rename pairs to allowed pools; pool is more commonly used, and
allowedPool makes it more clear what swap parameter is for. In
addition, we won't conflict with Pool data structure for storing a
created pool in the store.
* remove generated link
* missed spec rename
* validate token order for allowed pools
* fix swagger
* json should be snakecase; change allowedPools to allowed_pools
* add legacy types
* add swap genesis to v0_15 migration
* add legacy types
* add swap genesis to v0_15 migration
* migration revisions
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* keeper todos
* update keeper tests
* type todos
* update types tests
* tx deposit cli cmd
* tx deposit rest
* Swap module simulation scaffolding (#924)
* sims scaffolding
* add noop operation
* genesis revisions
* add param changes
* mvoe persistance methods to main keeper file, consolidate tests
* make helper methods private. they are tested via deposit method, and
unit testing them would make test suite brittle and refactoring
difficult
* use more clear coin variables
* code 1 is reserved, use code 2 and sequence all errors
* remove todo
* Implement deadline for swap module module message. This is implemented in
handler with a interface to easily apply to it to all messages, and
separate msg validation concerns from the keeper
* move allowed pools to params -- let pool and pool_test focus on pool domain logic, not
parameter & governance concerns
* update alias
* add unitless implementatin of constant product liquidity pool to
isolate and enapsulate liquidity logic. Swap methods interfaces are
added, but implementation not yet added
* nits and todos
* add ErrInvalidPool
* add tests for edge cases around pool depletion; add explicit panic for
edge case that results in a pool reserve being zero; handle pool
reinitialization if it is empty
* touch up comments and flush out the rest of assertions
* add data structures for keeper state storage separate from pool domain
objects, and improve structure for easier querying
* rename pool name to pool key for events
* add support for a denominated pool that uses sdk.Coins and sdk.Coin
arguments, keeping tracking of the units in the base pool. This gives
nice separation between pool logic, and coin/denom logic
* refactor keeper to use new records for storage, and implement pool
deposit using the denominated pool
* address previous PR comment - reminder for migration if changing
account permissions
* msg deposit should validate that denoms are not equal
* add godoc comments
* golint and some poolName -> poolID cleanup
* implement adding liquidity to an existing pool
* hardcode pools in sims
* touch up comment
* withdraw keeper logic
* withdraw type updates
* add withdraw msg tx handler
* initial withdraw test
* fix panic
* use new denominated pool with existing shares
* fix: check args on deposit cmd
* add slippage limit check for depositing to an existing pool
* send coins just before event emission
* check liquidity returned is greater than zero for both coins; ensure
returned number of shares are greater than zero
* add deadline to msgwithdraw
* register msgwithdraw
* scaffold msgwithdraw types test
* register the correct msg
* modify swap functions to also return the amount paid for the pool swap
fee. This will be used to calculate slippage and for event tracking
* add slippage types
* add expected withdrawal coins
* calculate slippage against expected coins
* update withdraw keeper tests
* spelling, improve comments on add liquidity math
* typo
* typo
* grammer
* typo / grammer
* remove pool_id from withdraw msg
* add slippage to tx cmd
* TestWithdraw_Partial
* nit
* add withdraw no pool, no deposit record tests
* drop event check on partial withdraw test
* fix broken link
* fix broken link
* resolve merge conflicts
* ensure swap fee can not be equal to 1; add full implementation of swap
pool methods; these implementation ensure that the pool invariant is
always greater or equal to the previous invariant
* refactor duplicated code into private swap methods
* add runtime assertion to always ensure invariant is greater or equal
to the previous invariant sub fee on swaps
* improve comments for base pool swap functions
* add swap exact input and output methods to denominated pool that wrap
the base pool interface for swapping
* comment touch ups
* more comment touchups
* fix msg deposit struct tag (#943)
* use better name for swap calculation private methods
* nits: golint
* fix misspelling in method name
* Add HARD token governance committee for Hard module (#941)
* add hard gov token committee
* revisions: update migration
* revisions: update test/data file
* initial revisions
* add TokenCommittee JSONMarshal test
* fix SetPermissions method
* remove BaseCommittee Type field
* add incentive params to allowed params
* Add SWP token governance committee for Swap module (#946)
* add swp token commitee to migration
* update test, add gen export utility method
* final revisions: add TODO
* remove slippage from withdraw to use min values for coins; add
additional validation test cases
* update alias for swap module
* add withdraw tests to handler for increased coverage; note: first pass,
improvements still yet to be made here
* refact withdraw keeper to use min amounts; panic for cases that do not
happen in normal situations
* lint fixes
* use total shares to track if pool should be deleted; add more in depth
withdraw comment
* add exact args for withdraw cmd
* extract record update methods
* update depositor share record if it exists -- do not overwrite an
existing record; ensures no loss of shares if the same address deposits
more than once
* Swap queries: deposit, pool, pools (#949)
* query deposits types
* implement deposit querier keeper methods
* query deposits CLI
* query deposits REST
* query types for pool/pools
* pool/pools querier keeper methods
* pool/pools CLI
* pool/pools REST
* basic pool/pools query tests
* basic deposit querier test
* iterate share records via owner bytes
* nit: add example for querying deposits by owner only
Co-authored-by: karzak <kjydavis3@gmail.com>
* feat: add REST tx handler for swap LP withdrawals
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
Co-authored-by: Denali Marsh <denali@kava.io>
Co-authored-by: denalimarsh <denalimarsh@gmail.com>
Co-authored-by: karzak <kjydavis3@gmail.com>
* expand incentive cli query docs
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
Co-authored-by: Denali Marsh <denali@kava.io>
Co-authored-by: denalimarsh <denalimarsh@gmail.com>
Co-authored-by: karzak <kjydavis3@gmail.com>
* minor update to godoc comment
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
Co-authored-by: Denali Marsh <denali@kava.io>
Co-authored-by: denalimarsh <denalimarsh@gmail.com>
Co-authored-by: karzak <kjydavis3@gmail.com>
* add failing acceptance test for a user depositing into a pool
* implement GetAccount test helper
* implement swap.MsgDeposit for creating and adding liquidity to a pool
* update aliases, add event types, and fix typo/compiler errors in handler
test
* use only aliases names in handler test (don't use swap types -- ensures
we have run aliasgen), add assertion for even type message
* implement account and module account balance checks in handler test
* fill out handler assertions for testing keeper state and events
* update signed json representation and register swap/MsgDeposit for
proper encoding
* fill out boilerplate to get handler test to compile
* alias gen for pool
* add handling of message type; fill in deposit keeper method for
succesful compile; noop but test assertions now run up to module acc not
nil check
* add module account permissions for swap module -- fixes module account
creation; pass account keeper and supply keeper into swap keeper to
allow the ability to work with user and module accounts
* implement create pool logic for msg deposit; allows creation of a of new
pool, checking params to see if it is allowed. Initi shares are set,
and senders number of shares are stored
* Swap migrations scaffolding (#925)
* swap module scaffolding
* global swap fee
* can't think of a reason for begin blocker; removing for abci.go for now;
* test pair types; refactor pair name logic; simplify pairs validation and
fix stack overflow error
* check comparison
* use test package
* init swap module genesis
* add basic marshall tests
* remove reward apy from pairs
* fix integration helpers
* use max swap fee constant; fix validation of swap fee; add tests to
cover param validation and param set setup
* use noerror over nil
* start genesis tests
* test param set validation mirrors param validation
* add genesis tests
* remove print statement
* add subtests for genesis test cases; add extra querier test for unknown
route; add keeper params testing
* add spec
* update swagger
* find replace hard -> swap in comments
* remove unused method
* rename pairs to allowed pools; pool is more commonly used, and
allowedPool makes it more clear what swap parameter is for. In
addition, we won't conflict with Pool data structure for storing a
created pool in the store.
* remove generated link
* missed spec rename
* validate token order for allowed pools
* fix swagger
* json should be snakecase; change allowedPools to allowed_pools
* add legacy types
* add swap genesis to v0_15 migration
* add legacy types
* add swap genesis to v0_15 migration
* migration revisions
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* keeper todos
* update keeper tests
* type todos
* update types tests
* tx deposit cli cmd
* tx deposit rest
* Swap module simulation scaffolding (#924)
* sims scaffolding
* add noop operation
* genesis revisions
* add param changes
* mvoe persistance methods to main keeper file, consolidate tests
* make helper methods private. they are tested via deposit method, and
unit testing them would make test suite brittle and refactoring
difficult
* use more clear coin variables
* code 1 is reserved, use code 2 and sequence all errors
* remove todo
* Implement deadline for swap module module message. This is implemented in
handler with a interface to easily apply to it to all messages, and
separate msg validation concerns from the keeper
* move allowed pools to params -- let pool and pool_test focus on pool domain logic, not
parameter & governance concerns
* update alias
* add unitless implementatin of constant product liquidity pool to
isolate and enapsulate liquidity logic. Swap methods interfaces are
added, but implementation not yet added
* nits and todos
* add ErrInvalidPool
* add tests for edge cases around pool depletion; add explicit panic for
edge case that results in a pool reserve being zero; handle pool
reinitialization if it is empty
* touch up comments and flush out the rest of assertions
* add data structures for keeper state storage separate from pool domain
objects, and improve structure for easier querying
* rename pool name to pool key for events
* add support for a denominated pool that uses sdk.Coins and sdk.Coin
arguments, keeping tracking of the units in the base pool. This gives
nice separation between pool logic, and coin/denom logic
* refactor keeper to use new records for storage, and implement pool
deposit using the denominated pool
* address previous PR comment - reminder for migration if changing
account permissions
* msg deposit should validate that denoms are not equal
* add godoc comments
* golint and some poolName -> poolID cleanup
* implement adding liquidity to an existing pool
* hardcode pools in sims
* touch up comment
* withdraw keeper logic
* withdraw type updates
* add withdraw msg tx handler
* initial withdraw test
* fix panic
* use new denominated pool with existing shares
* fix: check args on deposit cmd
* add slippage limit check for depositing to an existing pool
* send coins just before event emission
* check liquidity returned is greater than zero for both coins; ensure
returned number of shares are greater than zero
* add deadline to msgwithdraw
* register msgwithdraw
* scaffold msgwithdraw types test
* register the correct msg
* modify swap functions to also return the amount paid for the pool swap
fee. This will be used to calculate slippage and for event tracking
* add slippage types
* add expected withdrawal coins
* calculate slippage against expected coins
* update withdraw keeper tests
* spelling, improve comments on add liquidity math
* typo
* typo
* grammer
* typo / grammer
* remove pool_id from withdraw msg
* add slippage to tx cmd
* TestWithdraw_Partial
* nit
* add withdraw no pool, no deposit record tests
* drop event check on partial withdraw test
* fix broken link
* fix broken link
* resolve merge conflicts
* ensure swap fee can not be equal to 1; add full implementation of swap
pool methods; these implementation ensure that the pool invariant is
always greater or equal to the previous invariant
* refactor duplicated code into private swap methods
* add runtime assertion to always ensure invariant is greater or equal
to the previous invariant sub fee on swaps
* improve comments for base pool swap functions
* add swap exact input and output methods to denominated pool that wrap
the base pool interface for swapping
* comment touch ups
* more comment touchups
* fix msg deposit struct tag (#943)
* use better name for swap calculation private methods
* nits: golint
* fix misspelling in method name
* Add HARD token governance committee for Hard module (#941)
* add hard gov token committee
* revisions: update migration
* revisions: update test/data file
* initial revisions
* add TokenCommittee JSONMarshal test
* fix SetPermissions method
* remove BaseCommittee Type field
* add incentive params to allowed params
* Add SWP token governance committee for Swap module (#946)
* add swp token commitee to migration
* update test, add gen export utility method
* final revisions: add TODO
* remove slippage from withdraw to use min values for coins; add
additional validation test cases
* update alias for swap module
* add withdraw tests to handler for increased coverage; note: first pass,
improvements still yet to be made here
* refact withdraw keeper to use min amounts; panic for cases that do not
happen in normal situations
* lint fixes
* use total shares to track if pool should be deleted; add more in depth
withdraw comment
* add exact args for withdraw cmd
* extract record update methods
* update depositor share record if it exists -- do not overwrite an
existing record; ensures no loss of shares if the same address deposits
more than once
* Swap queries: deposit, pool, pools (#949)
* query deposits types
* implement deposit querier keeper methods
* query deposits CLI
* query deposits REST
* query types for pool/pools
* pool/pools querier keeper methods
* pool/pools CLI
* pool/pools REST
* basic pool/pools query tests
* basic deposit querier test
* iterate share records via owner bytes
* nit: add example for querying deposits by owner only
Co-authored-by: karzak <kjydavis3@gmail.com>
* feat: add REST tx handler for swap LP withdrawals
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
Co-authored-by: Denali Marsh <denali@kava.io>
Co-authored-by: denalimarsh <denalimarsh@gmail.com>
Co-authored-by: karzak <kjydavis3@gmail.com>
* add get set methods for swap reward indexes
* add get set methods for swap accrual time
* tidy up location of multi periods
* add swap reward periods to params
* add initial legacy types for incentive
* minor refactor of migration code
* add incentive migration for swap params
* minor incentive test refactors
* add math methods to RewardIndexes
* add keeper method to increment global indexes
* add swap keeper to incentive keeper
* indicate if pool shares were found or not
* add accumulator to compute new rewards each block
* accumulate swap rewards globally
* remove unecessary keeper method
* expand doc comments on accumulator methods
* test precision not lost in accumulation
* minor fixes from merge
* rename storeGlobalDelegatorFactor to match others
* fix migration from merge
* fix bug in app setup
* fix accumulation bug when starting with no state
* rename swap files to match others
* add swap accumulation times to genesis
* remove old migration refactor
* minor updates to spec
* add high level description of how rewards work