|
| 1 | +# Qbit Explorer |
| 2 | + |
| 3 | +This Luxor fork adds a `QBT` profile to btc-rpc-explorer v3. It connects directly to Qbit Core JSON-RPC and does not require a separate explorer database. |
| 4 | + |
| 5 | +## Supported Qbit behavior |
| 6 | + |
| 7 | +- Mainnet, testnet3, testnet4, signet, and regtest network identities |
| 8 | +- QBT, mQBT, µQBT, and bits display units |
| 9 | +- 60-second aggregate block target |
| 10 | +- 210 QBT initial block subsidy |
| 11 | +- Subsidy step-down every 43,200 blocks by `598/625` (regtest uses 150 blocks) |
| 12 | +- P2MR addresses returned by Qbit Core's current RPC shape |
| 13 | +- Block, transaction, mempool, peer, node-status, and RPC views |
| 14 | + |
| 15 | +Select the Qbit profile with: |
| 16 | + |
| 17 | +```text |
| 18 | +BTCEXP_COIN=QBT |
| 19 | +``` |
| 20 | + |
| 21 | +## Run Qbit mainnet and the explorer |
| 22 | + |
| 23 | +The included Compose file starts the Luxor Qbit v1.0.0 image, enables `txindex`, retains mainnet data in a named volume, and exposes only the explorer HTTP port on localhost: |
| 24 | + |
| 25 | +```bash |
| 26 | +export QBIT_RPC_PASSWORD="replace-with-a-local-secret" |
| 27 | +docker compose -f docker-compose.qbit.yml up --build -d |
| 28 | +``` |
| 29 | + |
| 30 | +Open <http://127.0.0.1:3002>. |
| 31 | + |
| 32 | +Check synchronization: |
| 33 | + |
| 34 | +```bash |
| 35 | +docker compose -f docker-compose.qbit.yml exec qbit \ |
| 36 | + sh -lc 'qbit-cli -rpcuser="$QBIT_RPC_USER" -rpcpassword="$QBIT_RPC_PASSWORD" getblockchaininfo' |
| 37 | +``` |
| 38 | + |
| 39 | +Stop services without deleting chain data: |
| 40 | + |
| 41 | +```bash |
| 42 | +docker compose -f docker-compose.qbit.yml down |
| 43 | +``` |
| 44 | + |
| 45 | +Delete the downloaded chain data only when intentional: |
| 46 | + |
| 47 | +```bash |
| 48 | +docker compose -f docker-compose.qbit.yml down --volumes |
| 49 | +``` |
| 50 | + |
| 51 | +The Qbit daemon image currently targets `linux/amd64`. Docker Desktop can emulate it on Apple Silicon. The explorer image is built for both `linux/amd64` and `linux/arm64`. |
| 52 | + |
| 53 | +## Connect to an existing Qbit node |
| 54 | + |
| 55 | +Build the explorer: |
| 56 | + |
| 57 | +```bash |
| 58 | +docker build -t luxor-qbit-explorer:local . |
| 59 | +``` |
| 60 | + |
| 61 | +If the node and explorer share a Docker network named `qbit-local`: |
| 62 | + |
| 63 | +```bash |
| 64 | +docker run --rm \ |
| 65 | + --name qbit-explorer \ |
| 66 | + --network qbit-local \ |
| 67 | + -p 127.0.0.1:3002:3002 \ |
| 68 | + -e BTCEXP_COIN=QBT \ |
| 69 | + -e BTCEXP_HOST=0.0.0.0 \ |
| 70 | + -e BTCEXP_BITCOIND_HOST=qbit-mainnet \ |
| 71 | + -e BTCEXP_BITCOIND_PORT=8352 \ |
| 72 | + -e BTCEXP_BITCOIND_USER=qbitexplorer \ |
| 73 | + -e BTCEXP_BITCOIND_PASS="replace-with-your-rpc-password" \ |
| 74 | + -e BTCEXP_BITCOIND_RPC_TIMEOUT=30000 \ |
| 75 | + -e BTCEXP_NO_RATES=true \ |
| 76 | + -e BTCEXP_PRIVACY_MODE=true \ |
| 77 | + luxor-qbit-explorer:local |
| 78 | +``` |
| 79 | + |
| 80 | +For a host-installed node, point `BTCEXP_BITCOIND_HOST` at an address reachable from the container. Do not expose Qbit RPC to the public internet. |
| 81 | + |
| 82 | +## Required Qbit node settings |
| 83 | + |
| 84 | +The explorer requires RPC access. An archive node with transaction indexing provides the complete experience: |
| 85 | + |
| 86 | +```ini |
| 87 | +server=1 |
| 88 | +txindex=1 |
| 89 | +``` |
| 90 | + |
| 91 | +Qbit mainnet uses RPC port `8352` and P2P port `8355`. |
| 92 | + |
| 93 | +## Container image |
| 94 | + |
| 95 | +The GitHub workflow publishes to: |
| 96 | + |
| 97 | +```text |
| 98 | +ghcr.io/luxorlabs/luxor-qbit-explorer |
| 99 | +``` |
| 100 | + |
| 101 | +Pushes to `master` publish `latest` and `sha-<short-sha>`. Tags such as `v1.2.0` publish both `v1.2.0` and `1.2.0`. |
| 102 | + |
| 103 | +## Limitations |
| 104 | + |
| 105 | +- Address transaction history requires a Qbit-compatible Electrum server. Without one, block and transaction exploration still works through Qbit Core and `txindex`. |
| 106 | +- Bitcoin-specific historical and external exchange-rate integrations are disabled for Qbit. |
| 107 | +- Keep the UI bound to localhost or protect it with `BTCEXP_BASIC_AUTH_PASSWORD` before exposing it beyond a trusted network. |
0 commit comments