Esplora - The Code Behind Blockstream Explorer
Blockstream Explorer

Esplora - The Code Behind Blockstream Explorer

Lawrence Nahum

Following the great reception we’ve been getting for Blockstream Explorer (released in November), today we’re releasing Esplora: the free and open source software that powers the site. The software has been made available so that developers can contribute to the project, build their own extensions, or even create their own independent blockchain explorers.

Esplora is based on a number of open source components. Using a modified Electrs, a Rust implementation of Electrum Server written by Roman Zeyde, Esplora indexes blockchain data quickly from Bitcoin Core and Liquid full node software.

Esplora supports the following features:

Our modifications to Electrs include Liquid support thanks to rust-elements, a Rust library for Elements written by Blockstream’s Director of Research, Andrew Poelstra. Other modifications include the addition of a Rust embedded HTTP server called hyper. Finally, the Esplora front-end is served to users by nginx.

The initial design for Esplora was based on a high-level idea of reusing Electrs and changed it to handle Liquid and to serve data via HTTP REST. The initial implementation of the backend was done by Riccardo Casatta; then Nadav Ivgi (shesek) refined it and completed it. The client-side code was written by Nadav and based on rxjs and cyclejs. Blockstream’s Selene Jin and Matthias Ruhland designed the excellent front-end UI and implemented it, respectively. Last but not least, Chase Sillevis, Martin Izdimirski, and myself (Lawrence) handled infrastructure and deployment.

Along with the public code repository, there is also a pre-built Docker image that users can run on their own hardware; although we encourage users to build their own images.

If you have feature requests or suggestions, feel free to open an issue in the Github repository, submit a post to r/bitcoinexplorers, chat with us in #bitcoin-explorers, or send us an email.

If you have specific preferences, please, mark the topic(s) you would like to read: