Ethane is an alternative web3 implementation with the aim of being slim and simple. It does not depend on futures or any executors. It currently supports http and websockets (both plain and TLS) and inter process communication via Unix domain sockets (Unix only). For http and websockets it also supports Http Basic and Bearer Authentication.
Currently only Eth1 is supported and not all namespaces are implemented. You can have a look here (supported RPCs) to see what is supported. Please note that the JSON spec is a bit outdated, and there is some effort to create a new one, so expect some breaking changes in the future.
This library is very raw and under heavy development. Expect to find some bugs and use at your own risk!
In order to get started, create a connector over some transport. The following examples show you how to make a request and how to subscribe to events.
use ethane::Connector; use ethane::rpc::eth_get_balance; use ethane::types::H160; // Start up connector let node_endpoint = "http://127.0.0.1:8545"; let mut connector = Connector::http(node_endpoint, None).unwrap(); // Make a request let address = H160::zero(); let balance = connector.call(eth_get_balance(address, None)).unwrap();
use ethane::Connector; use ethane::rpc::sub::eth_subscribe_new_pending_transactions; // Start up connector with websockets let node_endpoint = "ws://127.0.0.1:8546"; let mut connector = Connector::websocket(node_endpoint, None).unwrap(); // Subscribe to pending transactions let mut tx_subscription = connector .subscribe(eth_subscribe_new_pending_transactions()).unwrap(); // Get next transaction item let tx = tx_subscription.next_item().unwrap();
Allows connecting to an ethereum node
Functions to generate Rpcs
Possible transports which are supported by the Connector
Collects all the needed Ethereum types