Coder Social home page Coder Social logo

namecoin / nmc-rpc-explorer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from janoside/btc-rpc-explorer

0.0 1.0 1.0 15.71 MB

Database-free, self-hosted Namecoin explorer, via RPC to Namecoin Core.

Home Page: https://bitcoinexplorer.org

License: MIT License

JavaScript 63.45% CSS 1.42% Dockerfile 0.02% Pug 34.14% SCSS 0.97%
hacktoberfest express json-rpc namecoin nodejs rpc bootstrap5 namecoin-blockchain namecoin-explorer namecoind nmc-rpc-explorer cryptography internet-freedom privacy security decentralized blockchain cryptocurrency p2p anticensorship

nmc-rpc-explorer's Introduction

BTC RPC Explorer

Self-Hosted Bitcoin explorer for everyone running Bitcoin Core.

npm version NPM downloads


homepage

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

  1. Install Bitcoin Core - instructions. Ensure that Bitcoin Core's' RPC server is enabled (server=1).
  2. Allow Bitcoin Core to synchronize with the Bitcoin network (you can use this tool while sychronizing, but some pages may fail).
  3. Install Node.js (12.9+ required, 16+ 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:

  1. git clone https://github.com/janoside/btc-rpc-explorer
  2. cd btc-rpc-explorer
  3. npm install
  4. 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.
  1. git clone https://aur.archlinux.org/btc-rpc-explorer.git
  2. cd btc-rpc-explorer
  3. makepkg -csi
  4. 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:

  1. ~/.config/btc-rpc-explorer.env
  2. .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

  1. docker build -t btc-rpc-explorer .
  2. 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:

[email protected]

nmc-rpc-explorer's People

Contributors

janoside avatar shesek avatar kixunil avatar pointbiz avatar cd2357 avatar sangaman avatar tyzbit avatar ketominer avatar guggero avatar nerfzooka avatar lukechilds avatar jsarenik avatar qshuai avatar yamada-guro-baru avatar abhishandy avatar v0s avatar oktapodia avatar pantamis avatar periodic1236 avatar josephgoulden avatar jonasschnelli avatar henrikuittinen avatar dougefresh avatar neptunix avatar dirkson643 avatar arno01 avatar aarondewes avatar

Watchers

 avatar

Forkers

isabella232

nmc-rpc-explorer's Issues

Replace gold with uranium

Bitcoin is similar to gold, in that it primarily derives its value from scarcity rather than some external benefit you get by destroying it. In contrast, Namecoin's value is derived from an external benefit you get by destroying it, making Namecoin more like "cryptographic oil/uranium" instead of "cryptographic gold". Thus, it would be symbolically useful to replace the NMC/XAU exchange rate with the exchange rate between Namecoin and oil or uranium. Oil is a less ideal analogy since destroying oil causes global heating as a side effect, while destroying NMC or uranium does not, so let's go with uranium.

Real-time uranium prices are not available because uranium is not traded on a public/open market like other commodities. However, we can get a recent uranium price from the St. Louis Federal Reserve graph download API. The website URL is https://fred.stlouisfed.org/series/PURANUSDM ; the API URL is https://fred.stlouisfed.org/graph/fredgraph.csv?bgcolor=%23e1e9f0&chart_type=line&drp=0&fo=open%20sans&graph_bgcolor=%23ffffff&height=450&mode=fred&recession_bars=off&txtcolor=%23444444&ts=12&tts=12&width=968&nt=0&thu=0&trc=0&show_legend=yes&show_axis_titles=yes&show_tooltip=yes&id=PURANUSDM&scale=left&cosd=1990-01-01&coed=2022-10-01&line_color=%234572a7&link_values=false&line_style=solid&mark_type=none&mw=3&lw=2&ost=-99999&oet=99999&mma=0&fml=a&fq=Monthly&fam=avg&fgst=lin&fgsnd=2020-02-01&line_index=1&transformation=lin&vintage_date=2022-10-01&revision_date=2022-10-01&nd=1990-01-01.

Replace all instances of 2022-10-01 in the URL with the current date.
The result is a CSV file; the final row is the most recent data point, it's a date followed by the price in USD/lb.

(Spinoff of #7)

Replace gold with oil

Bitcoin is similar to gold, in that it primarily derives its value from scarcity rather than some external benefit you get by destroying it. In contrast, Namecoin's value is derived from an external benefit you get by destroying it, making Namecoin more like "cryptographic oil" instead of "cryptographic gold". Thus, it would be symbolically useful to replace the NMC/XAU exchange rate with the NMC/OIL exchange rate. The same quote service works fine with the OIL ticker instead of XAU.

Identify parent chain

It is feasible to identify the parent chain for a sidechain block as follows:

  1. Check bits, timestamp, height, and previous hash of parent block.
  2. Look for match by querying potential parent chains (via Bitcoin Core RPC). There may not be an exact match since the parent chain might have re-orged. However, it will pretty much always be obvious which parent chain is the single close match.

We should do this in order to display the parent chain for each block.

Identify name trades

Name trade transactions look unique because they contain a SIGHASH_SINGLE|SIGHASH_ANYONECANPAY input that is a name input if and only if its corresponding output is not a name output. We should display this status in the transaction view.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.