dagurval / ElectrsCash

Electron Cash Server, rust implementation. Forked from https://github.com/romanz/electrs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ElectrsCash - Electrum Server in Rust

license CI PRs Welcome

An efficient implementation of Electrum Server.

The motivation behind this project is to improve the Bitcoin Cash infrastructure for lightweight clients, providing them with efficient backend services.

ElectrsCash extends the original Electrum protocol, supporting additional technology well established in the ecosystem such as CashAccounts.

The server indexes the entire Bitcoin Cash blockchain, and the resulting index enables fast queries for any given user wallet, allowing the user to keep real-time track of his balances and his transaction history using the Electron Cash wallet. Since it runs on the user's own machine, there is no need for the wallet to communicate with external Electrum servers, thus preserving the privacy of the user's addresses and balances.

Features

  • Supports Electrum protocol v1.4.2
  • Maintains an index over transaction inputs and outputs, allowing fast balance queries
  • Fast synchronization of the Bitcoin Cash blockchain on modest hardware
  • Low index storage overhead (~20%), relying on a local full node for transaction retrieval
  • txindex is not required for the Bitcoin node, however it does improve performance
  • Uses a single RocksDB database, for better consistency and crash recovery

Notable features unique to ElectrsCash

Usage

See here for installation, build and usage instructions.

Index database

The database schema is described here.

Tests

Run unit tests with cargo test.

Integration tests are included in the Bitcoin Unlimited test set. Look for tests prefixed with electrum_.

To run the tests, you need to:

Linters

Code linting and formatting is enforced in the projects continuous integration. When contributing, please run cargo clippy to catch common mistakes and improve your code, as well as cargo fmt to format the code.

About

Electron Cash Server, rust implementation. Forked from https://github.com/romanz/electrs

License:MIT License


Languages

Language:Rust 90.8%Language:Python 7.0%Language:JavaScript 1.4%Language:Shell 0.5%Language:Dockerfile 0.4%