Laconic state machine
Go to file
Emmanuel T Odeke 8333765b27
x/evm/keeper: save 24B with Go in-condition variable idiom (#828)
* x/evm/keeper: save 24B with Go in-condition variable idiom

The prior code doubly invoked (*ethereum/go-ethereum/core/types.Transaction).To()
which is quite expensive, and firstly copies 20 bytes each time, then
that gets rounded up to the proper size class/pointer alignment so on
64-bit machines 20B -> 24B.

Isolating a benchmark for this code per issue #826 shows this saves
quite a bit of bytes and some nano seconds which all count up towards
the transactions per seconds being processed:

```shell
$ benchstat before.txt after.txt
name        old time/op    new time/op    delta
CopyAddr-8    38.4ns ± 3%    19.3ns ± 3%  -49.66%  (p=0.000 n=10+10)

name        old alloc/op   new alloc/op   delta
CopyAddr-8     48.0B ± 0%     24.0B ± 0%  -50.00%  (p=0.000 n=10+10)

name        old allocs/op  new allocs/op  delta
CopyAddr-8      2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.000 n=10+10)
```

Fixes #826

* changelog

* lint

* Revert stray changes that were used in testing

* rm log

Co-authored-by: Federico Kunze Küllmer <federico.kunze94@gmail.com>
2021-12-14 00:51:36 +01:00
.bencher ci: add bencher config (#652) 2021-10-08 12:07:03 +00:00
.github build(deps): bump actions/setup-node from 2.4.1 to 2.5.0 (#803) 2021-11-30 11:25:26 +01:00
app ante: remove unused AccessListDecorator (#797) 2021-11-30 09:06:34 +01:00
client fix: gosec issues (#779) 2021-11-25 15:12:57 +00:00
cmd feat: store migration setup (#794) 2021-11-29 16:46:20 +01:00
contrib/scripts ci: liveness test (#498) 2021-08-26 15:21:43 +00:00
crypto crypto: updates from reviews (#535) 2021-09-07 17:29:24 +00:00
docs rpc: debug_traceTransaction fails for succesful tx (#720) 2021-11-09 18:38:22 +00:00
encoding encoding: rm MsgEthereumTx custom support in TxConfig (#714) 2021-11-02 11:24:24 +01:00
networks/local [Snyk] Security upgrade golang from 1.16.7 to 1.16 (#670) 2021-10-14 07:39:48 +00:00
proto rpc: debug_traceTransaction fails for succesful tx (#720) 2021-11-09 18:38:22 +00:00
rpc Fix get block (#781) 2021-11-26 18:10:40 +00:00
scripts tests: integration tests with JSON-RPC client (#704) 2021-11-14 14:34:10 +01:00
server x/evm/keeper: save 24B with Go in-condition variable idiom (#828) 2021-12-14 00:51:36 +01:00
tests tests: eth_sendRawTx (#804) 2021-12-01 09:38:59 +01:00
testutil/network evm: ForEachStorage semantic not compatible with go-ethereum (#798) 2021-11-30 10:34:33 +00:00
third_party/proto evm: EIP1559 & go-ethereum related updates (#469) 2021-08-25 14:45:51 +00:00
tools tests: integration tests with JSON-RPC client (#704) 2021-11-14 14:34:10 +01:00
types evm: check height overflow (#597) 2021-09-28 09:48:11 +00:00
version more fixes 2021-04-18 18:39:15 +02:00
x x/evm/keeper: save 24B with Go in-condition variable idiom (#828) 2021-12-14 00:51:36 +01:00
.clang-format ci: enable backport for v0.8 and v0.7 (#784) 2021-11-25 11:06:30 +00:00
.dockerignore build: fix docker setup (#337) 2021-08-04 09:30:13 +00:00
.gitattributes add gitattributes file (#567) 2021-09-16 08:36:08 +00:00
.gitignore build: fix docker setup (#337) 2021-08-04 09:30:13 +00:00
.golangci.yml x/evm/keeper: save 24B with Go in-condition variable idiom (#828) 2021-12-14 00:51:36 +01:00
.goreleaser.yml ci: fix goreleaser (#708) 2021-10-29 15:56:09 +02:00
.mergify.yml docs: backport changelog updates (#807) 2021-12-01 09:58:41 +01:00
buf.work.yaml evm: EIP1559 & go-ethereum related updates (#469) 2021-08-25 14:45:51 +00:00
CHANGELOG.md x/evm/keeper: save 24B with Go in-condition variable idiom (#828) 2021-12-14 00:51:36 +01:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2018-07-17 11:52:20 -04:00
codecov.yml all: linter (#532) 2021-09-05 11:03:06 +00:00
CONTRIBUTING.md doc: duplicated documentation removed (#603) 2021-09-29 10:37:10 +00:00
docker-compose.yml build: fix docker setup (#337) 2021-08-04 09:30:13 +00:00
Dockerfile build: fix docker setup (#337) 2021-08-04 09:30:13 +00:00
go.mod build(deps): bump github.com/spf13/viper from 1.9.0 to 1.10.0 (#833) 2021-12-13 20:11:11 +01:00
go.sum build(deps): bump github.com/spf13/viper from 1.9.0 to 1.10.0 (#833) 2021-12-13 20:11:11 +01:00
init.bat feat: update chain-id format (#447) 2021-08-17 14:11:26 +00:00
init.sh fix: set EVM debug based on tracer config (#746) 2021-11-16 08:57:03 +00:00
LICENSE docs: re-license to LGPLv3 (#800) 2021-11-30 09:22:21 +01:00
Makefile fix: proto-gen broken env var (#723) 2021-11-06 22:01:58 +00:00
README.md Update README.md (#736) 2021-11-09 19:50:27 +00:00
starport.yml ci: liveness test (#498) 2021-08-26 15:21:43 +00:00

Ethermint

banner

Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK which runs on top of Tendermint Core consensus engine.

Note: Requires Go 1.17+

Installation

For prerequisites and detailed build instructions please read the Evmos Installation instructions. Once the dependencies are installed, run:

make install

Or check out the latest release.

Quick Start

To learn how the Ethermint works from a high-level perspective, go to the Introduction section from the documentation. You can also check the instructions to Run a Node.

For an example on how Ethermint can be used on any Cosmos-SDK chain, please refer to Evmos.

Community

The following chat channels and forums are a great spot to ask questions about Ethermint:

Contributing

Looking for a good place to start contributing? Check out some good first issues.

For additional instructions, standards and style guides, please refer to the Contributing document.

Careers

See our open positions on Cosmos Jobs, Notion, or feel free to reach out via email.