* 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>