btc-rpc-explorer
Database-free, self-hosted Bitcoin explorer, via RPC to Bitcoin Core.
Top Related Projects
Explorer for Bitcoin and Liquid
A full stack for bitcoin and blockchain-based applications
A javascript Bitcoin library for node.js and browsers.
Accept Bitcoin payments. Free, open-source & self-hosted, Bitcoin payment processor.
Quick Overview
The btc-rpc-explorer
is a web-based Bitcoin blockchain explorer, which provides a user-friendly interface for exploring and interacting with the Bitcoin blockchain. It allows users to view detailed information about blocks, transactions, addresses, and other blockchain data.
Pros
- Comprehensive Blockchain Exploration: The project offers a comprehensive set of features for exploring the Bitcoin blockchain, including the ability to view block details, transaction information, and address balances.
- User-Friendly Interface: The web-based interface is designed to be intuitive and easy to use, making it accessible to both technical and non-technical users.
- Open-Source and Customizable: The project is open-source, allowing users to customize and extend the functionality to suit their specific needs.
- Supports Multiple Bitcoin Networks: The explorer can be configured to work with different Bitcoin networks, including mainnet, testnet, and regtest.
Cons
- Dependency on Bitcoin Core: The project relies on a running instance of Bitcoin Core, which can be resource-intensive and may not be suitable for all use cases.
- Limited Scalability: As the size of the Bitcoin blockchain grows, the performance of the explorer may be affected, especially on lower-powered hardware.
- Potential Security Concerns: As with any web-based application, there are potential security concerns that users should be aware of and address accordingly.
- Maintenance and Updates: The project requires ongoing maintenance and updates to keep up with changes in the Bitcoin ecosystem and to address any security vulnerabilities or bugs.
Getting Started
To get started with the btc-rpc-explorer
, follow these steps:
-
Install the required dependencies:
npm install
-
Configure the application by creating a
.env
file and setting the necessary environment variables, such as the Bitcoin RPC connection details:BTC_RPC_HOST=localhost BTC_RPC_PORT=8332 BTC_RPC_USER=your-rpc-username BTC_RPC_PASS=your-rpc-password
-
Start the development server:
npm start
-
Open your web browser and navigate to
http://localhost:3002
to access the Bitcoin blockchain explorer.
Competitor Comparisons
Explorer for Bitcoin and Liquid
Pros of Esplora
- Better performance and scalability for high-traffic Bitcoin explorers
- More comprehensive API with additional features like address balance history
- Supports multiple cryptocurrencies beyond just Bitcoin
Cons of Esplora
- More complex setup and infrastructure requirements
- Less user-friendly for non-technical users or small-scale deployments
- Requires more resources to run and maintain
Code Comparison
BTC RPC Explorer (Node.js):
router.get("/block-height/:height", function(req, res, next) {
var height = parseInt(req.params.height);
res.locals.blockHeight = height;
coreApi.getBlockHeaderByHeight(height).then(function(result) {
res.locals.result = result;
res.render("block-height");
});
});
Esplora (Rust):
pub fn block_height(
app: &App,
req: &HttpRequest<AppState>,
) -> impl Future<Item = HttpResponse, Error = Error> {
let height: u32 = req.match_info().query("height").parse().unwrap();
app.query_block_hash(height)
.map_err(Error::from)
.and_then(move |hash| app.fetch_block(&hash).map_err(Error::from))
.map(|block| HttpResponse::Ok().json(block))
}
Both repositories provide Bitcoin block explorers, but Esplora offers better performance and a more comprehensive API at the cost of increased complexity. BTC RPC Explorer is more suitable for simpler setups and non-technical users.
A full stack for bitcoin and blockchain-based applications
Pros of Bitcore
- Bitcore is a full-featured Bitcoin and blockchain development platform, providing a comprehensive set of tools and libraries for building Bitcoin-based applications.
- It offers a wide range of features, including wallet management, transaction handling, and blockchain exploration, making it a powerful choice for developers.
- Bitcore is actively maintained and has a large community of contributors, ensuring ongoing support and development.
Cons of Bitcore
- Bitcore has a steeper learning curve compared to BTC RPC Explorer, as it requires a deeper understanding of Bitcoin and blockchain concepts.
- The codebase is more complex and may be overkill for simple use cases or projects that don't require the full range of Bitcore's features.
- Bitcore's dependency on Node.js may be a drawback for developers who prefer a more lightweight or language-agnostic solution.
Code Comparison
BTC RPC Explorer (janoside/btc-rpc-explorer):
app.get('/tx/:txid', function(req, res, next) {
let txid = req.params.txid;
bitcoinApi.getRawTransactionInfo(txid, function(err, txInfo) {
if (err) {
return next(err);
}
res.render('tx', {
tx: txInfo.tx,
blockHash: txInfo.blockHash,
blockHeight: txInfo.blockHeight,
blockTime: txInfo.blockTime
});
});
});
Bitcore (bitpay/bitcore):
var tx = new bitcore.Transaction()
.from(utxos)
.to(address, amount)
.change(changeAddress)
.sign(privateKey);
var txid = tx.hash;
A javascript Bitcoin library for node.js and browsers.
Pros of bitcoinjs/bitcoinjs-lib
- Comprehensive and well-documented library for working with Bitcoin and other cryptocurrencies
- Supports a wide range of features, including transaction creation, signing, and broadcasting
- Actively maintained with a large community of contributors
Cons of bitcoinjs/bitcoinjs-lib
- Primarily focused on low-level Bitcoin functionality, rather than providing a user-friendly interface
- May have a steeper learning curve for developers new to Bitcoin and cryptocurrency development
- Doesn't provide the same level of user-facing features as janoside/btc-rpc-explorer
Code Comparison
bitcoinjs/bitcoinjs-lib
const bitcoin = require('bitcoinjs-lib');
const keyPair = bitcoin.ECPair.fromWIF('L1uyy5qTuGrVXrmrsvHWHgVzW9kKdrp27wB7Tvx3i8FChBuA8KF6');
const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey });
console.log(address); // 1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH
janoside/btc-rpc-explorer
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Bitcoin RPC Explorer!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
Accept Bitcoin payments. Free, open-source & self-hosted, Bitcoin payment processor.
Pros of BTCPay Server
- Offers a comprehensive suite of features for merchants, including payment processing, invoicing, and point-of-sale functionality.
- Provides a user-friendly interface for managing Bitcoin payments and transactions.
- Supports a wide range of cryptocurrencies, including Bitcoin, Litecoin, and Ethereum.
Cons of BTCPay Server
- Requires more technical expertise to set up and configure compared to BTC-RPC-Explorer.
- May have a steeper learning curve for users who are not familiar with Bitcoin and cryptocurrency.
- Requires more resources (e.g., server, storage) to run compared to BTC-RPC-Explorer.
Code Comparison
BTC-RPC-Explorer:
app.get('/tx/:txid', function(req, res, next) {
let txid = req.params.txid;
bitcoinApi.getRawTransactionInfo(txid, function(err, txInfo) {
if (err) {
return next(err);
}
res.render('tx', {
txid: txid,
tx: txInfo
});
});
});
BTCPay Server:
public async Task<IActionResult> GetTransactionDetails(string transactionId)
{
var transaction = await _transactionRepository.GetTransactionByIdAsync(transactionId);
if (transaction == null)
{
return NotFound();
}
var model = new TransactionDetailsViewModel
{
TransactionId = transaction.TransactionId,
Amount = transaction.Amount,
// Other transaction details
};
return View(model);
}
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
BTC RPC Explorer
Self-Hosted Bitcoin explorer for everyone running Bitcoin Core.
This is a self-hosted explorer for the Bitcoin blockchain, driven by RPC calls to your own Bitcoin node. It is easy to run and can be connected to other tools (like Electrum servers) to achieve a full-featured explorer.
Whatever reasons you may have for running a full node (trustlessness, technical curiosity, supporting the network, etc) it's valuable to appreciate the fullness of your node. With this explorer, you can explore not just the blockchain database, but also explore all of the functional capabilities of your own node.
Live demos:
Features
- Network Summary dashboard
- View details of blocks, transactions, and addresses
- Analysis tools for viewing stats on blocks, transactions, and miner activity
- JSON REST API
- See raw JSON content from bitcoind used to generate most pages
- Search by transaction ID, block hash/height, and address
- Optional transaction history for addresses by querying from Electrum-protocol servers (e.g. Electrs, ElectrumX), blockchain.com, blockchair.com, or blockcypher.com
- Mempool summary, with fee, size, and age breakdowns
- RPC command browser and terminal
Changelog / Release notes
See CHANGELOG.md.
Getting started
Prerequisites
- Install
Bitcoin Core
- instructions. Ensure thatBitcoin Core
's' RPC server is enabled (server=1
). - Allow
Bitcoin Core
to synchronize with the Bitcoin network (you can use this tool while sychronizing, but some pages may fail). - Install Node.js (16+ required, 18+ recommended).
Note about pruning and indexing configurations
This tool is designed to work best with full transaction indexing enabled (txindex=1
) and pruning disabled.
However, if you're running Bitcoin Core v0.21+ you can run without txindex
enabled and/or with pruning
enabled and this tool will continue to function, but some data will be incomplete or missing. Also note that such Bitcoin Core configurations receive less thorough testing.
In particular, with pruning
enabled and/or txindex
disabled, the following functionality is altered:
- You will only be able to search for mempool, recently confirmed, and wallet transactions by their txid. Searching for non-wallet transactions that were confirmed over 3 blocks ago is only possible if you provide the confirmed block height in addition to the txid.
- Pruned blocks will display basic header information, without the list of transactions. Transactions in pruned blocks will not be available, unless they're wallet-related. Block stats will only work for unpruned blocks.
- The address and amount of previous transaction outputs will not be shown, only the txid:vout.
- The mining fee will only be available for unconfirmed transactions.
Install / Run
If you're running on mainnet with the default datadir and port, the default configuration should Just Work. Otherwise, see the Configuration section below.
Install via npm
:
Note: npm v7+ is required
npm install -g btc-rpc-explorer
btc-rpc-explorer
Run from source:
git clone https://github.com/janoside/btc-rpc-explorer
cd btc-rpc-explorer
npm install
npm start
Install via AUR Arch Linux:
Note: The below AUR package was created and is maintained by @dougEfresh. The details and history of the package can be seen here.
git clone https://aur.archlinux.org/btc-rpc-explorer.git
cd btc-rpc-explorer
makepkg -csi
systemctl enable --now btc-rpc-explorer
After a default installation+startup using any of the above methods, the app can be viewed at http://127.0.0.1:3002/
Configuration
Configuration options may be set via environment variables or CLI arguments.
Configuration with environment variables
To configure with environment variables, you need to create one of the 2 following files and enter values in it:
~/.config/btc-rpc-explorer.env
.env
in the working directory for btc-rpc-explorer
In either case, refer to .env-sample for a list of the options and formatting details.
Configuration with CLI args
For configuring with CLI arguments, run btc-rpc-explorer --help
for the full list of options. An example execution is:
btc-rpc-explorer --port 8080 --bitcoind-port 18443 --bitcoind-cookie ~/.bitcoin/regtest/.cookie
Demo site settings
To match the features visible on the demo site at BitcoinExplorer.org you'll need to set the following non-default configuration values:
BTCEXP_DEMO=true # enables some demo/informational aspects of the site
BTCEXP_NO_RATES=false # enables querying of exchange rate data
BTCEXP_SLOW_DEVICE_MODE=false # enables resource-intensive tasks (UTXO set query, 24hr volume querying) that are inappropriate for "slow" devices
BTCEXP_ADDRESS_API=electrum # use electrum-protocol servers for address lookups
BTCEXP_ELECTRUM_SERVERS=tcp://your-electrum-protocol-server-host:50001 # address(es) for my electrum-protocol server(s)
BTCEXP_IPSTACK_APIKEY=your-api-key # enable peer ip geo-location
BTCEXP_MAPBOX_APIKEY=your-api-key # enable map of peer locations
SSO authentication
You can configure SSO authentication similar to what ThunderHub and RTL provide.
To enable it, make sure BTCEXP_BASIC_AUTH_PASSWORD
is not set and set BTCEXP_SSO_TOKEN_FILE
to point to a file write-accessible by btc-rpc-explorer.
Then to access btc-rpc-explorer, your SSO provider needs to read the token from this file and set it in URL parameter token
.
For security reasons the token changes with each login, so the SSO provider needs to read it each time!
After successful access with the token, a cookie is set for authentication, so you don't need to worry about it anymore.
To improve user experience you can set BTCEXP_SSO_LOGIN_REDIRECT_URL
to the URL of your SSO provider.
This will cause users to be redirected to your login page if needed.
Run via Docker
docker build -t btc-rpc-explorer .
docker run -it -p 3002:3002 -e BTCEXP_HOST=0.0.0.0 btc-rpc-explorer
Reverse proxy with HTTPS
See instructions here for using nginx+certbot (letsencrypt) for an HTTPS-accessible, reverse-proxied site.
Support
If you get value from this project, please consider supporting my work with a donation. All donations are truly appreciated.
Donate via BTC Pay Server:
Or, via a lightning address:
Top Related Projects
Explorer for Bitcoin and Liquid
A full stack for bitcoin and blockchain-based applications
A javascript Bitcoin library for node.js and browsers.
Accept Bitcoin payments. Free, open-source & self-hosted, Bitcoin payment processor.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot