An efficient re-implementation of Atomicals ElectrumX Server in Rust, providing high-performance indexing and querying capabilities for Atomicals on the Bitcoin network. This project is a fork of the original electrs project, enhanced with Atomicals protocol support.
-
Atomicals Protocol Support
- Full support for NFT and FT (Fungible Token) Atomicals
- Comprehensive indexing of Atomicals operations and states
- Real-time tracking of Atomicals ownership and transfers
- Support for sealed and unsealed Atomicals
-
High Performance
- Efficient RocksDB-based storage with optimized column families
- Fast synchronization and indexing of Atomicals data
- Low memory footprint and CPU usage
- Concurrent processing of Atomicals operations
-
Rich API Support
- Full Electrum protocol compatibility
- Extended RPC interface for Atomicals operations
- Real-time WebSocket notifications
- Comprehensive query capabilities for Atomicals data
-
Advanced Features
- Mempool tracking for unconfirmed Atomicals operations
- Support for complex Atomicals queries and filters
- Metadata indexing and search capabilities
- Chain reorganization handling
The server is built on a modular architecture with the following key components:
-
Core Components
- Chain synchronization and block processing
- Transaction parsing and validation
- State management and persistence
- Memory pool handling
-
Atomicals-Specific Components
- Atomicals operation parser
- State and ownership tracking
- Index management
- RPC interface
-
Storage Layer
- Optimized RocksDB schema
- Efficient index structures
- Cache management
- Data consistency guarantees
- Rust 1.70 or later
- Bitcoin Core 24.0 or later
- RocksDB 6.20.3 or later
-
Clone the repository:
git clone https://github.com/yourusername/atomical-electrs.git cd atomical-electrs
-
Build the project:
cargo build --release
-
Configure the server:
cp config.example.toml config.toml # Edit config.toml with your settings
-
Run the server:
./target/release/electrs --conf config.toml
The server can be configured through both command-line arguments and a configuration file. Key configuration options include:
- Bitcoin RPC connection settings
- Network selection (mainnet, testnet, regtest)
- Database location and cache sizes
- Logging and monitoring options
- RPC and WebSocket interface settings
Detailed documentation is available in the docs
directory:
Contributions are welcome! Please read our Contributing Guidelines before submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
- Original electrs project
- Atomicals Protocol specification
- Bitcoin Core team
- Rust and RocksDB communities
This project is under active development. Please check the Issues page for known issues and planned features.