* 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>
* Add consolidate methods
* Update distr feepool balance with dust, add tests
* Set params for proposal handler to not influence module balances
* Add StakingRewardsPerSecond param for proposal test
* Update changelog
* Update test to check emitted events
* Log dust amounts for x/distribution
* Modify feepool communitypool field instead of entire replacement
* Update tests to include cases with empty balances
* Move EventsContains to app
* Remove extra copied ModuleName
* Add Require() to incentive claims in tests to reduce errors
* Move consolidate tests to testutil
* Only transfer non-ukava coins
* Add DefaultStakingRewardsState to proposal handler test
* Move event emit before consolidate
* add golangci specific timeout
---------
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* Add authority, MsgUpdateParams
* Add e2e test for x/community UpdateParamsMsg proposal
* Ensure new params are different
* Add errors and update codec
* Update changelog
* Use single reused govAuthorityAddr
* Add unit tests for authority and msg
* Validate authority address
* Update proto comment
* Check for ErrInvalidSigner in invalid authority error
* Emit events for staking rewards
* Update test to check disable inflation check
* Only emit staking rewards event when non-zero value
* use existing transfer amount for event
* add assertion that no events are emitted for zero rewards; refactor
event assertions to be a little cleaner
---------
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* add new field upgrade_time_set_staking_rewards_per_second with intention
of integrating into the disable inflation logic to set an initial
staking reward time
* when the disable inflation upgrade time occurs, set the staking rewards
per second to the value specified by the new
upgrade_time_set_staking_rewards_per_second. This will allow a decoupled
implementation between the ugprade switching logic, and the core
functionality of paying staking rewards from the pool
* add staking rewards state to community keeper and community module
genesis that is required to calculate and track staking reward payouts
accross blocks
* add implementation of staking reward payouts
* remove unused error
* touch up tests and add a test case that fully tests behavior when pool
is drained
* add function comments
* refactor and pull out main calculation to private pure function with
no dependence on keeper
* zero out default parameters -- these are too chain specific to have
useful defaults
* small touch ups on comments, test cases
* use correct Int from sdkmath, not old sdk types; update protonet genesis
for new parmater
* fix copy pasta comment
* use bond denom from staking keeper instead of referncing ukava directly
* add staking reward state for valid genesis
* update kvtool genesis for new params and rewards state
* feat: disable inflation upgrade logic
* improve disable inflation comments
* add upgrade tests
* update changelog
* split disable inflation upgrade and the upgrade check
* remove pay rewards logic
* clean up incentives test
* add abci test
* refactor upgradeTime and blockTime check
* fix abci test
* fix wrong pr in changelog
* refactor disable inflation tests, behavior, and implementation
- Unit tests are now shared between keeper and abci begin blocker
since behavior is 100% the same
- ABCI is unaware of keeper initial keeper logic branch (keeper
methods required to be called in certain order by begin blocker)
- Behavior of zero time is changed -- this now doesn't run for the
zero time. This is more ideal for new chains (genesis should set
all correct state instead of relying on inflation disable logic),
and allows for a simpler implementation.
- Begin blocker now panics if parameters are not in state
* remove previous tests and implementation
* remove previous block time keeper state -- not needed for inflation
disalbing
* move inflation disabling to private method and add more comments
* remove unused key
* use correct spelling for idempotence
---------
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* refactor param validation test cases to be shared by genesis and params
tests
* add additional test case for zero staking rewards in order to ensure
no regressions in support for turning off rewards
* add test case to ensure default params are valid -- prevent regression
if defaults change to an invalid state during updates of validation or
defaults
* zero out parameters in migration -- this module will be used with
existing chains and parameters should be set after migrations in
each upgrade handler
* update StakingRewardsPerSecond to an 18 decimal type in order to
reduce error
* add community grpc rest endpoints to swagger
* Fix copy pasta query name to refer to correct Community module
Co-authored-by: drklee3 <derrick@dlee.dev>
* generate swagger changes from previous commit
---------
Co-authored-by: drklee3 <derrick@dlee.dev>
* add community params type
* add get/set params methods
* add community genesis state type
* add community init/export genesis
* add querier methods for params
* add query cli cmd
* update changelog
* update protonet genesis
* Add `RewardsPerSecond` param to `x/community` module (#1707)
* Add RewardsPerSecond param to community
* Update rewards per second param to int
* Add rewards_per_second to protonet genesis
* Use default rewards per second of 744191
* Include value if negative in Validate error
* Rename RewardsPerSecond param to StakingRewardsPerSecond
* Add changelog entry
* Add param migration, update consensus version to 2
* Update proto docs
* Update staking_rewards_per_second param name in protonet genesis (#1730)
* Update godoc
Co-authored-by: Robert Pirtle <Astropirtle@gmail.com>
* add genesis state tests
* document what 0 upgrade time means
* update kvtool to include new params
---------
Co-authored-by: drklee3 <derrick@dlee.dev>
Co-authored-by: Robert Pirtle <Astropirtle@gmail.com>
* initialize x/metrics with metrics collection
* include global labels in x/metrics metrics
* add x/metrics spec
* add x/metrics test coverage
* update changelog
* fix(evmutil): create module account on InitGenesis
ensures the creation of the x/evmutil module account on init genesis.
* update changelog
* cleanup debug logging
* first pass at convert cosmos coin -> evm msg
* test ConvertCosmosCoinFromERC20 method
* test message server for MsgConvertCosmosCoinFromERC20
* update spec to include MsgConvertCosmosCoinFromERC20
* update changelog
* add CLI command for convert-cosmos-coin-from-erc20
* add test of removed/re-enable denom for convert
* add amino registration test
* register evmutil types on app amino codec
* register new msg type in amino and proto,
also use new register method that checks length to catch ledger issues
* clarify variable naming
* feat(evmutil): add ERC20KavaWrappedNativeCoinContract
* adds the contract ABI & bytecode for an Ownable erc20 with the following:
* customizable decimals on deploy -> requires overriding decimals() view
* mint() exposed for the contract owner which will be the evmutil module
* burn() exposed for the contract owner which will be the evmutil module
* sets up keeper to deploy above token based on details from an
AllowedNativeCoinERC20Token
* tests basic queries and permissions of deployed contract
* update changelog
* improve error messages & comments for erc20 deploy
* setup empty hardhat project for evm contract dev
* setup eslint
* setup prettier
* setup solhint
* ignore contracts dir in docker
* add ERC20KavaWrappedNativeCoin contract
* add unit tests for ERC20KavaWrappedNativeCoin
* use solidity 0.8.18
* configure solc with optimization and evm target
* compile ERC20KavaWrappedNativeCoin for evmutil
* setup script for deploying directly to a network
* fix burn test for ERC20KavaWrappedNativeCoin
Co-authored-by: drklee3 <derrick@dlee.dev>
---------
Co-authored-by: drklee3 <derrick@dlee.dev>
* add proto for allowed sdk denoms -> evm conversion
* add validation for AllowedNativeCoinERC20Token
* add validation for AllowedNativeCoinERC20Tokens
* add AllowedNativeDenoms into params & genesis
* add evmutil Params.Validate() test
* fix eip712 ante test
* update changelog
* update internal testnet genesis.json
* update state & param specs
updates to the sections describing functionality will be updated once
that functionality actually exists... :)
* update field decimal -> decimals
field now matches erc20 spec
* add validation decimals will cast to uint8
* add v2 store migration for evmutil
* create & register evmutil migrations
* adds migrator to evmutil's keeper
* sets up Migrate1To2 migration
* registers migration in module
* updates GetParams to properly handle historic block queries
* add unit test for GetParams with historic store
* feat: add CommunityCDPRepayDebtPermission
When granted, the new permission allows a committee to submit a
CommunityCDPRepayDebtProposal to lower principal owed on a cdp
owned by the x/community module.
* update changelog
* update protonet genesis.json
* 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