Commit Graph
100 Commits
Author SHA1 Message Date
yihuangandFederico Kunze Küllmer 70d52948da fix: eth_newPendingTransactionFilter doesn't return ethereum tx hash (#1012)
* Problem: eth_newPendingTransactionFilter don't return correct tx hash

Closes: #1011
Solution:
- use eth tx hash rather than tendermint one

* changelog

* remove copied TODO comment and ignore err result of Notify

* add e2e test

* fix ws client in e2e test

* fix test

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-03-24 07:56:59 +00:00
yihuang bde62e2d31 cleanup an unused const (#1009) 2022-03-22 10:24:26 +01:00
yihuang 8bcdb2c0e5 make MaxTxGasWanted configurable (#1004) 2022-03-21 10:01:21 +01:00
yihuang 93a57bc330 feemarket: migration (#1002)
* increase feemarket's consensus version and add migration handler

Closes: #1001

* unit test

* fix linter
2022-03-21 08:27:22 +01:00
yihuangandFederico Kunze Küllmer edf456985b fix: set an upper bound to gasWanted to prevent DoS attack (#991)
Closes: #989

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-03-16 11:01:19 +00:00
yihuangandFederico Kunze Küllmer 49afc0f90d fix: server should always use local rpc client (#988)
Closes: #987
Solution:
- use local rpc clint if json-rpc is enabled.

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-03-15 11:28:14 +01:00
yihuang dbe9f705cd rpc: add configurable timeouts to http server (#979)
* Add configurable timeouts to http server

Closes: #963

* add flags

* changelog

* fix toml
2022-03-09 08:31:51 +01:00
40d5eff9fa fix: Metamask keeps failing sending transactions (#968)
* Problem: Metamask keeps failing sending transactions

Closes: #967
Solution:
- add 1/8 buffer on top of base fee for default gas price

* changelog

* fix typo

Co-authored-by: Freddy Caceres <freddy.caceres@crypto.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-03-03 20:50:40 +00:00
yihuangandFederico Kunze Küllmer 0d69a69625 fix: websocket client duplicated messages (#955)
* 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>
2022-02-25 19:08:30 +00:00
yihuang dcd2891b73 imp: redirect go-ethereum's logs to cosmos logger (#948)
* redirect go-ethereum's logs to cosmos logger

Closes: #862

Map go-ethereum's log levels to cosmos ones:
trace -> debug
debug -> debug
info -> info
warn -> info
error -> error
crit -> error

* changelog

* Apply suggestions from code review

* Apply suggestions from code review
2022-02-19 01:49:34 +01:00
yihuangandFederico Kunze Küllmer f7009b0e94 fix: base fee check logic in state transition (#932)
* fix base fee check logic in state transition

- should check london hardfork first, otherwise it panic if feemarket not registered.

* fix lint

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-02-15 12:01:30 +01:00
yihuang b51907a949 remove unused parameters from evm spec (#934) 2022-02-11 11:41:20 +01:00
yihuangandFederico Kunze Küllmer 724a06632b fix: minimal-gas-prices and baseFeePerGas conflicts (#916)
* Problem: minimal-gas-prices and baseFeePerGas conflicts

Closes: #915

Solution:
- Don't check min-gas-price for evm tx if london hardfork and feemarket enabled.

comments and cleanup

changelog

* fix zero fee coins

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-01-26 10:44:41 +00:00
yihuang e39a74998e fix: default base fee state in genesis (#919)
* fix defualt base fee state in genesis

Closes: #918
Solution:
- initialise the default base fee value in genesis

* changelog
2022-01-26 11:36:07 +01:00
yihuang 317f5b43b5 fix insufficient fee error message (#911) 2022-01-17 07:12:13 +01:00
yihuangandFederico Kunze Küllmer 351e6d6eb3 rpc: make trace transaction api work with batch tx (#907)
* make trace transaction api work with batch tx

Closes: #906

fix linter

* review suggestion

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-01-16 15:36:19 +00:00
yihuangandFederico Kunze Küllmer 7d8664043e impr: support batch eth txs (#901)
* support batch eth tx

Closes: 896

Allow multiple MsgEthereumTx in single tx

* fix transaction receipt api

* fix tx receipt api and accumulate tx gas used

* fix lint

* fix test

* fix rpc test

* cleanup

* fix cumulativeGasUsed and gasUsed

* fix lint

* Update app/ante/eth.go

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

* Update app/ante/eth.go

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

* Update rpc/ethereum/backend/utils.go

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

* pr suggestions

* typo

* fix lint

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-01-14 10:37:33 +01:00
yihuang aeb6aeb715 Problem: newPendingTransactions filter don't return ethereum tx hash (#900) 2022-01-13 13:12:57 +00:00
yihuang 5e15c64d02 fix: make gas estimation test reproducible (#890)
Closes: #536

Solution: Use a fixed test account.

The source of non-deterministic is tx's intrinsic gas is different according to different number of zeros in input data,
so to make sure the gas number is reproducible, and the randomly generated test address is included in that.
2022-01-07 14:04:16 +01:00
yihuang e6c9b7723b evm: improve test coverage of statedb package (#888)
Closes: #876
- coverage: 99.3% of statements
2022-01-06 18:10:51 +01:00
f5b61e914e docs: update evm spec to cover statedb refactoring changes (#885)
* update evm spec to cover statedb refactoring changes

Closes: #879

* Update x/evm/spec/02_state.md

Co-authored-by: yihuang <huang@crypto.com>

* Update x/evm/spec/02_state.md

Co-authored-by: yihuang <huang@crypto.com>

Co-authored-by: Daniel Burckhardt <daniel.m.burckhardt@gmail.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-01-06 10:58:10 +01:00
yihuangandFederico Kunze Küllmer ade84319e6 evm: refactor statedb implementation (#729)
* initial statedb module

unit tests

unit tests

keeper implementation

extract TxConfig

remove unused code

* keeper integration

* fix unit tests

* Apply suggestions from code review

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

* fixup! initial statedb module

* changelog

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-01-05 08:28:27 +01:00
yihuang e9f1ab646c fix: GetBlock rpc api reports wrong gasUsed (#878)
* GetBlock rpc api report wrong gasUsed

Closes: #877

Solution:
- workaround at rpc side, ignore the gasUsed in such cases.

* Update rpc/ethereum/backend/backend.go

* changelog
2022-01-05 08:26:59 +01:00
yihuang 8e4ff5aae2 evm: validate code hash in GenesisAccount (#873)
* Validate code hash in GenesisAccount

Closes: #872

* changelog
2022-01-04 15:21:32 +01:00
yihuangandFederico Kunze Küllmer 7c53e32c78 fix: several issues with the passing receipt to hooks change (#869)
Closes: #868

Solution:
- contract address in receipt should only be the newly created contract
- fix the order of operations in state transition
- compute contract address in `ApplyTransaction` on the fly

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-01-04 12:02:41 +01:00
yihuang 7ec5e5fdef fix: set correct nonce in EthCall/EstimateGas (#871)
* fix: set correct nonce in EthCall/EstimateGas

Closes: #870

* Update CHANGELOG.md

* unit test
2022-01-04 11:55:30 +01:00
yihuangandFederico Kunze Küllmer 9f4828e5bb fix: wrong gas limit is wrong when adjust base fee (#832)
Closes: #823

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2022-01-03 17:07:26 +01:00
yihuangandFederico Kunze Küllmer ced5280571 fix: OOM when eth_getLogs response too large (#860)
* fix: OOM when eth_getLogs response too large

Closes: #858

- add limit to number of logs of filter response
- make block limit and log limit configurable

* return error if exceeds log limit

* Apply suggestions from code review

* parse from config

* read cli flags

* add to config template

* fix bloomFilter

* changelog

* add validation

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-12-29 22:47:25 +01:00
yihuangandFederico Kunze Küllmer eb17366dcc fix: consistent BaseFee check logic (#855)
Closes: #755

```
if not london_hardfork {
    # reject DynamicFeeTx
    # no `baseFeePerGas` field in block response
    # baseFee = nil
} else {
    # allow DynamicFeeTx
    # add `baseFeePerGas` field in block response
    if feemarketParams.NoBaseFee or height < feemarketParams.EnableHeight {
        # baseFee = 0
    } else {
        # init baseFee to initBaseFee and adjust in later blocks
    }
}
```

Update x/evm/keeper/keeper.go

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

add unit tests

Update app/ante/utils_test.go

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

changelog
2021-12-28 07:59:28 +00:00
yihuang d822fee5c1 fix: contract address in contract creation receipt (#851)
* Problem: contract address in contract creation receipt is wrong

Closes: #850
- decrease nonce before evm.create
- add unit tests and rpc tests

* add changelog
2021-12-28 08:55:40 +01:00
yihuangandFederico Kunze Küllmer 8bc3cc471b fix: web3 client doesn't expect a nil baseFeePerGas (#854)
Closes: #853

Solution:
- only set baseFeePerGas when base fee is not nil.

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-12-23 16:12:05 +00:00
e437c4331d fix: increase nonce in ante handler for contract creation tx (#809)
Closes: #808
Solution:
- move nonce increment to ante handler
- revert nonce increment in apply message

build(deps): bump github.com/spf13/viper from 1.9.0 to 1.10.0 (#833)

Bumps [github.com/spf13/viper](https://github.com/spf13/viper) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/spf13/viper/releases)
- [Commits](https://github.com/spf13/viper/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: github.com/spf13/viper
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

fix: remove unused code (#834)

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

rm

rm pkg

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-12-16 22:35:28 +00:00
yihuangandFederico Kunze Küllmer 514785bd89 rpc: optimize tx index lookup (#810)
Closes: #760

Solution:
- emit tx index to cosmos events
- rpc side try to use the events, but fallback to heavier approach when fails.

Update rpc/ethereum/namespaces/eth/api.go

changelog

fix lint

fix TxIndexFromEvents

fix

Update rpc/ethereum/backend/backend.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-12-16 22:30:22 +00:00
yihuang e752d80e9f feekeeper: remove redundant code (#815) 2021-12-16 23:24:53 +01:00
yihuang 845bef6dab fix broken tracer unit test (#847) 2021-12-16 01:21:06 +00:00
yihuang 9828964f1f fix: remove redundant ante handler (#819)
* remove redundant ante handler

They are already checked in EthValidateBasicDecorator

* changelog
2021-12-15 02:53:03 +00:00
ccc6f5b53d fix: use EffectiveGasPrice in ante handler for dynamic fee tx (#817)
* Use effectiveGasPrice in ante handler for dynamic fee tx

Closes: #814

Solution:
- use effectiveGasPrice when check minimal-gas-prices, and deduct fee in ante handler
- implement an EthMempoolFeeDecorator

* add effectiveGasPrice to tx receipt

* changelog

* fix unit test

* fix comments

* add comments

* Apply suggestions from code review

Co-authored-by: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com>

* review suggestions

Co-authored-by: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-12-15 02:17:03 +00:00
yihuangandFederico Kunze Küllmer 50e463725e feemarket: update base fee in BeginBlock (#822)
* Update base fee in begin blocker

Closes: #820

* changelog

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-12-15 02:10:52 +00:00
yihuang 924232f02e fix: empty log topics shouldn't be encoded as nil (#840)
* Problem: empty topics shouldn't be encoded as nil

Closes: #839

Solution:
- encode it as empty array

* fix unit tests

* changelog
2021-12-14 15:52:22 +01:00
yihuangandFederico Kunze Küllmer 3b0fa63832 evm: clear access list for each transaction (#802)
* Clear access list for each transaction

Closes: #801

* changelog

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-11-30 12:36:10 +01:00
yihuangandFederico Kunze Küllmer e6d0eff957 evm: ForEachStorage semantic not compatible with go-ethereum (#798)
* Problem: ForEachStorage sematic not compatible with go-ethereum

Solution:
- reversed the semantic of return value of the callback function.

* changelog

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-11-30 10:34:33 +00:00
yihuang ee72632582 ante: remove unused AccessListDecorator (#797) 2021-11-30 09:06:34 +01:00
yihuangandFederico Kunze Küllmer c8d4d3f9a3 fix: improve error message in SendTransaction json-rpc api (#786)
* fix error message in `SendTransaction` json-rpc api

Closes: #785

Solution:
- Remove `stacktrace.Propagate`s, and recover error message in jsonrpc server

changelog

fix error messages

* Update x/evm/keeper/msg_server.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-11-26 15:19:28 +01:00
yihuang 32eaec8d99 fix: web3 rpc api returns wrong block gas limit (#782)
* Problem: web3 rpc api returns wrong block gas limit

Closes: #777

Solution:
- pass in specific block height to the query

* Apply suggestions from code review

* changelog
2021-11-25 11:30:03 +00:00
yihuangandFederico Kunze Küllmer b7e8dd8216 fix: don't revert gas refund logic when transaction reverted (#751)
* fix gas consumption when reverted

Apply suggestions from code review

changelog

* comments

* Update x/evm/keeper/state_transition.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-11-16 14:49:59 +00:00
2a205e561a rpc: debug_traceTransaction fails for succesful tx (#720)
* Problem: traceTransaction fails for succesful tx

Solution:
- Change the context to the begining of the block, rather than the end
  of it, while override block context to correct one

pass predecessors

pass current block information to grpc query

* changelog

* fix build

* fix lint

* refactor traceBlock

* update protobuf

* fix Predecessors

* traceBlock refactor

* refactor traceBlock response

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

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

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

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

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

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

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

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

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

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

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

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

* check tx index is not out of bound

* fix build

* Update rpc/ethereum/namespaces/debug/api.go

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

* Update rpc/ethereum/namespaces/debug/api.go

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

* Update rpc/ethereum/namespaces/debug/api.go

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

* Update rpc/ethereum/namespaces/debug/api.go

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

* remove prealloc

* add traceBlock test

* Update x/evm/keeper/grpc_query.go

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

* use bytes2Hex

* fix error message

* add comment

* Apply suggestions from code review

Co-authored-by: Freddy Caceres <freddy.caceres@crypto.com>
Co-authored-by: crypto-facs <84574577+crypto-facs@users.noreply.github.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-11-09 18:38:22 +00:00
yihuangandFederico Kunze Küllmer 7c7f3f02bb tests: add message call benchmark (#717)
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-11-08 13:04:49 +00:00
yihuangandFederico Kunze Küllmer 10c49f7748 feat: add raw ethereum tx CLI (#712)
Closes #709

fix index

Apply suggestions from code review

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

fix lint

transaction decoding unit test

test BuildTx

fix lint

changelog
2021-11-02 12:20:19 +01:00
yihuang d1446fc1f4 encoding: rm MsgEthereumTx custom support in TxConfig (#714)
* remove MsgEthereumTx support in TxConfig

Closes: #711

* changelog
2021-11-02 11:24:24 +01:00
yihuang bc1d81c5e8 fix: Web3 RPC handlers panic (#702)
* Problem: Some Web3 RPC Handlers could panic

Closes: #701

Solution:
- return error rather than panic when decoding invalid tx

* add validation rules

* changelog
2021-10-26 13:13:27 +02:00
yihuang 1fe07edbf9 evm: refactor dup state transition code (#674)
* Problem: state transition code is duplicated

Closes: #672

Solution:
- move gas refund out from ApplyMessage
- move check into ApplyMessage
- move evm construction into ApplyMessage
- ensure context stack is clean after ApplyMessage return

fix unit tests

undo rename

add underflow check

* improve performance

- don't duplicate params loading
- passing EVMConfig around as pointer
2021-10-22 19:21:03 +02:00
yihuang ac75a9a4a4 refactor: eth_call and eth_estimateGas don't need to pass base fee as field (#671)
Solution:
- load fee directly from state

changelog
2021-10-21 17:29:19 +02:00
yihuang 1000461a55 rpc: transaction receipt test (#678)
* Problem: No test on the transaction receipt api

Closes: #582

- add receipt rpc test for erc20 transfer logs

* lower gas fee

* build with go 1.17 in CI

* use go 1.17 in test-solidity

* fix merge
2021-10-20 21:00:17 +02:00
yihuang 2e067590a2 fix: nil pointer panic in ApplyNativeMessage (#660)
* Problem: nil pointer panic in ApplyNativeMessage

Solution:
- pass NoOpTracer

* use NewTracer

* changelog
2021-10-13 10:57:12 +02:00
yihuangandFederico Kunze Küllmer 78c8ceb244 evm: add benchmark for deep context stack (#627)
* Problem: deep context stack efficienty is not benchmarked

Closes: #626

Solution:
- add a benchmark to demonstrate an extremely inefficiency in deep
  context stack

* Update x/evm/keeper/benchmark_test.go

* prefix storage is irrelevant

* add comment to state_transition.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-10-06 11:28:13 +00:00
202bc5f1cd evm: fix iterator on deeply nested cache contexts (#617)
* Problem: iterator on deeply nested cache contexts is extremely slow

Closes: #616

Solution:
- flatten cache contexts before doing `GetTxLogsTransient`

* Update x/evm/keeper/context_stack.go

* changelog

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Federico Kunze <federico.kunze94@gmail.com>
2021-10-05 16:08:55 +00:00
cda968bddd evm, rpc: fix tx log attribute value is not parsable by some client (#615)
* Problem: tx log attribute value not parsable by some client

Closes: #614

Solution:
- encode the value to json string rather than bytes

Apply suggestions from code review

* rm cdc and changelog

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Federico Kunze <federico.kunze94@gmail.com>
2021-10-05 10:26:31 +00:00
yihuang d6a64a275a evm: fix import/export genesis for contract storage (#590)
* Problem: import/export roundtrip test fail contract storage

Closes: #589

- don't hash the key again in InitGenesis

* changelog

* try to fix estimate-gas undeterministics Closes #536
2021-09-27 12:26:45 +02:00
yihuangandFederico Kunze Küllmer e65582df71 deps: fix iavl node crash in concurrent query (#583)
Closes: #581

Solution:
- replace iavl dependency to v0.17.1

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-09-22 09:51:29 +00:00
yihuang 01b789c3e9 rpc: tx receipt don't contain events (#580)
* tx receipt don't contains events

- Should convert tx hash when query transaction logs

* tx index should start from 0
2021-09-22 06:01:35 -03:00
b59d9a23ea evm: add ApplyNativeMessage (#557)
* add ApplyNativeMessage

Closes #533

* fix lint

* Update x/evm/types/tracer.go

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

* Update x/evm/types/tracer.go

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

* no-op tracer

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Federico Kunze <federico.kunze94@gmail.com>
2021-09-17 15:23:51 +00:00
yihuangandFederico Kunze Küllmer 116de54617 evm: remove tx logs and block bloom from chain state (#556)
Closes #452

fix unit tests

changelog and fix lint

fix unit test

Update ethereum/rpc/backend/backend.go

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

Update ethereum/rpc/backend/utils.go

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

changelog

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-09-15 09:45:03 +00:00
yihuangandFederico Kunze Küllmer 8bcab7be27 docs: state revert logic (#421)
Closes #356

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-09-13 13:01:44 +00:00
yihuangandFederico Kunze Küllmer 089afe41a8 evm: implement ADR-002 EVM Hooks (#417)
* Allow evm to call native modules through logs

Closes #416

comment

add txHash parameter

review suggestions

add hooks test

* Update x/evm/keeper/hooks.go

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

* Update x/evm/keeper/hooks_test.go

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

* Update x/evm/keeper/keeper.go

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

* Update x/evm/keeper/keeper.go

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

* Update x/evm/keeper/keeper.go

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

* use table tests

* update adr comment

* update adr

* changelog

* Update CHANGELOG.md

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-09-02 12:36:33 +00:00
yihuang 7f70429ac2 docs: ADR-002 EVM hooks (#429)
* Add adr-002 evm hooks proposal

* add bank send hook example

* fix typo

* add more details to the adr

* polishes

* add comments and missing sections

* explain the error translation

* update working, add consequences

* add reference to staking module hooks

* add ApplyTransaction snippet
2021-09-01 06:11:52 -04:00
yihuangandFederico Kunze Küllmer a5ab608336 evm: benchmark contract execution (#436)
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-08-30 03:14:58 +00:00
yihuangandFederico Kunze Küllmer d93205b711 fix: export chain state (#446)
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-08-17 12:06:08 +00:00
yihuangandFederico Kunze Küllmer 353455def9 evm: prepare access list in eth_call (#348)
Closes: #335

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-08-16 08:19:27 +00:00
yihuangandFederico Kunze Küllmer df13b398ec deps: use cosmos patched keyring (#441)
Closes #440

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-08-16 06:20:30 +00:00
yihuang 80edf65f85 build: upgrade panicwrap (#425)
Closes #311
2021-08-10 11:07:40 -04:00
yihuangandFederico Kunze Küllmer 010036457c app: call SetModuleVersionMap in InitChainer (#422)
keep the scaffolding up-to-date:
https://github.com/cosmos/cosmos-sdk/blob/release/v0.43.x/simapp/app.go#L433

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-08-10 11:23:22 +00:00
yihuangandFederico Kunze Küllmer 9227e78c79 evm: use stack of contexts to implement snapshot revert (#399)
* 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>
2021-08-10 07:22:46 +00:00
yihuang 73c2f8e529 evm: re-emit the cosmos events from cache context (#415)
Closes: #414
2021-08-09 09:38:43 +00:00
yihuangandFederico Kunze Küllmer 9bf3659718 evm: use clean context for GetCommittedState (#383)
* keep the original context for GetCommittedState api

* fix method mutation

* keep estimateGas consistant

* added test after the original context is recovered

* add integration test for the gas consumption of sstore

* test the committed case

* move methods to keeper module

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-08-04 07:49:02 +00:00
yihuang 54581269b8 evm: change log tx index to index in block (#354)
Closes #334
2021-07-26 04:40:59 -04:00
yihuangandFederico Kunze Küllmer 2828fa1e62 evm: fix keep balance when resetting an account (#353)
* keep balance when override account

* Update CHANGELOG.md

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-07-26 08:15:59 +00:00
yihuangandFederico Kunze Küllmer f6dc80d949 evm: estimate gas unit tests (#324)
* add some unit tests for estimateGas

Also add some test environment setup, Closes #323

test estimateGas of erc20 token transfer

fix failed test case

the trick is to keep a clean transient store, by doing a commit

put artifacts to external file

* fix test failure

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-07-23 14:24:36 +00:00
yihuangandFederico Kunze Küllmer e61594e10a server: sync start command with cosmos-sdk v0.43-rc2 (#341)
* sync start command with cosmos-sdk 0.43

Closes #340

- add grpc web and rosetta server
- add tx/tm services
- add standalone mode
- update cosmos-sdk to 0.43.0-rc2, which fixed a bug in service startup
- add EnableUnsafeCORS option to evm rpc server

* set keyring options in root cmd and use viper prefix

* fix linter and pr suggestions

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-07-23 12:31:59 +00:00
yihuangandFederico Kunze Küllmer 3f136bf5d6 rpc: return ABCI state's latest block number (#331)
* return abci state's latest block number in rpc

Closes #318

* Update ethereum/rpc/backend/backend.go

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

* add comments

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-07-22 11:06:44 -04:00
yihuangandFederico Kunze Küllmer d54663c0b8 evm: fix infinite context usage on EndBlock (#329)
The previous code is not incorrect since the method `SetBlockBloom` use the `ctx` passed in rather than the `k.ctx`.
It's confusing that sometimes methods use ctx in parameter, sometimes use `k.ctx`, but that's another issue.

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-07-21 11:57:30 +00:00
yihuangandFederico Kunze Küllmer 14b38af8bc rpc, evm: use binary search to estimate gas (#272)
* do binary search to estimate gas

Closes #268

- Also refactor ApplyMessage to be more reuseable

move binary search to rpc api side to have a clean context each try

remove EstimateGas grpc api

* extract BinSearch function and add unit test

* do estimateGas in grpc query

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-07-19 15:19:23 +00:00
yihuangandFederico Kunze Küllmer c8ddb503c1 ci: add goreleaser workflow (#295)
Closes #305
patch panicwrap to fix build issue

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-07-16 09:30:34 +00:00
yihuangandFederico Kunze Küllmer 297a35dbdd evm: treat all vm errors the same as reverted (#276)
Closes: #274

evm: fix `ExtraEIP` activation (#288)

Closes: #287

Update x/evm/types/utils.go

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

Add `Failed` utility function and changelog
2021-07-15 02:01:05 -04:00
yihuang 84febdddae evm: fix ExtraEIP activation (#288)
Closes: #287
2021-07-14 11:10:31 +00:00
yihuangandFederico Kunze Küllmer 1a48e09e78 rpc: implement eth_getPendingTransactions (#259)
* Implement `eth_getPendingTransactions`

Closes #244

* refactor repeatitive code

* Update ethereum/rpc/namespaces/eth/api.go

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

* Update ethereum/rpc/namespaces/eth/api.go

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

* Update ethereum/rpc/namespaces/eth/api.go

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

* Update ethereum/rpc/namespaces/eth/api.go

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

* test UnwrapEthereumMsg

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-07-12 17:42:53 +00:00
yihuangandFederico Kunze Küllmer 8f73d556c6 rpc: fix eth_getTransactionByHash tx in mempool (#261)
Closes #260

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-07-12 10:34:47 +00:00
yihuangandFederico Kunze Küllmer 0020e4f2cd grpc: add eth_call query command (#236)
* add eth_call query command

Implement EthCall grpc query api

Closes #229

add eth_call query command

fix codec issue

use query client

use grpc status error and codes

validate address length in grpc handler

* Update x/evm/types/callargs.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
2021-07-09 09:04:46 +00:00
yihuang 7951852bb0 rpc: implement pending nonce with UnconfirmedTx (#243)
* implement pending nonce with UnconfirmedTx

Closes #242

fix lint

* return early on error
2021-07-09 04:34:49 -04:00
yihuang d0b890b794 rpc: support query historical state for GetTransactionCount (#241)
Closes #240
2021-07-09 02:19:20 -04:00
yihuangandFederico Kunze Küllmer e6f1874cfc rpc: extract sender address from msg signature (#217)
* extract real from address in rpc tx query api

Closes: #210

* Update x/evm/types/msg.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-07-02 09:34:15 +00:00
yihuang 6e983a9da1 rpc: fix balance overflow (#219)
Closes #218
2021-07-02 05:29:47 -04:00
yihuangandFederico Kunze Küllmer 0113b4d2c0 fix: return ethereum-formatted tx hash to client (#202)
* return eth tx hash to client

Closes #67

Update ethereum/rpc/namespaces/eth/api.go

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

Update ethereum/rpc/namespaces/eth/api.go

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

change GetTxByEthHash to method

add entry to changelog

* use eth tx hash internally
2021-06-30 05:35:11 -04:00
yihuang 036ffb7a39 evm: update block bloom (#193)
Closes #139
2021-06-30 03:37:03 -04:00
yihuangandFederico Kunze 336703cfc9 evm: fix AddLog unmarshaling tx (#192)
* fix `AddLog` unmarshaling tx

Closes #187

* use cosmos tx in AddLog unit test

* Apply suggestions from code review

Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
2021-06-29 06:54:29 -04:00
yihuang fd19394fba ante: don't skip EthSigVerificationDecorator for RecheckTx (#186)
Because it set the `From` field which is relied by other handlers

Closes #185
2021-06-25 09:28:28 -04:00
yihuang 95bd7563d4 rpc: extract msg from cosmos tx (#163)
Closes #162
2021-06-22 03:49:25 -04:00
yihuangandFederico Kunze 62fe3d7e80 rpc: SendTransaction wrap MsgEthereumTx in cosmos tx (#161)
* `SendTransaction` wrap `MsgEthereumTx` in cosmos tx

Closes #160

* Update ethereum/rpc/eth_api.go

Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
2021-06-22 03:32:06 -04:00
yihuangandFederico Kunze 6d5a59646a rpc: SendTransaction returns error message for invalid tx on broadcast sync mode (#159)
* SendTransaction returns error message for invalid tx

- use sync broadcast
- treat error response to error return

Closes: #158

* Apply suggestions from code review

Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
2021-06-22 03:11:53 -04:00
yihuang 91ad6387bf ante: ignore no signature error for evm transactions (#143)
fixes #118

don't sign unit test tx

since that's the same case as real tx

comment EthValidateBasicDecorator
2021-06-21 06:44:37 -04:00
yihuang a3ee8a4622 rpc: fix default nonce (#152)
fixes #151
2021-06-21 04:02:05 -04:00