9227e78c79
* use stack of contexts to implement snapshot revert Closes #338 add exception revert test case verify partial revert mutate state after the reverted subcall polish update comments name the module after the type name remove the unnecessary Snapshot in outer layer and add snapshot unit test assert context stack is clean after tx processing cleanups fix context revert fix comments update comments it's ok to commit in failed case too Update x/evm/keeper/context_stack.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Update x/evm/keeper/context_stack.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Update x/evm/keeper/context_stack.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> update comment and error message add comment to cacheContext k -> cs Update x/evm/keeper/context_stack.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> evm can handle state revert renames and unit tests * use table driven tests * keep all the cosmos events * changelog * check for if commit function is nil * fix changelog * Update x/evm/keeper/context_stack.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
21 KiB
21 KiB
Changelog
Unreleased
State Machine Breaking
- (evm) tharsis#175 The msg
TxData
field is now represented as a*proto.Any
. - (evm) tharsis#84 Remove
journal
,CommitStateDB
andstateObjects
. - (rpc, evm) tharsis#81 Remove tx
Receipt
from store and replace it with fields obtained from the Tendermint RPC client. - (evm) tharsis#72 Update
AccessList
to useTransientStore
instead of map. - (evm) tharsis#68 Replace block hash storage map to use staking
HistoricalInfo
. - (evm) tharsis#276 Vm errors don't result in cosmos tx failure, just different tx state and events.
- (evm) tharsis#342 Don't clear balance when resetting the account.
- (evm) tharsis#334 Log index changed to the index in block rather than tx.
- (evm) tharsis#399 Exception in sub-message call reverts the call if it's not propagated.
API Breaking
- (proto, evm) tharsis#207 Replace
big.Int
in favor ofsdk.Int
forTxData
fields - (proto, evm) tharsis#81 gRPC Query and Tx service changes:
- The
TxReceipt
,TxReceiptsByBlockHeight
endpoints have been removed from the Query service. - The
ContractAddress
,Bloom
have been removed from theMsgEthereumTxResponse
and the response now contains the ethereum-formattedHash
in hex format.
- The
- (eth) #845 The
eth
namespace must be included in the list of API's as default to run the rpc server without error. - (evm) #202 Web3 api
SendTransaction
/SendRawTransaction
returns ethereum compatible transaction hash, and query apiGetTransaction*
also accept that. - (rpc) tharsis#258 Return empty
BloomFilter
instead of throwing an error when it cannot be found (nil
or empty). - (rpc) tharsis#277 Fix
BloomFilter
response.
Improvements
- (deps) tharsis#374 Bump ibc-go to
v1.0.0-rc4
- (gRPC) tharsis#239 Query
ChainConfig
via gRPC. - (rpc) tharsis#181 Use evm denomination for params on tx fee.
- (deps) tharsis#165, tharsis#298 Bump Cosmos SDK and Tendermint versions to v0.43.0-rc3 and v0.34.11, respectively.
- (evm) tharsis#66 Support legacy transaction types for signing.
- (evm) tharsis#24 Implement metrics for
MsgEthereumTx
, state transitions,BeginBlock
andEndBlock
. - (rpc) #124 Implement
txpool_content
,txpool_inspect
andtxpool_status
RPC methods - (rpc) tharsis#112 Fix
eth_coinbase
to return the ethereum address of the validator - (rpc) tharsis#176 Support fetching pending nonce
- (rpc) tharsis#272 do binary search to estimate gas accurately
- (rpc) #313 Implement internal debug namespace (Not including logger functions nor traces).
- (rpc) #349 Implement configurable JSON-RPC APIs to manage enabled namespaces.
- (rpc) #377 Implement
miner_
namespace.miner_setEtherbase
andminer_setGasPrice
are working as intended. All the other calls are not applicable and returnunsupported
.
Bug Fixes
- (keys) tharsis#346 Fix
keys add
command with--ledger
flag for thesecp256k1
signing algorithm. - (evm) tharsis#291 Use block proposer address (validator operator) for
COINBASE
opcode. - (rpc) tharsis#81 Fix transaction hashing and decoding on
eth_sendTransaction
. - (rpc) tharsis#45 Use
EmptyUncleHash
andEmptyRootHash
for empty ethereumHeader
fields.
[v0.4.1] - 2021-03-01
API Breaking
- (faucet) #678 Faucet module has been removed in favor of client libraries such as
@cosmjs/faucet
. - (evm) #670 Migrate types to the ones defined by the protobuf messages, which are required for the stargate release.
Bug Fixes
- (evm) #799 Fix wrong precision in calculation of gas fee.
- (evm) #760 Fix Failed to call function EstimateGas.
- (evm) #767 Fix error of timeout when using Truffle to deploy contract.
- (evm) #751 Fix misused method to calculate block hash in evm related function.
- (evm) #721 Fix mismatch block hash in rpc response when use eht.getBlock.
- (evm) #730 Fix 'EIP2028' not open when Istanbul version has been enabled.
- (evm) #749 Fix panic in
AnteHandler
when gas price larger than 100000 - (evm) #747 Fix format errors in String() of QueryETHLogs
- (evm) #742 Add parameter check for evm query func.
- (evm) #687 Fix nonce check to explicitly check for the correct nonce, rather than a simple 'greater than' comparison.
- (api) #687 Returns error for a transaction with an incorrect nonce.
- (evm) #674 Reset all cache after account data has been committed in
EndBlock
to make sure every node state consistent. - (evm) #672 Fix panic of
wrong Block.Header.AppHash
when restart a node with snapshot. - (evm) #775 MisUse of headHash as blockHash when create EVM context.
Features
- (api) #821 Individually enable the api modules. Will be implemented in the latest version of ethermint with the upcoming stargate upgrade.
Features
- (api) #825 Individually enable the api modules. Will be implemented in the latest version of ethermint with the upcoming stargate upgrade.
[v0.4.0] - 2020-12-15
API Breaking
- (evm) #661
Balance
field has been removed from the evm module'sGenesisState
.
Features
- (rpc) #571 Add pending queries to JSON-RPC calls. This allows for the querying of pending transactions and other relevant information that pertains to the pending state:
eth_getBalance
eth_getTransactionCount
eth_getBlockTransactionCountByNumber
eth_getBlockByNumber
eth_getTransactionByHash
eth_getTransactionByBlockNumberAndIndex
eth_sendTransaction
- the nonce will automatically update to its pending nonce (when none is explicitly provided)
Improvements
- (evm) #661 Add invariant check for account balance and account nonce.
- (deps) #654 Bump go-ethereum version to v1.9.25
- (evm) #627 Add extra EIPs parameter to apply custom EVM jump tables.
Bug Fixes
- (evm) #661 Set nonce to the EVM account on genesis initialization.
- (rpc) #648 Fix block cumulative gas used value.
- (evm) #621 EVM
GenesisAccount
fields now share the same format as the auth moduleAccount
. - (evm) #618 Add missing EVM
Context
GetHash
field that retrieves a the header hash from a given block height. - (app) #617 Fix genesis export functionality.
- (rpc) #574 Fix outdated version from
eth_protocolVersion
.
[v0.3.1] - 2020-11-24
Improvements
- (deps) #615 Bump Cosmos SDK version to v0.39.2
- (deps) #610 Update Go dependency to 1.15+.
- (evm) #603 Add state transition params that enable or disable the EVM
Call
andCreate
operations. - (deps) #602 Bump tendermint version to v0.33.9
Bug Fixes
- (rpc) #613 Fix potential deadlock caused if the keyring
List
returned an error.
[v0.3.0] - 2020-11-16
API Breaking
- (crypto) #559 Refactored crypto package in preparation for the SDK's Stargate release:
crypto.PubKeySecp256k1
andcrypto.PrivKeySecp256k1
are nowethsecp256k1.PubKey
andethsecp256k1.PrivKey
, respectively- Moved SDK
SigningAlgo
implementation for Ethermint's Secp256k1 key tocrypto/hd
package.
- (rpc) #588 The
rpc
package has been refactored to account for the separation of each corresponding Ethereum API namespace:rpc/namespaces/eth
:eth
namespace. Exposes thePublicEthereumAPI
and thePublicFilterAPI
.rpc/namespaces/personal
:personal
namespace. Exposes thePrivateAccountAPI
.rpc/namespaces/net
:net
namespace. Exposes thePublicNetAPI
.rpc/namespaces/web3
:web3
namespace. Exposes thePublicWeb3API
.
- (evm) #588 The EVM transaction CLI has been removed in favor of the JSON-RPC.
Improvements
Bug Fixes
- (ante) #597 Fix incorrect fee check on
AnteHandler
. - (evm) #583 Fixes incorrect resetting of tx count and block bloom during
BeginBlock
, as well as gas consumption. - (crypto) #577 Fix
BIP44HDPath
that did not prependm/
to the path. This now uses theDefaultBaseDerivationPath
variable from go-ethereum to ensure addresses are consistent.
[v0.2.1] - 2020-09-30
Features
- (rpc) #552 Implement Eth Personal namespace
personal_importRawKey
.
Bug fixes
- (keys) #554 Fix private key derivation.
- (app/ante) #550 Update ante handler nonce verification to accept any nonce greater than or equal to the expected nonce to allow to successive transactions.
[v0.2.0] - 2020-09-24
State Machine Breaking
- (app) #540 Chain identifier's format has been changed to match the Cosmos
chainID
standard, which is required for IBC. The epoch number of the ID is used as the EVMchainID
.
API Breaking
- (types) #503 The
types.DenomDefault
constant for"aphoton"
has been renamed totypes.AttoPhoton
.
Improvements
- (types) #504 Unmarshal a JSON
EthAccount
using an Ethereum hex address in addition to Bech32. - (types) #503 Add
--coin-denom
flag to testnet command that sets the given coin denomination to SDK and Ethermint parameters. - (types) #502
EthAccount
now also exposes the Ethereum hex address instring
format to clients. - (types) #494 Update
EthAccount
public key JSON type tostring
. - (app) #471 Add
x/upgrade
module for managing software updates. - (
x/evm
) #458 Define parameter for token denomination used for the EVM module. - (
x/evm
) #443 Support custom EthereumChainConfig
params. - (types) #434 Update default denomination to Atto Photon (
aphoton
). - (types) #515 Update minimum gas price to be 1.
Bug Fixes
- (ante) #525 Add message validation decorator to
AnteHandler
forMsgEthereumTx
. - (types) #507 Fix hardcoded
aphoton
onEthAccount
balance getter and setter. - (types) #501 Fix bech32 encoding error by using the compressed ethereum secp256k1 public key.
- (
x/evm
) #496 Fix bugs onjournal.revert
andCommitStateDB.Copy
. - (types) #480 Update BIP44 coin type to
60
to satisfy EIP84. - (types) #513 Fix simulated transaction bug that was causing a consensus error by unintentionally affecting the state.
[v0.1.0] - 2020-08-23
Improvements
- (sdk) #386 Bump Cosmos SDK version to v0.39.1
- (
x/evm
) #181 Updated EVM module to the recommended module structure. - (app) #188 Misc cleanup:
- (
x/evm
) RenameEthereumTxMsg
-->MsgEthereumTx
andEmintMsg
-->MsgEthermint
for consistency with SDK standards - Updated integration and unit tests to use
EthermintApp
as testing suite - Use expected
Keeper
interface forAccountKeeper
- Replaced
count
type in keeper withint
- Add SDK events for transactions
- (
- #236 Changes from upgrade:
- (
app/ante
) MovedAnteHandler
implementation toapp/ante
- (keys) Marked
ExportEthKeyCommand
as UNSAFE - (
x/evm
) MovedBeginBlock
andEndBlock
tox/evm/abci.go
- (
- (
x/evm
) #255 Add missingGenesisState
fields and supportExportGenesis
functionality. - #272 Add
Logger
for evm module. - #317
GenesisAccount
validation. - (
x/evm
) #319 Various evm improvements:- Add transaction
[]*ethtypes.Logs
to evm'sGenesisState
to persist logs after an upgrade. - Remove evm
CodeKey
andBlockKey
in favor of a prefixStore
. - Set
BlockBloom
duringEndBlock
instead ofBeginBlock
. Commit
state object andFinalize
storage afterInitGenesis
setup.
- Add transaction
- (rpc) #325
eth_coinbase
JSON-RPC query now returns the node's validator address.
Features
- (build) #378 Create multi-node, local, automated testnet setup with
make localnet-start
. - (rpc) #330 Implement
PublicFilterAPI
'sEventSystem
which subscribes to Tendermint events uponFilter
creation. - (rpc) #231 Implement
NewBlockFilter
in rpc/filters.go which instantiates a polling block filter- Polls for new blocks via
BlockNumber
rpc call; if block number changes, it requests the new block viaGetBlockByNumber
rpc call and adds it to its internal list of blocks - Update
uninstallFilter
andgetFilterChanges
accordingly uninstallFilter
stops the polling goroutinegetFilterChanges
returns the filter's internal list of block hashes and resets it
- Polls for new blocks via
- (rpc) #54, #55
Implement
eth_getFilterLogs
andeth_getLogs
:- For a given filter, look through each block for transactions. If there are transactions in the block, get the logs from it, and filter using the filterLogs method
eth_getLogs
andeth_getFilterChanges
for log filters use the same underlying method aseth_getFilterLogs
- update
HandleMsgEthereumTx
to store logs using the ethereum hash
- (app) #187 Add support for simulations.
Bug Fixes
- (evm) #767 Fix error of timeout when using Truffle to deploy contract.
- (evm) #751 Fix misused method to calculate block hash in evm related function.
- (evm) #721 Fix mismatch block hash in rpc response when use eth.getBlock.
- (evm) #730 Fix 'EIP2028' not open when Istanbul version has been enabled.
- (app) #749 Fix panic in
AnteHandler
when gas price larger than 100000 - (rpc) #305 Update
eth_getTransactionCount
to check for account existence before getting sequence and return 0 as the nonce if it doesn't exist. - (
x/evm
) #319 FixSetBlockHash
that was setting the incorrect height duringBeginBlock
. - (
x/evm
) #176 Updated Web3 transaction hash from using RLP hash. Now all transaction hashes exposed are amino hashes:- Removes
Hash()
(RLP) function fromMsgEthereumTx
to avoid confusion or misuse in future.
- Removes