chore: add evm-v0.6.3 upgrade handler (donut) - #369
Merged
Conversation
No state migration; the plan name lets cosmovisor swap the binary at a coordinated height, which the gasless MsgVoteReadResult change requires.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plan name
evm-v0.6.3. EmptyStoreUpgrades,RunMigrationsonly.No state migration. Verified across v0.6.2..v0.6.3: 0 proto files changed, no store key added or removed,
vmconsensusVersion stays 2, migration dirs unchanged. The push-chain changes from #366 add no store and no proto either.Why it still needs a coordinated height — the binary carries consensus-affecting behaviour:
evm v0.6.3 (two files, both
x/vm/statedb)AddBalancepanics on overflow instead of wrapping silently — the counterpart to theSubBalancefix in v0.6.2.StateDB.Commitis now atomic. The precompile path wrote its dirty set to the root ctx while precompile writes went to the cache, so the two could diverge; both now land in the same context. The normal path stages through a cache context so a late failure leaves ctx untouched.push-chain #366
MsgVoteReadResultis gasless. This is the one that forces the coordination — an old binary still deducts the fee, so the two disagree on state and the app hash diverges.x/ucallbackpasses explicit gas limits instead of nil (nil made the EVM estimate and land on gas that starved the callback).Registered after
readstate.