0d69a69625
* Problem: websocket client get duplicated messages Closes: #954 Solution: - localize the subscription management within current connection * changelog * fix linter * fix test building Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
36 KiB
36 KiB
Changelog
Unreleased
Improvements
- (log) #948 redirect go-ethereum's logs to Cosmos SDK logger.
Bug Fixes
- (rpc) #955 Fix websocket server push duplicated messages to subscriber.
- (rpc) tharsis#953 Add
eth_signTypedData
api support. - (log) #948 redirect go-ethereum's logs to cosmos-sdk logger.
[v0.10.0-beta1] - 2022-02-15
API Breaking
- (ante) #866
NewAnteHandler
constructor now receives aHandlerOptions
field. - (evm) #849
PostTxProcessing
hook now takes an Ethereum txReceipt
and afrom
Address
as arguments. - (ante) #916 don't check min-gas-price for eth tx if london hardfork enabled and feemarket enabled.
State Machine Breaking
- (deps) tharis#912 Bump Cosmos SDK version to
v0.45.0
- (evm) tharsis#840 Store empty topics as empty array rather than nil.
- (feemarket) tharsis#822 Update EIP1559 base fee in
BeginBlock
. - (evm) tharsis#817 Use
effectiveGasPrice
in ante handler, addeffectiveGasPrice
to tx receipt. - (evm) tharsis#808 increase nonce in ante handler for contract creation transaction.
- (evm) tharsis#851 fix contract address used in EVM, this issue is caused by tharsis#808.
- (evm) Reject invalid
MsgEthereumTx
wrapping tx - (evm) Fix
SelfDestruct
opcode by deleting account code and state. - (feemarket) tharsis#855 consistent
BaseFee
check logic. - (evm) tharsis#729 Refactor EVM StateDB implementation.
- (evm) tharsis#945 Bumb Go-ethereum version to
v1.10.16
Improvements
- (types) tharsis#884 Introduce a new
EthAccountI
interface for EVM-compatible account types. - (types) tharsis#849 Add
Type
function to distinguish EOAs from Contract accounts. - (evm) tharsis#826 Improve allocation of bytes of
tx.To
address. - (evm) tharsis#827 Speed up creation of event logs by using the slice insertion idiom with indices.
- (ante) tharsis#819 remove redundant ante handlers
- (app) tharsis#873 Validate code hash in GenesisAccount
- (evm) tharsis#901 Support multiple MsgEthereumTx in single tx.
- (config) tharsis#908 Add api.enable flag for Cosmos SDK Rest server
- (feemarket) tharsis#919 Initialize baseFee in default genesis state.
- (feemarket) tharsis#943 Store the base fee as a module param instead of using state storage.
Bug Fixes
- (evm) tharsis#884 Support multiple account types on the EVM
StateDB
. - (rpc) tharsis#831 Fix BaseFee value when height is specified.
- (evm) tharsis#838 Fix splitting of trace.Memory into 32 chunks.
- (rpc) tharsis#860 Fix
eth_getLogs
when specify blockHash without address/topics, and limit the response size. - (rpc) tharsis#865 Fix RPC Filter parameters being ignored
- (evm) tharsis#871 Set correct nonce in
EthCall
andEstimateGas
grpc query. - (rpc) tharsis#878 Workaround to make GetBlock RPC api report correct block gas used.
- (rpc) tharsis#900 newPendingTransactions filter return ethereum tx hash.
- (rpc) tharsis#933 Fix newPendingTransactions subscription deadlock when a Websocket client exits without unsubscribing and the node errors.
- (evm) tharsis#932 Fix base fee check logic in state transition.
[v0.9.0] - 2021-12-01
State Machine Breaking
- (evm) tharsis#802 Clear access list for each transaction
Improvements
- (app) tharsis#794 Setup in-place store migrators.
- (ci) tharsis#784 Enable automatic backport of PRs.
- (rpc) tharsis#786 Improve error message of
SendTransaction
/SendRawTransaction
JSON-RPC APIs. - (rpc) tharsis#810 Optimize tx index lookup in web3 rpc
Bug Fixes
- (license) tharsis#800 Re-license project to LGPLv3 to comply with go-ethereum.
- (evm) tharsis#794 Register EVM gRPC
Msg
server. - (rpc) tharsis#781 Fix get block invalid transactions filter.
- (rpc) tharsis#782 Fix wrong block gas limit returned by JSON-RPC.
- (evm) tharsis#798 Fix the semantic of
ForEachStorage
callback's return value
[v0.8.1] - 2021-11-23
Bug Fixes
- (feemarket) tharsis#770 Enable fee market (EIP1559) by default.
- (rpc) tharsis#769 Fix default Ethereum signer for JSON-RPC.
[v0.8.0] - 2021-11-17
State Machine Breaking
- (evm, ante) tharsis#620 Add fee market field to EVM
Keeper
andAnteHandler
. - (all) tharsis#231 Bump go-ethereum version to
v1.10.9
- (ante) tharsis#703 Fix some fields in transaction are not authenticated by signature.
- (evm) tharsis#751 don't revert gas refund logic when transaction reverted
Features
- (rpc, evm) tharsis#673 Use tendermint events to store fee market basefee.
- (rpc) tharsis#624 Implement new JSON-RPC endpoints from latest geth version
- (evm) tharsis#662 Disable basefee for non london blocks
- (cmd) tharsis#712 add tx cli to build evm transaction
- (rpc) tharsis#733 add JSON_RPC endpoint
personal_unpair
- (rpc) tharsis#734 add JSON_RPC endpoint
eth_feeHistory
- (rpc) tharsis#740 add JSON_RPC endpoint
personal_initializeWallet
- (rpc) tharsis#743 add JSON_RPC endpoint
debug_traceBlockByHash
- (rpc) tharsis#748 add JSON_RPC endpoint
personal_listWallets
- (rpc) tharsis#754 add JSON_RPC endpoint
debug_intermediateRoots
Bug Fixes
- (evm) tharsis#746 Set EVM debugging based on tracer configuration.
- (app,cli) tharsis#725 Fix cli-config for
keys
command. - (rpc) tharsis#727 Decode raw transaction using RLP.
- (rpc) tharsis#661 Fix OOM bug when creating too many filters using JSON-RPC.
- (evm) tharsis#660 Fix
nil
pointer panic inApplyNativeMessage
. - (evm, test) tharsis#649 Test DynamicFeeTx.
- (evm) tharsis#702 Fix panic in web3 RPC handlers
- (rpc) tharsis#720 Fix
debug_traceTransaction
failure - (rpc) tharsis#741 Fix
eth_getBlockByNumberAndHash
return with non eth txs - (rpc) tharsis#743 Fix debug JSON RPC handler crash on non-existing block
Improvements
- (tests) tharsis#704 Introduce E2E testing framework for clients
- (deps) tharsis#737 Bump ibc-go to
v2.0.0
- (rpc) tharsis#671 Don't pass base fee externally for
EthCall
/EthEstimateGas
apis. - (evm) tharsis#674 Refactor
ApplyMessage
, removeApplyNativeMessage
. - (rpc) tharsis#714 remove
MsgEthereumTx
support inTxConfig
[v0.7.2] - 2021-10-24
Improvements
- (deps) tharsis#692 Bump Cosmos SDK version to
v0.44.3
. - (rpc) tharsis#679 Fix file close handle.
- (deps) tharsis#668 Bump Tendermint version to
v0.34.14
.
Bug Fixes
- (rpc) tharsis#667 Fix
ExpandHome
restrictions bypass
[v0.7.1] - 2021-10-08
Bug Fixes
- (evm) tharsis#650 Fix panic when flattening the cache context in case transaction is reverted.
- (rpc, test) tharsis#608 Fix rpc test.
[v0.7.0] - 2021-10-07
API Breaking
- (rpc) tharsis#400 Restructure JSON-RPC directory and rename server config
Improvements
- (deps) tharsis#621 Bump IBC-go to
v1.2.1
- (evm) tharsis#613 Refactor
traceTx
- (deps) tharsis#610 Bump Cosmos SDK to v0.44.1.
Bug Fixes
- (rpc) tharsis#642 Fix
eth_getLogs
when string is specified in filter's from or to fields - (evm) tharsis#616 Fix halt on deeply nested stack of cache context. Stack is now flattened before iterating over the tx logs.
- (rpc, evm) tharsis#614 Use JSON for (un)marshaling tx
Log
s from events. - (rpc) tharsis#611 Fix panic on JSON-RPC when querying for an invalid block height.
- (cmd) tharsis#483 Use config values on genesis accounts.
[v0.6.0] - 2021-09-29
State Machine Breaking
- (app) tharsis#476 Update Bech32 HRP to
ethm
. - (evm) tharsis#556 Remove tx logs and block bloom from chain state
- (evm) tharsis#590 Contract storage key is not hashed anymore
API Breaking
- (evm) tharsis#469 Deprecate
YoloV3Block
andEWASMBlock
fromChainConfig
Features
- (evm) tharsis#469 Support EIP-1559
- (evm) tharsis#417 Add
EvmHooks
for tx post-processing - (rpc) tharsis#506 Support for
debug_traceTransaction
RPC endpoint - (rpc) tharsis#555 Support for
debug_traceBlockByNumber
RPC endpoint
Bug Fixes
- (rpc, server) tharsis#600 Add TLS configuration for websocket API
- (rpc) tharsis#598 Check truncation when creating a
BlockNumber
frombig.Int
- (evm) tharsis#597 Check for
uint64
->int64
block height overflow onGetHashFn
- (evm) tharsis#579 Update
DeriveChainID
function to handlev
signature values< 35
. - (encoding) tharsis#478 Register
Evidence
to amino codec. - (rpc) tharsis#478 Getting the node configuration when calling the
miner
rpc methods. - (cli) tharsis#561
Export
andStart
commands now use the same home directory.
Improvements
- (evm) tharsis#461 Increase performance of
StateDB
transaction log storage (r/w). - (evm) tharsis#566 Introduce
stateErr
store inStateDB
to avoid meaningless operations if any error happened before - (rpc, evm) tharsis#587 Apply bloom filter when query ethlogs with range of blocks
- (evm) tharsis#586 Benchmark evm keeper
[v0.5.0] - 2021-08-20
State Machine Breaking
- (app, rpc) tharsis#447 Chain ID format has been changed from
<identifier>-<epoch>
to<identifier>_<EIP155_number>-<epoch>
in order to clearly distinguish permanent vs impermanent components. - (app, evm) tharsis#434 EVM
Keeper
struct andNewEVM
function now have a newtrace
field to define the Tracer type used to collect execution traces from the EVM transaction execution. - (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) tharsis#448 Bump version for all Ethermint messages to
v1
- (server) tharsis#434
evm-rpc
flags and app config have been renamed tojson-rpc
. - (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
- (client) tharsis#450 Add EIP55 hex address support on
debug addr
command. - (server) tharsis#343 Define a wrap tendermint logger
Handler
go-ethereum'sroot
logger. - (rpc) tharsis#457 Configure RPC gas cap through app config.
- (evm) tharsis#434 Support different
Tracer
types for the EVM. - (deps) tharsis#427 Bump ibc-go to
v1.0.0
- (gRPC) tharsis#239 Query
ChainConfig
via gRPC. - (rpc) tharsis#181 Use evm denomination for params on tx fee.
- (deps) tharsis#423 Bump Cosmos SDK and Tendermint versions to v0.43.0 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
. - (eth) tharsis#460 Add support for EIP-1898.
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