faster-eth-abi
A ~2-6x faster fork of eth_abi: Python utilities for working with Ethereum ABI definitions, especially encoding and decoding. Implemented in C.
What it is and what it does
faster-eth-abi is a C-compiled fork of eth-abi that encodes and decodes Ethereum contract ABI data—the binary format used to call smart contracts and interpret their return values. It maintains API and exception compatibility with eth-abi, so you can swap it in as a drop-in replacement without rewriting exception handlers or call sites. The package depends on cchecksum, faster-eth-utils, eth-abi, eth-typing, mypy_extensions, and parsimonious to handle checksum validation, type annotations, and parsing.
The fork targets performance-critical Ethereum applications where encoding/decoding throughput matters. It compiles hot paths to C while keeping the Python interface unchanged. The project is actively maintained and tracks upstream eth-abi releases, so new ABI features and bug fixes are incorporated. It supports Python 3.10 through 3.14 on CPython with pre-built wheels for macOS (ARM), Linux (x86_64, i686, musl), and Windows.
Use it for:
- Speed up batch transaction encoding in high-frequency trading or arbitrage bots that process many contract calls per second.
- Reduce latency in RPC middleware or indexing services that decode contract events and call results at scale.
- Improve performance of local contract simulators or testing frameworks that repeatedly encode/decode ABI data.
- Replace eth-abi in existing Ethereum libraries or applications without refactoring exception handling or API calls.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Encodes and decodes Ethereum ABI data structures with C-compiled performance, providing a faster drop-in replacement for eth-abi with compatible exception handling.
Yes, if you are already using eth-abi and need faster encoding/decoding performance. The drop-in compatibility and active maintenance make it a low-risk swap. No if you are not performance-constrained or if you need Python versions below 3.10. The medium install friction (compiled wheels) is offset by broad platform coverage and permissive licensing.
Install
faster-eth-abi on PyPI
pip
pip install faster-eth-abiuv
uv add faster-eth-abipoetry
poetry add faster-eth-abiInstalling faster-eth-abi
Before you install
Medium install friction due to compiled wheels across multiple platforms and Python versions (3.10–3.14). Active maintenance with recent releases; last commit 2026-08-11. Six runtime dependencies add some complexity, though the project tracks upstream eth-abi updates.
License in practice
MIT license permits commercial and private use with minimal restrictions; you may use, modify, and distribute this package freely provided you include the license notice.
Quickstart
pip install faster-eth-abi
from eth_abi import encode, decode
# Encode and decode contract ABI data
Requires Python 3.10 or later; compiled wheels available for common platforms but may require build tools on unsupported architectures.
Verify before relying
- Actual performance improvement magnitude (2–6x claimed) on real workloads and whether it varies significantly by operation type.
- Compatibility guarantees with eth-abi beyond exception inheritance; whether all encoding/decoding edge cases are identical.
- Whether the C implementation handles all Ethereum type variants that eth-abi supports.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (<4,>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 6 — cchecksum, faster-eth-utils, eth-abi, eth-typing, mypy_extensions, parsimonious |
| Maintenance | actively maintained — 34 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 223,096/month — #9,252 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: faster_eth_abi-5.2.31-cp310-cp310-macosx_11_0_arm64.whl; faster_eth_abi-5.2.31-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl; faster_eth_abi-5.2.31-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; faster_eth_abi-5.2.31-cp310-cp310-musllinux_1_2_x86_64.whl; faster_eth_abi-5.2.31-cp310-cp310-win32.whl; faster_eth_abi-5.2.31-cp310-cp310-win_amd64.whl; faster_eth_abi-5.2.31-cp311-cp311-macosx_11_0_arm64.whl; faster_eth_abi-5.2.31-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl; faster_eth_abi-5.2.31-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; faster_eth_abi-5.2.31-cp311-cp311-musllinux_1_2_x86_64.whl; faster_eth_abi-5.2.31-cp311-cp311-win32.whl; faster_eth_abi-5.2.31-cp311-cp311-win_amd64.whl; faster_eth_abi-5.2.31-cp312-cp312-macosx_11_0_arm64.whl; faster_eth_abi-5.2.31-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl; faster_eth_abi-5.2.31-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; faster_eth_abi-5.2.31-cp312-cp312-musllinux_1_2_x86_64.whl; faster_eth_abi-5.2.31-cp312-cp312-win32.whl; faster_eth_abi-5.2.31-cp312-cp312-win_amd64.whl; faster_eth_abi-5.2.31-cp313-cp313-macosx_11_0_arm64.whl; faster_eth_abi-5.2.31-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Keywords: ethereum
Tags
More Internet packages
Botocore provides low-level, data-driven access…
permissive · top 100 on PyPI
aiobotocoreProvides an async client for AWS services using…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
filelockProvides a platform-independent file locking…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
googleapis-common-protosProvides common Protocol Buffer message…
permissive · top 100 on PyPI
faster-eth-utilsProvides Ethereum utility functions for address…
permissive · top 15,000 on PyPI
cchecksumProvides a C-accelerated implementation of…
permissive · top 15,000 on PyPI
eth-rlpProvides RLP (Recursive Length Prefix) encoding…
permissive · top 5,000 on PyPI
rlpEncodes and decodes data using Recursive Length…
permissive · top 5,000 on PyPI
bech32mEncodes and decodes Bech32 and Bech32m strings,…
permissive · top 15,000 on PyPI
ethereum-dasmDisassembles Ethereum EVM bytecode into…
copyleft · top 15,000 on PyPI
abi3infoabi3info exposes CPython's limited API and…
permissive · top 15,000 on PyPI
scalecodecEncodes and decodes data using the SCALE codec,…
permissive · top 15,000 on PyPI
vyperVyper is a Python-like programming language for…
permissive · top 15,000 on PyPI