8333765b27
* 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> |
||
---|---|---|
.bencher | ||
.github | ||
app | ||
client | ||
cmd | ||
contrib/scripts | ||
crypto | ||
docs | ||
encoding | ||
networks/local | ||
proto | ||
rpc | ||
scripts | ||
server | ||
tests | ||
testutil/network | ||
third_party/proto | ||
tools | ||
types | ||
version | ||
x | ||
.clang-format | ||
.dockerignore | ||
.gitattributes | ||
.gitignore | ||
.golangci.yml | ||
.goreleaser.yml | ||
.mergify.yml | ||
buf.work.yaml | ||
CHANGELOG.md | ||
CODE_OF_CONDUCT.md | ||
codecov.yml | ||
CONTRIBUTING.md | ||
docker-compose.yml | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
init.bat | ||
init.sh | ||
LICENSE | ||
Makefile | ||
README.md | ||
starport.yml |
Ethermint
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.