| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Block explorer web interface based on the esplora-electrs HTTP API.
Written as a single-page app in a reactive and functional style using rxjs and cycle.js.
See live at Blockstream.info.
API documentation is available here.
Join the translation efforts on Transifex.
Explore blocks, transactions and addresses
Support for Segwit and Bech32 addresses
Shows previous output and spending transaction details
Quick-search for txid, address, block hash or height by navigating to /<query>
Advanced view with script hex/assembly, witness data, outpoints and more
Mobile-ready responsive design
Translated to 17 languages
Noscript support
For Liquid and other Elements-based chains: support for CT, peg-in/out transactions and multi-asset
Mainnet, Testnet and Elements high performance electrum server
To start a development server with live babel/browserify transpilation, run:
$ git clone https://github.com/Blockstream/esplora && cd esplora
$ npm install
$ export API_URL=http://localhost:3000/ # or https://blockstream.info/api/ if you don't have a local API server
# (see more config options below)
$ npm run dev-serverThe server will be available at http://localhost:5000/
To display debugging information for the Rx streams in the web developer console, set localStorage.debug = '*' and refresh.
Browser polling uses three shared cadence tiers defined in client/src/const.js:
View-scoped polls run only while their view is active and the browser window is focused. Their first tick occurs after a full interval because route entry already requests the initial data. This avoids sending duplicate requests when opening a page. The chain tip is global and also refreshes immediately when the application starts or a block, transaction, or address page is opened.
The block list refreshes when the chain tip height changes, with the slow safety poll covering same-height reorganizations. Confirmed peg state and peg chain transactions also refresh on new blocks rather than on a timer. A newly observed tip resets pending block template polling and delays the next request by 15 seconds so the electrs cache can refresh.
The dashboard requests both /mempool/recent and /mempool because they serve different UI contracts. /mempool/recent supplies the recent transaction list; /mempool supplies aggregate backlog fields such as transaction count, virtual size, total fees, and the fee histogram used by congestion and transaction fee analysis.
To build the static assets directory for production deployment, set config options (see below) and run $ npm run dist. The files will be created under dist/.
Because Esplora is a single-page app, the HTTP server needs to be configured to serve the index.html file in reply to missing pages. See contrib/nginx.conf.in for example nginx configuration (TL;DR: try_files $uri /index.html).
To start a pre-rendering server that generates static HTML replies suitable for noscript users, run:
# (clone, cd, "npm install" and configure as above)
$ export STATIC_ROOT=http://localhost:5000/ # for loading CSS, images and fonts
$ npm run prerender-serverThe server will be available at http://localhost:5001/
All options are optional.
Note that API_URL should be set to the publicly-reachable URL where the user's browser can issue requests at. (that is, not via localhost, unless you're setting up a dev environment where the browser is running on the same machine as the API server.)
Elements-only configuration:
Menu configuration (useful for inter-linking multiple instances on different networks):
All GUI options, plus:
All GUI options, plus:
Note that unlike the regular JavaScript-based app that sends API requests from the client-side, the pre-rendering server sends API requests from the server-side. This means that API_URL should be configured to the URL reachable by the server, typically http://localhost:3000/.
Build the base image first:
docker build -t blockstream/esplora-base -f contrib/Dockerfile.base .then the main image:
docker build -t esplora -f contrib/Dockerfile .Alternatively, you may use the pre-built blockstream/esplora image from Docker Hub. The latest tag tracks the master branch; release tags (e.g. esplora_v2.10) are also published as versioned image tags (e.g. blockstream/esplora:v2.10) that can be pinned for reproducible deployments.
docker run -p 50001:50001 -p 8080:80 \
--volume $PWD/data_bitcoin_mainnet:/data \
--rm -i -t esplora \
bash -c "/srv/explorer/run.sh bitcoin-mainnet explorer"docker run -p 50001:50001 -p 8082:80 \
--volume $PWD/data_liquid_mainnet:/data \
--rm -i -t esplora \
bash -c "/srv/explorer/run.sh liquid-mainnet explorer"docker run -p 50001:50001 -p 8084:80 \
--volume $PWD/data_bitcoin_testnet:/data \
--rm -i -t esplora \
bash -c "/srv/explorer/run.sh bitcoin-testnet explorer"docker run -p 50001:50001 -p 8084:80 \
--volume $PWD/data_bitcoin_testnet4:/data \
--rm -i -t esplora \
bash -c "/srv/explorer/run.sh bitcoin-testnet4 explorer"
docker run -p 50001:50001 -p 8084:80 \
--volume $PWD/data_bitcoin_signet:/data \
--rm -i -t esplora \
bash -c "/srv/explorer/run.sh bitcoin-signet explorer"docker run -p 50001:50001 -p 8096:80 \
--volume $PWD/data_liquid_testnet:/data \
--rm -i -t esplora \
bash -c "/srv/explorer/run.sh liquid-testnet explorer"docker run -p 50001:50001 -p 8092:80 \
--volume $PWD/data_liquid_regtest:/data \
--rm -i -t esplora \
bash -c "/srv/explorer/run.sh liquid-regtest explorer"docker run -p 50001:50001 -p 8094:80 \
--volume $PWD/data_bitcoin_regtest:/data \
--rm -i -t esplora \
bash -c "/srv/explorer/run.sh bitcoin-regtest explorer"When run for Bitcoin regtest or Liquid regtest, the esplora container will create a default wallet and mine 100 blocks internally. You can disable this behavior by setting NO_REGTEST_MINING=1.
Set -e DEBUG=verbose to enable more verbose logging.
Set -e NO_PRECACHE=1 to disable pre-caching of statistics for "popular addresses", which may take a long time and is not necessary for personal use.
Set -e NO_ADDRESS_SEARCH=1 to disable the by-prefix address search index.
Set -e ENABLE_LIGHTMODE=1 to enable esplora-electrs's light mode.
Set -e ONION_URL=http://xyz.onion to enable the Onion-Location header.
Run: docker -d --name hidden_service blockstream/tor:latest tor -f /home/tor/torrc (could add a -v /extra/torrc:/home/tor/torrc, if you have a custom torrc)
Example torrc:
DataDirectory /home/tor/tor
PidFile /var/run/tor/tor.pid
ControlSocket /var/run/tor/control GroupWritable RelaxDirModeCheck
ControlSocketsGroupWritable 1
SocksPort unix:/var/run/tor/socks WorldWritable
SocksPort 9050
CookieAuthentication 1
CookieAuthFileGroupReadable 1
CookieAuthFile /var/run/tor/control.authcookie
Log [handshake]debug [*]notice stderr
HiddenServiceDir /home/tor/tor/hidden_service_v3/
HiddenServiceVersion 3
HiddenServicePort 80 127.0.0.1:80
MIT
| Back | FazBrowse Home | New Git URL |