Add upgrade handler
Migrates from x/evmutil to x/precisebank:
- Fractional balances
- Reserve funds
- Mints or burns coins to ensure fractional balances are fully backed.
Initialize remainder if necessary to ensure valid state.
E2E test with fixed kvtool
* feat!(precompile): Add registry and genesis tests
Based on evgeniy-scherbina's work, this adds a new precompile module
which defines a contract moudule with an example noop contract that
will be will be used for implementing test functions. In addition,
it defines a registry module that instantiates stateful precompile
contracts and associates them with an address in a global registry
defined in kava-labs/go-ethereum. See precompile/README.md for more
information.
The kava-labs/go-ethereum and kava-labs/etheremint replace statements
are updated to support these changes as well as an update to kvtool
which includes genesis state for the registry.NoopContractAddress and
initializes the contract's EthAccount with a non-zero sequence and
codehash set to keccak256(0x01), and sets the contract code to 0x01.
See tests/e2e/e2e_precompile_genesis_test.go for an overview of the
expected genesis state for an enabled precompile.
Co-authored-by: evgeniy-scherbina <evgeniy.shcherbina.es@gmail.com>
* chore: Precompile readme improvements
This fixes a typo (import -> important) and uses package terminology
instead of unclear module terminology. This aligns best with golang
terminology were modules and packages are distinctly different and
modules are defined using go.mod.
* chore: Improve noop contract godoc
Add a more meaningful godoc where the noop contract is constructed.
* chore(e2e): Improve comments around query checks
Improve the clarity of comments around where the error is checked for
accounts and why it is not checked directly.
In addition, improve comment on why both grpc and rpc code is fetched
and where they are used.
---------
Co-authored-by: evgeniy-scherbina <evgeniy.shcherbina.es@gmail.com>
This resolves ASA-2024-008. Patched in 0.37.7 but that version has a breaking change which was reverted in 0.37.8.
The replace for golang.org/x/exp prevents breaking change in slices package causing compile error with gogoproto
* downgrade to ibc v7 for ibc tests
* add conformance test (does not pass consistently)
* limit number of nodes for more consistent passing
* update to upstream v7 branch of interchaintest
also, remove unnecessary go.mod replace statements
* better names for int pointers
* setup interchaintest IBC test
* e2e test of packet forwarding middleware
* rename interchain -> e2e-ibc & add make cmd
* add CI step that runs e2e-ibc tests
* use current branch for docker image in e2e-ibc
* Update cometbft, cosmos, ethermint, and ibc-go
* Replace github.com/tendermint/tendermint by github.com/cometbft/cometbft
* Replace github.com/tendermint/tm-db by github.com/cometbft/cometbft-db
* Replace gogo/protobuf with cosmos/gogoproto & simapp replacement
* Replace cosmos-sdk/simapp/helpers with cosmos-sdk/testutil/sims
* Remove no longer used simulations
* Replace ibchost with ibcexported
See https://github.com/cosmos/ibc-go/blob/v7.2.2/docs/migrations/v6-to-v7.md#ibc-module-constants
* Add new consensus params keeper
* Add consensus keeper to blockers
* Fix keeper and module issues in app.go
* Add IsSendEnabledCoins and update SetParams interface changes
* Fix protobuf build for cosmos 47 (#1800)
* fix cp errors by using -f; fix lint by only linting our proto dir;
and use proofs.proto directly from ics23 for ibc-go v7
* run proto-all; commit updated third party deps and swagger changes
* regenerate proto files
* use correct gocosmos build plugin for buf
* re-gen all protobuf files to update paths for new gocosmos plugin
* update protoc and buf to latest versions
* fix staking keeper issues in app.go
* update tally handler for gov changes
* chain id fix and flag fixes
* update deps for cometbft 47.7 upgrade
* remove all module legacy queriers
* update stakingKeeper to pointer
* Replace ModuleCdc from govv1beta1 to govcodec
* remove simulations
* abci.LastCommitInfo → abci.CommitInfo
* Remove unused code in keys.go
* simapp.MakeTestEncodingConfig -> moduletestutil.MakeTestEncodingConfi
* Fix chain id issues in tests
* Fix remaining unit test issues
* Update changelog for upgrade
* Fix e2e tests using updated kvtool
* Update protonet to v47 compatible genesis
* Bump cometbft-db to v0.9.1-kava.1
* Update kvtool
* Remove extra changelog
* Fix merged rocksdb issues
* go mod cleanup
* Bump cometbft-db to v9 and go to 1.21
* Bump rocksdb version to v8.10.0
* Update kvtool to latest version
* Update gin to v1.9.0
* Use ibctm.ModuleName in app_test
* Fallback to genesis chain id instead of client toml
* Remove all simulations
* Fix cdp migrations issue with v47
* Update dependencies to correct tags
---------
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
* (feat) update x/cdp to run every X blocks based off params (#1814)
* add new cdp module param to protonet genesis
* update cdp / cdp related tests for new module param
* update telemetry docs and setup for collecting against local node
* update kvool commit for new cdp param
(cherry picked from commit 4d62f47773)
* add tests for configurable x/cdp begin blocker interval param
add migration for default value of param
* make adjustments based off pr feedback
* fix proto back compat check
* add new cdp module param to protonet genesis
* update cdp / cdp related tests for new module param
* update telemetry docs and setup for collecting against local node
* update kvool commit for new cdp param
* Add rocksdb compact command
* Increase compaction log output to 1 min
* Use GetClient/ServerContextFromCmd
* Update cmd info
* Add doc to logColumnFamilyMetadata
* Update RocksDBCmd docs
* Add changelog entry
* Load latest options from rocksdb
* Allow application.db to be compacted
* Rename more store -> db
* Ensure compaction stats output does not run when db is closed
* Add flag for custom stat output interval, return error
* stub out shard CLI command
* prune blocks before and after desired range
* update rollback to use patched cometbft
* temp override for local patched versions
* handle pruning cometbft & block store state
* include docs & support -1 for "latest"
* update changelog
* add --only-app-state flag to match cosmos-sdk prune cmd
* give -1 magic number a name & reuse home from ctx
* refactor to only open state.db & blockstore.db once
* write rollback progress to one line
* prevent attempting rollback of future blocks
* make shard inclusive of endblock
* use tagged cosmo-sdk & cometbft versions
* 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 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
* 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
* 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>
* add cost summary to e2e test suite runs
* lower cost of test
* refactor initial funding to use new BankSend()
* reduce gas used for initial funding
* return all sdk funds on shutdown
* enable refunds when running against live network
* save more cosmos coins! require less total overall
* track erc20s on Chain
* refactor erc20 funding with new TransferErc20()
* return all registered erc20 balance
* lower erc20 e2e test values
* withdraw earn position & convert back to erc20
* lower gas fees in e2e tests
* fix env variable typo
* add readme note about how to run on live network
* log total spend required for e2e tests
* add NodeRunner impl for connecting to live network
* refactor out node runner setups
* remove hardcoded denom for DeployedErc20
* further specify restrictions on DeployedErc20
* don't override .env funded account mnemonic
* lower amounts for convert to coin e2e tests
* lower fund values used by e2e tests
* add doc comments for all e2e functions & types
* add helpers & tests for erc20 eth_call query & transfer
* make encoding config public
* add evm client & raw evm signer to account
* test eip712 signing and broadcast
* update for cosmos v46
* update kvtool
* temporarily disable ibc tests & skip shutdown
* disable all but eip712 test and massively simplify
* add EIP712 tx builder & setup basic MsgSend test
* reenable all tests
* add eip712 test that deposits erc20 into earn
* update kvtool to master branch
* 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>
* check receipt status for failed txs from evm
* make EvmSigner's Auth public
* setup evm state initialization for e2e
* add a dummy Greeter contract, deployed on start
* move WaitForEvmTxReceipt to from account to util
* add tests for interacting with the contract
* add ContractAddrs map to Chain