laconicd/CHANGELOG.md
crypto-facs c7554e96aa
rpc, evm: debug_traceTransaction endpoint (#506)
* fix typo

* Added tracers package to debug API

* Add GetTransactionByHash function to backend package

* first version

* traceTransaction first version

* clean PR

* revert debug changes

* Update proto/ethermint/evm/v1/query.proto

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

* remove unnecesary panic

* remove internal debug api

* trace transaction javascript tracer

* add support for custom logConfig

* added comment

* traceTransactions tests

* fix linter

* remove unused

* add comments to traceConfig

* update dependencies

* updated endpoints md

* Apply suggestions from code review

* Update x/evm/keeper/grpc_query.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

* Update x/evm/keeper/grpc_query.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-09-04 20:33:06 +00:00

23 KiB

Changelog

Unreleased

State Machine Breaking

API Breaking

  • (evm) tharsis#469 Deprecate YoloV3Block and EWASMBlock from ChainConfig

Features

Bug Fixes

  • (encoding) tharsis#478 Register Evidence to amino codec.
  • (rpc) tharsis#478 Getting the node configuration when calling the miner rpc methods.

Improvements

  • (evm) tharsis#461 Increase performance of StateDB transaction log storage (r/w).

[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 and NewEVM function now have a new trace 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 and stateObjects.
  • (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 use TransientStore 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 to json-rpc.
  • (proto, evm) tharsis#207 Replace big.Int in favor of sdk.Int for TxData 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 the MsgEthereumTxResponse and the response now contains the ethereum-formatted Hash in hex format.
  • (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 api GetTransaction* 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's root 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 and EndBlock.
  • (rpc) #124 Implement txpool_content, txpool_inspect and txpool_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 and miner_setGasPrice are working as intended. All the other calls are not applicable and return unsupported.
  • (eth) tharsis#460 Add support for EIP-1898.

Bug Fixes

  • (keys) tharsis#346 Fix keys add command with --ledger flag for the secp256k1 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 and EmptyRootHash for empty ethereum Header 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's GenesisState.

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 module Account.
  • (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 and Create 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 and crypto.PrivKeySecp256k1 are now ethsecp256k1.PubKey and ethsecp256k1.PrivKey, respectively
    • Moved SDK SigningAlgo implementation for Ethermint's Secp256k1 key to crypto/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 the PublicEthereumAPI and the PublicFilterAPI.
    • rpc/namespaces/personal: personal namespace. Exposes the PrivateAccountAPI.
    • rpc/namespaces/net: net namespace. Exposes the PublicNetAPI.
    • rpc/namespaces/web3: web3 namespace. Exposes the PublicWeb3API.
  • (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 prepend m/ to the path. This now uses the DefaultBaseDerivationPath 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 EVM chainID.

API Breaking

  • (types) #503 The types.DenomDefault constant for "aphoton" has been renamed to types.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 in string format to clients.
  • (types) #494 Update EthAccount public key JSON type to string.
  • (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 Ethereum ChainConfig 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 for MsgEthereumTx.
  • (types) #507 Fix hardcoded aphoton on EthAccount balance getter and setter.
  • (types) #501 Fix bech32 encoding error by using the compressed ethereum secp256k1 public key.
  • (x/evm) #496 Fix bugs on journal.revert and CommitStateDB.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) Rename EthereumTxMsg --> MsgEthereumTx and EmintMsg --> MsgEthermint for consistency with SDK standards
    • Updated integration and unit tests to use EthermintApp as testing suite
    • Use expected Keeper interface for AccountKeeper
    • Replaced count type in keeper with int
    • Add SDK events for transactions
  • #236 Changes from upgrade:
    • (app/ante) Moved AnteHandler implementation to app/ante
    • (keys) Marked ExportEthKeyCommand as UNSAFE
    • (x/evm) Moved BeginBlock and EndBlock to x/evm/abci.go
  • (x/evm) #255 Add missing GenesisState fields and support ExportGenesis functionality.
  • #272 Add Logger for evm module.
  • #317 GenesisAccount validation.
  • (x/evm) #319 Various evm improvements:
    • Add transaction []*ethtypes.Logs to evm's GenesisState to persist logs after an upgrade.
    • Remove evm CodeKey and BlockKeyin favor of a prefix Store.
    • Set BlockBloom during EndBlock instead of BeginBlock.
    • Commit state object and Finalize storage after InitGenesis setup.
  • (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's EventSystem which subscribes to Tendermint events upon Filter 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 via GetBlockByNumber rpc call and adds it to its internal list of blocks
    • Update uninstallFilter and getFilterChanges accordingly
    • uninstallFilter stops the polling goroutine
    • getFilterChanges returns the filter's internal list of block hashes and resets it
  • (rpc) #54, #55 Implement eth_getFilterLogs and eth_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 and eth_getFilterChanges for log filters use the same underlying method as eth_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 Fix SetBlockHash that was setting the incorrect height during BeginBlock.
  • (x/evm) #176 Updated Web3 transaction hash from using RLP hash. Now all transaction hashes exposed are amino hashes:
    • Removes Hash() (RLP) function from MsgEthereumTx to avoid confusion or misuse in future.