* 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