new link added

master
moneroexamples 7 years ago
parent 4c432be311
commit a1d977ba2a

@ -1,6 +1,6 @@
# Onion Monero Blockchain Explorer # Onion Monero Blockchain Explorer
Currently available Monero blockchain explorers have several limitations which are of Currently available Monero blockchain explorers have several limitations which are of
special importance to privacy-oriented users: special importance to privacy-oriented users:
- they use JavaScript, - they use JavaScript,
@ -13,10 +13,10 @@ special importance to privacy-oriented users:
In this example, these limitations are addressed by development of In this example, these limitations are addressed by development of
an Onion Monero Blockchain Explorer. The example not only shows how to use an Onion Monero Blockchain Explorer. The example not only shows how to use
Monero C++ libraries, but also demonstrates how to use: Monero C++ libraries, but also demonstrates how to use:
- [crow](https://github.com/ipkn/crow) - C++ micro web framework - [crow](https://github.com/ipkn/crow) - C++ micro web framework
- [mstch](https://github.com/no1msd/mstch) - C++ {{mustache}} templates - [mstch](https://github.com/no1msd/mstch) - C++ {{mustache}} templates
- [json](https://github.com/nlohmann/json) - JSON for Modern C++ - [json](https://github.com/nlohmann/json) - JSON for Modern C++
- [fmt](https://github.com/fmtlib/fmt) - Small, safe and fast string formatting library - [fmt](https://github.com/fmtlib/fmt) - Small, safe and fast string formatting library
@ -24,28 +24,28 @@ Monero C++ libraries, but also demonstrates how to use:
## Addresses ## Addresses
Tor users: Tor users:
- [http://dvwae436pd7nt4bc.onion](http://dvwae436pd7nt4bc.onion) (Front-end templates are [maintained by @suhz](https://github.com/suhz/onion-monero-blockchain-explorer/tree/moneroexplorer.com/src/templates)). - [http://dvwae436pd7nt4bc.onion](http://dvwae436pd7nt4bc.onion) (Front-end templates are [maintained by @suhz](https://github.com/suhz/onion-monero-blockchain-explorer/tree/moneroexplorer.com/src/templates)).
Clearnet versions:
Clearnet versions:
- [https://labor.serveo.net/](https://labor.serveo.net/) - temprorary link (slow), bleading edge version.
- [https://xmrchain.net/](https://xmrchain.net/) - https enabled, most popular and very stable. - [https://xmrchain.net/](https://xmrchain.net/) - https enabled, most popular and very stable.
- [https://MoneroExplorer.com/](https://moneroexplorer.com/) - nice looking one, https enabled. - [https://MoneroExplorer.com/](https://moneroexplorer.com/) - nice looking one, https enabled.
- [https://monerohash.com/explorer/](https://monerohash.com/explorer/) - nice looking one, https enabled. - [https://monerohash.com/explorer/](https://monerohash.com/explorer/) - nice looking one, https enabled.
- [http://explore.MoneroWorld.com](http://explore.moneroworld.com) - same as the second one. - [http://explore.MoneroWorld.com](http://explore.moneroworld.com) - same as the second one.
- [https://moneroexplorer.pro/](https://moneroexplorer.pro/) - nice looking one, https enabled. - [https://moneroexplorer.pro/](https://moneroexplorer.pro/) - nice looking one, https enabled.
- [http://monerochain.com/](http://monerochain.com/) - JSON API based, multiple nodes. - [http://monerochain.com/](http://monerochain.com/) - JSON API based, multiple nodes.
- [https://blox.minexmr.com/](https://blox.minexmr.com/) - - https enabled. - [https://blox.minexmr.com/](https://blox.minexmr.com/) - - https enabled.
Testnet version: Testnet version:
- [http://nimis.serveo.net/](http://nimis.serveo.net/) - bleeding edge version (down currently). - [http://nimis.serveo.net/](http://nimis.serveo.net/) - bleeding edge version (down currently).
- [https://testnet.xmrchain.com/](https://testnet.xmrchain.com/) - https enabled. - [https://testnet.xmrchain.com/](https://testnet.xmrchain.com/) - https enabled.
- [https://explorer.monero-otc.com/](https://explorer.monero-otc.com/) - https enabled. - [https://explorer.monero-otc.com/](https://explorer.monero-otc.com/) - https enabled.
Stagenet version: Stagenet version:
- [http://162.210.173.150:8083/](http://162.210.173.150:8083/) - recent version. - [http://162.210.173.150:8083/](http://162.210.173.150:8083/) - recent version.
i2p users (main Monero network): i2p users (main Monero network):
@ -57,7 +57,7 @@ Alternative block explorers:
- [https://monerobase.com](https://monerobase.com/) - [https://monerobase.com](https://monerobase.com/)
- [http://chainradar.com](http://chainradar.com/xmr/blocks) - [http://chainradar.com](http://chainradar.com/xmr/blocks)
## Onion Monero Blockchain Explorer features ## Onion Monero Blockchain Explorer features
The key features of the Onion Monero Blockchain Explorer are: The key features of the Onion Monero Blockchain Explorer are:
@ -87,8 +87,8 @@ The key features of the Onion Monero Blockchain Explorer are:
Current development branch: Current development branch:
- https://github.com/moneroexamples/onion-monero-blockchain-explorer/tree/devel - https://github.com/moneroexamples/onion-monero-blockchain-explorer/tree/devel
## Compilation on Ubuntu 16.04 ## Compilation on Ubuntu 16.04
@ -102,7 +102,7 @@ sudo apt update
sudo apt install git build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libcurl4-openssl-dev libgtest-dev libreadline-dev libzmq3-dev libsodium-dev sudo apt install git build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libcurl4-openssl-dev libgtest-dev libreadline-dev libzmq3-dev libsodium-dev
# go to home folder # go to home folder
cd ~ cd ~
git clone --recursive https://github.com/monero-project/monero git clone --recursive https://github.com/monero-project/monero
@ -136,7 +136,7 @@ mkdir build && cd build
# create the makefile # create the makefile
cmake .. cmake ..
# altearnatively can use: cmake -DMONERO_DIR=/path/to/monero_folder .. # altearnatively can use: cmake -DMONERO_DIR=/path/to/monero_folder ..
# if monero is not in ~/monero # if monero is not in ~/monero
# #
# also can build with ASAN (sanitizers), for example # also can build with ASAN (sanitizers), for example
@ -147,8 +147,8 @@ make
``` ```
When compilation finishes executable `xmrblocks` should be created. Before running When compilation finishes executable `xmrblocks` should be created. Before running
please make sure that `~/Downloads` folder exists and is writable. please make sure that `~/Downloads` folder exists and is writable.
Time zone library that explorer is using, puts there Time zone library that explorer is using, puts there
its database of time zone offsets its database of time zone offsets
To run it: To run it:
@ -157,7 +157,7 @@ To run it:
``` ```
By default it will look for blockchain in its default location i.e., `~/.bitmonero/lmdb`. By default it will look for blockchain in its default location i.e., `~/.bitmonero/lmdb`.
You can use `--bc-path` option if its in different location. You can use `--bc-path` option if its in different location.
Example output: Example output:
```bash ```bash
@ -177,7 +177,7 @@ xmrblocks, Onion Monero Blockchain Explorer:
-s [ --stagenet ] [=arg(=1)] (=0) use stagenet blockchain -s [ --stagenet ] [=arg(=1)] (=0) use stagenet blockchain
--enable-pusher [=arg(=1)] (=0) enable signed transaction pusher --enable-pusher [=arg(=1)] (=0) enable signed transaction pusher
--enable-mixin-details [=arg(=1)] (=0) --enable-mixin-details [=arg(=1)] (=0)
enable mixin details for key images, enable mixin details for key images,
e.g., timescale, mixin of mixins, in tx e.g., timescale, mixin of mixins, in tx
context context
--enable-key-image-checker [=arg(=1)] (=0) --enable-key-image-checker [=arg(=1)] (=0)
@ -186,38 +186,38 @@ xmrblocks, Onion Monero Blockchain Explorer:
enable outputs key file checker enable outputs key file checker
--enable-json-api [=arg(=1)] (=1) enable JSON REST api --enable-json-api [=arg(=1)] (=1) enable JSON REST api
--enable-tx-cache [=arg(=1)] (=0) enable caching of transaction details --enable-tx-cache [=arg(=1)] (=0) enable caching of transaction details
--show-cache-times [=arg(=1)] (=0) show times of getting data from cache --show-cache-times [=arg(=1)] (=0) show times of getting data from cache
vs no cache vs no cache
--enable-block-cache [=arg(=1)] (=0) enable caching of block details --enable-block-cache [=arg(=1)] (=0) enable caching of block details
--enable-js [=arg(=1)] (=0) enable checking outputs and proving txs --enable-js [=arg(=1)] (=0) enable checking outputs and proving txs
using JavaScript on client side using JavaScript on client side
--enable-autorefresh-option [=arg(=1)] (=0) --enable-autorefresh-option [=arg(=1)] (=0)
enable users to have the index page on enable users to have the index page on
autorefresh autorefresh
--enable-emission-monitor [=arg(=1)] (=0) --enable-emission-monitor [=arg(=1)] (=0)
enable Monero total emission monitoring enable Monero total emission monitoring
thread thread
-p [ --port ] arg (=8081) default explorer port -p [ --port ] arg (=8081) default explorer port
--testnet-url arg you can specify testnet url, if you run --testnet-url arg you can specify testnet url, if you run
it on mainnet or stagenet. link will it on mainnet or stagenet. link will
show on front page to testnet explorer show on front page to testnet explorer
--stagenet-url arg you can specify stagenet url, if you --stagenet-url arg you can specify stagenet url, if you
run it on mainnet or testnet. link will run it on mainnet or testnet. link will
show on front page to stagenet explorer show on front page to stagenet explorer
--mainnet-url arg you can specify mainnet url, if you run --mainnet-url arg you can specify mainnet url, if you run
it on testnet or stagenet. link will it on testnet or stagenet. link will
show on front page to mainnet explorer show on front page to mainnet explorer
--no-blocks-on-index arg (=10) number of last blocks to be shown on --no-blocks-on-index arg (=10) number of last blocks to be shown on
index page index page
--mempool-info-timeout arg (=5000) maximum time, in milliseconds, to wait --mempool-info-timeout arg (=5000) maximum time, in milliseconds, to wait
for mempool data for the front page for mempool data for the front page
--mempool-refresh-time arg (=5) time, in seconds, for each refresh of --mempool-refresh-time arg (=5) time, in seconds, for each refresh of
mempool state mempool state
-b [ --bc-path ] arg path to lmdb folder of the blockchain, -b [ --bc-path ] arg path to lmdb folder of the blockchain,
e.g., ~/.bitmonero/lmdb e.g., ~/.bitmonero/lmdb
--ssl-crt-file arg path to crt file for ssl (https) --ssl-crt-file arg path to crt file for ssl (https)
functionality functionality
--ssl-key-file arg path to key file for ssl (https) --ssl-key-file arg path to key file for ssl (https)
functionality functionality
-d [ --deamon-url ] arg (=http:://127.0.0.1:18081) -d [ --deamon-url ] arg (=http:://127.0.0.1:18081)
Monero deamon url Monero deamon url
@ -235,57 +235,57 @@ alias xmrblockstestnet='~/onion-monero-blockchain-explorer/build/xmrblocks -t --
These are aliases similar to those used for http://139.162.32.245:8081/ and http://139.162.32.245:8082/, respectively. These are aliases similar to those used for http://139.162.32.245:8081/ and http://139.162.32.245:8082/, respectively.
## Enable Monero emission ## Enable Monero emission
Obtaining current Monero emission amount is not straight forward. Thus, by default it is Obtaining current Monero emission amount is not straight forward. Thus, by default it is
disabled. To enable it use `--enable-emission-monitor` flag, e.g., disabled. To enable it use `--enable-emission-monitor` flag, e.g.,
```bash ```bash
xmrblocks --enable-emission-monitor xmrblocks --enable-emission-monitor
``` ```
This flag will enable emission monitoring thread. When started, the thread This flag will enable emission monitoring thread. When started, the thread
will initially scan the entire blockchain, and calculate the cumulative emission based on each block. will initially scan the entire blockchain, and calculate the cumulative emission based on each block.
Since it is a separate thread, the explorer will work as usual during this time. Since it is a separate thread, the explorer will work as usual during this time.
Every 10000 blocks, the thread will save current emission in a file, by default, Every 10000 blocks, the thread will save current emission in a file, by default,
in `~/.bitmonero/lmdb/emission_amount.txt`. For testnet or stagenet networks, in `~/.bitmonero/lmdb/emission_amount.txt`. For testnet or stagenet networks,
it is `~/.bitmonero/testnet/lmdb/emission_amount.txt` or `~/.bitmonero/stagenet/lmdb/emission_amount.txt`. This file is used so that we don't it is `~/.bitmonero/testnet/lmdb/emission_amount.txt` or `~/.bitmonero/stagenet/lmdb/emission_amount.txt`. This file is used so that we don't
need to rescan entire blockchain whenever the explorer is restarted. When the need to rescan entire blockchain whenever the explorer is restarted. When the
explorer restarts, the thread will first check if `~/.bitmonero/lmdb/emission_amount.txt` explorer restarts, the thread will first check if `~/.bitmonero/lmdb/emission_amount.txt`
is present, read its values, and continue from there if possible. Subsequently, only the initial is present, read its values, and continue from there if possible. Subsequently, only the initial
use of the tread is time consuming. Once the thread scans the entire blockchain, it updates use of the tread is time consuming. Once the thread scans the entire blockchain, it updates
the emission amount using new blocks as they come. Since the explorer writes this file, there can the emission amount using new blocks as they come. Since the explorer writes this file, there can
be only one instance of it running for mainnet, testnet and stagenet. Thus, for example, you cant have be only one instance of it running for mainnet, testnet and stagenet. Thus, for example, you cant have
two explorers for mainnet two explorers for mainnet
running at the same time, as they will be trying to write and read the same file at the same time, running at the same time, as they will be trying to write and read the same file at the same time,
leading to unexpected results. Off course having one instance for mainnet and one instance for testnet leading to unexpected results. Off course having one instance for mainnet and one instance for testnet
is fine, as they write to different files. is fine, as they write to different files.
When the emission monitor is enabled, information about current emission of coinbase and fees is When the emission monitor is enabled, information about current emission of coinbase and fees is
displayed on the front page, e.g., : displayed on the front page, e.g., :
``` ```
Monero emission (fees) is 14485540.430 (52545.373) as of 1313448 block Monero emission (fees) is 14485540.430 (52545.373) as of 1313448 block
``` ```
The values given, can be checked using Monero daemon's `print_coinbase_tx_sum` command. The values given, can be checked using Monero daemon's `print_coinbase_tx_sum` command.
For example, for the above example: `print_coinbase_tx_sum 0 1313449`. For example, for the above example: `print_coinbase_tx_sum 0 1313449`.
To disable the monitor, simply restart the explorer without `--enable-emission-monitor` flag. To disable the monitor, simply restart the explorer without `--enable-emission-monitor` flag.
## Enable JavaScript for decoding proving transactions ## Enable JavaScript for decoding proving transactions
By default, decoding and proving tx's outputs are done on the server side. To do this on the client side By default, decoding and proving tx's outputs are done on the server side. To do this on the client side
(private view and tx keys are not send to the server) JavaScript-based decoding can be enabled: (private view and tx keys are not send to the server) JavaScript-based decoding can be enabled:
``` ```
xmrblocks --enable-js xmrblocks --enable-js
``` ```
## Enable SSL (https) ## Enable SSL (https)
By default, the explorer does not use ssl. But it has such a functionality. By default, the explorer does not use ssl. But it has such a functionality.
As an example, you can generate your own ssl certificates as follows: As an example, you can generate your own ssl certificates as follows:
@ -299,12 +299,12 @@ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
Having the `crt` and `key` files, run `xmrblocks` in the following way: Having the `crt` and `key` files, run `xmrblocks` in the following way:
```bash ```bash
./xmrblocks --ssl-crt-file=/tmp/server.crt --ssl-key-file=/tmp/server.key ./xmrblocks --ssl-crt-file=/tmp/server.crt --ssl-key-file=/tmp/server.key
``` ```
Note: Because we generated our own certificate, modern browsers will complain Note: Because we generated our own certificate, modern browsers will complain
about it as they cant verify the signatures against any third party. So probably about it as they cant verify the signatures against any third party. So probably
for any practical use need to have properly issued ssl certificates. for any practical use need to have properly issued ssl certificates.
## JSON API ## JSON API
@ -573,7 +573,7 @@ Partial results shown:
For `txprove=0` we check which outputs belong to given address and corresponding viewkey. For `txprove=0` we check which outputs belong to given address and corresponding viewkey.
For `txprove=1` we use to prove to the recipient that we sent them founds. For `txprove=1` we use to prove to the recipient that we sent them founds.
For this, we use recipient's address and our tx private key as a viewkey value, For this, we use recipient's address and our tx private key as a viewkey value,
i.e., `viewkey=<tx_private_key>` i.e., `viewkey=<tx_private_key>`
Checking outputs: Checking outputs:
@ -611,10 +611,10 @@ curl -w "\n" -X GET "http://127.0.0.1:8081/api/outputs?txhash=17049bc5f2d9fbca1
Proving transfer: Proving transfer:
We use recipient's address (i.e. not our address from which we sent xmr to recipient). We use recipient's address (i.e. not our address from which we sent xmr to recipient).
For the viewkey, we use `tx_private_key` (although the GET variable is still called `viewkey`) that we obtained by sending this txs. For the viewkey, we use `tx_private_key` (although the GET variable is still called `viewkey`) that we obtained by sending this txs.
```bash ```bash
# this is for testnet transaction # this is for testnet transaction
curl -w "\n" -X GET "http://127.0.0.1:8082/api/outputs?txhash=94782a8c0aa8d8768afa0c040ef0544b63eb5148ca971a024ac402cad313d3b3&address=9wUf8UcPUtb2huK7RphBw5PFCyKosKxqtGxbcKBDnzTCPrdNfJjLjtuht87zhTgsffCB21qmjxjj18Pw7cBnRctcKHrUB7N&viewkey=e94b5bfc599d2f741d6f07e3ab2a83f915e96fb374dfb2cd3dbe730e34ecb40b&txprove=1" curl -w "\n" -X GET "http://127.0.0.1:8082/api/outputs?txhash=94782a8c0aa8d8768afa0c040ef0544b63eb5148ca971a024ac402cad313d3b3&address=9wUf8UcPUtb2huK7RphBw5PFCyKosKxqtGxbcKBDnzTCPrdNfJjLjtuht87zhTgsffCB21qmjxjj18Pw7cBnRctcKHrUB7N&viewkey=e94b5bfc599d2f741d6f07e3ab2a83f915e96fb374dfb2cd3dbe730e34ecb40b&txprove=1"
``` ```
@ -682,7 +682,7 @@ curl -w "\n" -X GET "http://127.0.0.1:8081/api/networkinfo"
#### api/outputsblocks #### api/outputsblocks
Search for our outputs in last few blocks (up to 5 blocks), using provided address and viewkey. Search for our outputs in last few blocks (up to 5 blocks), using provided address and viewkey.
```bash ```bash
@ -763,7 +763,7 @@ curl -w "\n" -X GET "http://127.0.0.1:8081/api/version"
```json ```json
{ {
"data": { "data": {
"api": 65536, "api": 65536,
"blockchain_height": 1357031, "blockchain_height": 1357031,
"git_branch_name": "update_to_current_monero", "git_branch_name": "update_to_current_monero",
"last_git_commit_date": "2017-07-25", "last_git_commit_date": "2017-07-25",
@ -774,7 +774,7 @@ curl -w "\n" -X GET "http://127.0.0.1:8081/api/version"
} }
``` ```
api number is store as `uint32_t`. In this case `65536` represents api number is store as `uint32_t`. In this case `65536` represents
major version 1 and minor version 0. major version 1 and minor version 0.
In JavaScript to get these numbers, one can do as follows: In JavaScript to get these numbers, one can do as follows:
@ -812,4 +812,3 @@ finished and may not work as intended.
## How can you help? ## How can you help?
Constructive criticism, code and website edits are always good. They can be made through github. Constructive criticism, code and website edits are always good. They can be made through github.

Loading…
Cancel
Save