{"id":13650134,"url":"https://github.com/Blockstream/esplora","last_synced_at":"2025-04-22T18:30:55.991Z","repository":{"id":38009282,"uuid":"156976304","full_name":"Blockstream/esplora","owner":"Blockstream","description":"Explorer for Bitcoin and Liquid","archived":false,"fork":false,"pushed_at":"2025-04-17T15:42:50.000Z","size":5565,"stargazers_count":1095,"open_issues_count":177,"forks_count":429,"subscribers_count":58,"default_branch":"master","last_synced_at":"2025-04-18T05:31:47.023Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Blockstream.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-11-10T11:52:27.000Z","updated_at":"2025-04-18T02:25:41.000Z","dependencies_parsed_at":"2024-02-13T14:41:07.459Z","dependency_job_id":"39d94483-67e1-4495-993d-4c980a0a42db","html_url":"https://github.com/Blockstream/esplora","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blockstream%2Fesplora","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blockstream%2Fesplora/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blockstream%2Fesplora/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blockstream%2Fesplora/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Blockstream","download_url":"https://codeload.github.com/Blockstream/esplora/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250297175,"owners_count":21407160,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T02:00:34.087Z","updated_at":"2025-04-22T18:30:55.981Z","avatar_url":"https://github.com/Blockstream.png","language":"JavaScript","funding_links":[],"categories":["Blockchain API and Web services","Utilities \u0026 Tools","JavaScript","Others"],"sub_categories":["Sovereign Payment Kernel"],"readme":"# Esplora Block Explorer\n\n[![build status](https://api.travis-ci.org/Blockstream/esplora.svg)](https://travis-ci.org/Blockstream/esplora)\n[![docker release](https://img.shields.io/docker/pulls/blockstream/esplora.svg)](https://hub.docker.com/r/blockstream/esplora)\n[![MIT license](https://img.shields.io/github/license/blockstream/esplora.svg)](https://github.com/blockstream/esplora/blob/master/LICENSE)\n[![Pull Requests Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n[![IRC](https://img.shields.io/badge/chat-on%20freenode-brightgreen.svg)](https://webchat.freenode.net/?channels=bitcoin-explorers)\n\nBlock explorer web interface based on the [esplora-electrs](https://github.com/Blockstream/electrs) HTTP API.\n\nWritten as a single-page app in a reactive and functional style using\n[rxjs](https://github.com/ReactiveX/rxjs) and [cycle.js](https://cycle.js.org/).\n\nSee live at [Blockstream.info](https://blockstream.info/).\n\nAPI documentation [is available here](API.md).\n\nJoin the translation efforts on [Transifex](https://transifex.com/blockstream/esplora/).\n\n![Esplora](https://raw.githubusercontent.com/Blockstream/esplora/master/flavors/blockstream/www/img/social-sharing.png)\n\n## Features\n\n- Explore blocks, transactions and addresses\n\n- Support for Segwit and Bech32 addresses\n\n- Shows previous output and spending transaction details\n\n- Quick-search for txid, address, block hash or height by navigating to `/\u003cquery\u003e`\n\n- Advanced view with script hex/assembly, witness data, outpoints and more\n\n- Mobile-ready responsive design\n\n- Translated to 17 languages\n\n- Light and dark themes\n\n- Noscript support\n\n- For Liquid and other Elements-based chains: support for CT, peg-in/out transactions and multi-asset\n\n- Mainnet, Testnet and Elements high performance electrum server\n\n## Developing\n\nTo start a development server with live babel/browserify transpilation, run:\n\n```bash\n$ git clone https://github.com/Blockstream/esplora \u0026\u0026 cd esplora\n$ npm install\n$ export API_URL=http://localhost:3000/ # or https://blockstream.info/api/ if you don't have a local API server\n# (see more config options below)\n$ npm run dev-server\n```\n\nThe server will be available at \u003chttp://localhost:5000/\u003e\n\nTo display debugging information for the Rx streams in the web developer console, set `localStorage.debug = '*'` and refresh.\n\n## Building\n\nTo build the static assets directory for production deployment, set config options (see below)\nand run `$ npm run dist`. The files will be created under `dist/`.\n\nBecause Esplora is a single-page app, the HTTP server needs to be configured to serve the `index.html` file in reply to missing pages.\nSee [`contrib/nginx.conf.in`](contrib/nginx.conf.in) for example nginx configuration (TL;DR: `try_files $uri /index.html`).\n\n## Pre-rendering server (noscript)\n\nTo start a pre-rendering server that generates static HTML replies suitable for noscript users, run:\n\n```bash\n# (clone, cd, \"npm install\" and configure as above)\n\n$ export STATIC_ROOT=http://localhost:5000/ # for loading CSS, images and fonts\n$ npm run prerender-server\n```\n\nThe server will be available at \u003chttp://localhost:5001/\u003e\n\n## Configuration options\n\nAll options are optional.\n\n### GUI options\n\n- `NODE_ENV` - set to `production` to enable js minification, or to `development` to disable (defaults to `production`)\n- `BASE_HREF` - base href for user interface (defaults to `/`, change if not served from the root directory)\n- `STATIC_ROOT` - root for static assets (defaults to `BASE_HREF`, change to load static assets from a different server)\n- `API_URL` - URL for HTTP REST API (defaults to `/api`, change if the API is available elsewhere)\n- `CANONICAL_URL` - absolute base url for user interface (optional, only required for opensearch and canonical link tags)\n- `NATIVE_ASSET_LABEL` - the name of the network native asset (defaults to `BTC`)\n- `SITE_TITLE` - website title for `\u003ctitle\u003e` (defaults to `Block Explorer`)\n- `SITE_DESC` - meta description (defaults to `Esplora Block Explorer`)\n- `HOME_TITLE` - text for homepage title (defaults to `SITE_TITLE`)\n- `SITE_FOOTER` - text for page footer (defaults to `Powered by esplora`)\n- `HEAD_HTML` - custom html to inject at the end of `\u003chead\u003e`\n- `FOOT_HTML` - custom html to inject at the end of `\u003cbody\u003e`\n- `CUSTOM_ASSETS` - space separated list of static assets to add to the build\n- `CUSTOM_CSS` - space separated list of css files to append into `style.css`\n- `NOSCRIPT_REDIR` - redirect noscript users to `{request_path}?nojs` (should be captured server-side and redirected to the prerender server, also see `NOSCRIPT_REDIR_BASE` in dev server options)\n\nNote that `API_URL` should be set to the publicly-reachable URL where the user's browser can issue requests at.\n(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.)\n\nElements-only configuration:\n\n- `IS_ELEMENTS` - set to `1` to indicate this is an Elements-based chain (enables asset issuance and peg features)\n- `NATIVE_ASSET_ID` - the ID of the native asset used to pay fees (defaults to `6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d`, the asset id for BTC)\n- `BLIND_PREFIX` - the base58 address prefix byte used for confidential addresses (defaults to `12`)\n- `PARENT_CHAIN_EXPLORER_TXOUT` - URL format for linking to transaction outputs on the parent chain, with `{txid}` and `{vout}` as placeholders. Example: `https://blockstream.info/tx/{txid}#output:{vout}`\n- `PARENT_CHAIN_EXPLORER_ADDRESS` - URL format for linking to addresses on parent chain, with `{addr}` replaced by the address. Example: `https://blockstream.info/address/{addr}`\n- `ASSET_MAP_URL` - url to load json asset map (in the \"minimal\" format)\n\nMenu configuration (useful for inter-linking multiple instances on different networks):\n\n- `MENU_ITEMS` - json map of menu items, where the key is the label and the value is the url\n- `MENU_ACTIVE` - the active menu item identified by its label\n\n### Development server options\n\nAll GUI options, plus:\n\n- `PORT` - port to bind http development server (defaults to `5000`)\n- `CORS_ALLOW` - value to set for `Access-Control-Allow-Origin` header (optional)\n- `NOSCRIPT_REDIR_BASE` - base url for prerender server, for redirecting `?nojs` requests (should be set alongside `NOSCRIPT_REDIR`)\n\n### Pre-rendering server options\n\nAll GUI options, plus:\n\n- `PORT` - port to bind pre-rendering server (defaults to `5001`)\n\nNote that unlike the regular JavaScript-based app that sends API requests from the client-side,\nthe pre-rendering server sends API requests from the server-side. This means that `API_URL` should\nbe configured to the URL reachable by the server, typically `http://localhost:3000/`.\n\n## How to build the Docker image\n\n```bash\ndocker build -t esplora -f contrib/Dockerfile .\n```\n\nAlternatively, you may use the pre-built [`blockstream/esplora` image](https://hub.docker.com/r/blockstream/esplora) from Docker Hub.\n\n## How to run the explorer for Bitcoin mainnet\n\n```bash\ndocker run -p 50001:50001 -p 8080:80 \\\n           --volume $PWD/data_bitcoin_mainnet:/data \\\n           --rm -i -t esplora \\\n           bash -c \"/srv/explorer/run.sh bitcoin-mainnet explorer\"\n```\n\n## How to run the explorer for Liquid mainnet\n\n```bash\ndocker run -p 50001:50001 -p 8082:80 \\\n           --volume $PWD/data_liquid_mainnet:/data \\\n           --rm -i -t esplora \\\n           bash -c \"/srv/explorer/run.sh liquid-mainnet explorer\"\n```\n\n## How to run the explorer for Bitcoin testnet3\n\n```bash\ndocker run -p 50001:50001 -p 8084:80 \\\n           --volume $PWD/data_bitcoin_testnet:/data \\\n           --rm -i -t esplora \\\n           bash -c \"/srv/explorer/run.sh bitcoin-testnet explorer\"\n```\n\n## How to run the explorer for Bitcoin signet\n\n```bash\ndocker run -p 50001:50001 -p 8084:80 \\\n           --volume $PWD/data_bitcoin_signet:/data \\\n           --rm -i -t esplora \\\n           bash -c \"/srv/explorer/run.sh bitcoin-signet explorer\"\n```\n\n## How to run the explorer for Liquid testnet\n\n```bash\ndocker run -p 50001:50001 -p 8096:80 \\\n           --volume $PWD/data_liquid_testnet:/data \\\n           --rm -i -t esplora \\\n           bash -c \"/srv/explorer/run.sh liquid-testnet explorer\"\n```\n\n## How to run the explorer for Liquid regtest\n\n```bash\ndocker run -p 50001:50001 -p 8092:80 \\\n           --volume $PWD/data_liquid_regtest:/data \\\n           --rm -i -t esplora \\\n           bash -c \"/srv/explorer/run.sh liquid-regtest explorer\"\n```\n\n## How to run the explorer for Bitcoin regtest\n\n```bash\ndocker run -p 50001:50001 -p 8094:80 \\\n           --volume $PWD/data_bitcoin_regtest:/data \\\n           --rm -i -t esplora \\\n           bash -c \"/srv/explorer/run.sh bitcoin-regtest explorer\"\n```\n\n## Regtest options\n\nWhen run for Bitcoin regtest or Liquid regtest, the esplora container will\ncreate a default wallet and mine 100 blocks internally. You can disable this behavior\nby setting `NO_REGTEST_MINING=1`.\n\n## Docker config options\n\nSet `-e DEBUG=verbose` to enable more verbose logging.\n\nSet `-e NO_PRECACHE=1` to disable pre-caching of statistics for \"popular addresses\",\nwhich may take a long time and is not necessary for personal use.\n\nSet `-e NO_ADDRESS_SEARCH=1` to disable the [by-prefix address search](https://github.com/Blockstream/esplora/blob/master/API.md#get-address-prefixprefix) index.\n\nSet `-e ENABLE_LIGHTMODE=1` to enable [esplora-electrs's light mode](https://github.com/Blockstream/electrs/#light-mode).\n\nSet `-e ONION_URL=http://xyz.onion` to enable the `Onion-Location` header.\n\n## Build new esplora-base\n\n```bash\ndocker build -t blockstream/esplora-base:latest -f Dockerfile.deps .\ndocker push blockstream/esplora-base:latest\ndocker inspect --format='{{index .RepoDigests 0}}' blockstream/esplora-base\n```\n\n## Pull tor directly from Docker Hub - `blockstream/tor:latest`\n\nRun: `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)\n\nExample torrc:\n\n```plaintext\nDataDirectory /home/tor/tor\nPidFile /var/run/tor/tor.pid\n\nControlSocket /var/run/tor/control GroupWritable RelaxDirModeCheck\nControlSocketsGroupWritable 1\nSocksPort unix:/var/run/tor/socks WorldWritable\nSocksPort 9050\n\nCookieAuthentication 1\nCookieAuthFileGroupReadable 1\nCookieAuthFile /var/run/tor/control.authcookie\n\nLog [handshake]debug [*]notice stderr\n\nHiddenServiceDir /home/tor/tor/hidden_service_v3/\nHiddenServiceVersion 3\nHiddenServicePort 80 127.0.0.1:80\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBlockstream%2Fesplora","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBlockstream%2Fesplora","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBlockstream%2Fesplora/lists"}