Elixir JSON-RPC client for Ethereum blockchain with HTTP, IPC, and WebSocket support.
Ethereumex is an Elixir JSON-RPC client library for interacting with the Ethereum blockchain. It provides a robust interface for querying blockchain data, sending transactions, and subscribing to real-time events, enabling developers to build decentralized applications within the Elixir ecosystem.
Elixir developers building decentralized applications (dApps), blockchain services, or tools that require programmatic interaction with Ethereum nodes via JSON-RPC.
Developers choose Ethereumex for its idiomatic Elixir API, full protocol compatibility, and multi-protocol support (HTTP, IPC, WebSocket), which abstracts blockchain communication complexities while offering features like batch requests, real-time subscriptions, and telemetry integration.
Elixir JSON-RPC client for the Ethereum blockchain
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports HTTP, IPC, and WebSocket connections, allowing developers to choose the best method for their deployment scenario, as configurable in the README with detailed setup for each protocol.
WebSocket client enables subscriptions to new blocks, contract logs, and pending transactions, providing live updates essential for dApps, with examples for subscribing and receiving notifications.
Allows sending multiple JSON-RPC calls in a single batch via batch_request/1, reducing latency and improving performance, demonstrated in the README with clear usage examples.
Emits telemetry events for monitoring RPC method usage and performance, aiding in production diagnostics, as described with events like [:ethereumex] and granular method-specific events.
WebSocket subscriptions require developers to handle message reception in Elixir processes manually using receive blocks, which can be complex and error-prone compared to libraries with built-in callback systems.
For smart contract interactions, Ethereumex relies on external packages like ex_abi for encoding and decoding ABI data, adding an extra layer of setup and potential compatibility issues, as shown in the eth_call example.
Different client types (HTTP, IPC, WebSocket) have distinct and detailed configuration requirements, such as ipc_path or websocket_url, which might be daunting for beginners or in dynamic environments.