• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

DashRadar development thread

Is there a donate button???

I would also love the option of sound effects at each transaction with a choice of perhaps 4-6 sounds:

wind chimes
simple bell
old fashioned cash register
bubbles popping


I have noticed that if I have Dashradar on a tab in Chrome, it doesn't run if it's not the active tab. Is that a Chrome thing or a DashRadar thing? No big deal either way.

Cool tool.

Carry on.
 
Haven't had much time to develop this but here is something that you can play with if you want: http://dashradar.com:7474/browser/. With that you can query the dash blockchain using the neo4j cypher query language.

Here is some example queries that you can try executing:

Count the number of transactions between blocks 600000 and 700000:
Code:
MATCH (tx:Transaction)-[:INCLUDED_IN]->(b:Block) where (b.height > 600000 AND b.height < 700000) RETURN count(tx);


Count the number of unspent outputs:
Code:
MATCH (n:TransactionOutput) where NOT (n)-[:SPENT_IN]->(:TransactionInput) return count(n);


Return the distribution of how many previous mixing transactions mixing transactions have for a given denomination. Only consider transactions that happened after block 600000. Denominations(pstype=denom): (7=0.01), (6=0.1), (5=1.0), (4=10.0) .
Code:
MATCH (tx:Transaction {pstype:7})-[conn:PREVIOUS_ROUND]->(:Transaction)-[:INCLUDED_IN]->(b:Block) where b.height>600000 with tx, count(conn) as connection_count with connection_count, count(tx) as tx_count return connection_count, tx_count ORDER BY connection_count;


To get an idea of the database schema you can click the icon on the top left. As you can see the database does not currently contain information about addresses. Just blocks and the transaction graph.

The database is currently not automatically updated. To find the last block height in the database you can run
Code:
MATCH (b:Block) RETURN b.height ORDER BY b.height DESC LIMIT 1;
 
Last edited:
Update
  • Added sound effects to live mode as suggested by @solarguy
    • Sound can be disabled in settings
  • Added "max transactions in live mode" to settings to prevent lag when running live mode for a long time
    • Oldest transactions are removed when this limit is reached
  • Added more stuff to information page/tab
    • Used technologies
    • Link to this thread
    • Contact email
    • Donation address
 
Update

Check out https://dashradar.com/cypher. It's related to my previous post where I was talking about neo4j and cypher queries.

In that page you can write (or use someone else's) cypher queries and instantly display the results in a line, bar or pie chart. You can share your query with others by copying the link next to the execute button. The example on the page shows how to get average privatesend transaction amount in dash for each day.

Currently first column of the results is used for x axis in line chart and labels in bar and pie charts. Second column is used for y axis / label values. If the first column name is 'date' then the column values are assumed to be unix timestamps and are converted to dates in the charts.

It's still a work in progress. In the future I'm planning to make the individual results (table, line chart, bar chart, ...) shareable with a similar link. I might also make sharing images to charts possible with a similar link (better for embedding in pages, forum posts, etc). Also better support for multiple data series isplanned.

I moved the neo4j browser from http://dashradar.com:7474/browser/ to https://1.dashradar.com:7473/browser/. You can view that page to view the database chema. The database is read-only, it's not automatically updated and there is a 60 second execution limit for the queries to avoid someone accidentally jamming the server.
 
Last edited:
Last edited:
I've noticed that querying certain stuff from the database is quite slow and the queries can timeout (over 60sec). As a result I've decided to add hourly data points that represent the total value of things since the first block.
It would contain for example the following things:
  • timestamp
  • total number of blocks
  • total number of transactions
  • total number of inputs
  • total number of outputs
  • total output volume (in duffs)
  • total fees volume (in duffs)
  • total block size (in bytes)
  • total transaction size (in bytes)
In order to calculate to calculate a value (e.g. total fees) in a time period (e.g. day) you could just find the starting hour and ending hour and then subtract the value of starting hour from the value of the ending hour. This should hopefully allow certain things to be queried over 100x faster.

No ETA on this update. It's just a plan.
 
Update
  • Added cumulative data to the neo4j database
  • Added nodes with 'BlockChainTotals' label. For each of these nodes there exists a block with the same height and time properties
    • BlockChainTotals
      • height
      • time
      • tx_count
      • input_count
      • output_count
      • total_block_size
      • total_transaction_size
      • total_generated_sat
      • total_output_volume_sat
      • privatesend_tx_count
      • privatesend_mixing_10_0_count
      • privatesend_mixing_1_0_count
      • privatesend_mixing_0_1_count
      • privatesend_mixing_0_01_count
  • All properties except height and time are cumulated values since the genesis block.
  • Now it is also possible to generate image link from the charts
Below are some examples how to use BlockChainTotals to generate graphs.

Historical unspent output count
line.png


Transactions per day
line.png

Transactions per day (2017)
line.png



Coins generated per day
line.png


There is probably still many bugs. It currently only works well for time series data where first column in result must be called 'date' and represent epoch timestamp. Second column column should be a number. Third column (optional) is a series label that can be used for displaying multi series charts. I will add example with 3 columns later.
 
Last edited:
Nice! I created few graphs based on your examples (mostly a shameless copy-paste with few tweaks :oops:) and it's very interesting to see some trends.
On a side note, I think most common/popular requests deserve a dedicated page/website like https://blockchain.info/charts with static previews :rolleyes:
 
Nice! I created few graphs based on your examples (mostly a shameless copy-paste with few tweaks :oops:) and it's very interesting to see some trends.
On a side note, I think most common/popular requests deserve a dedicated page/website like https://blockchain.info/charts with static previews :rolleyes:
Thanks. Let me know if you need help creating a specific chart. And yes I'm planning to create a page with the most interesting charts. When the feature is more ready I'll probably create a landing page with links to 1) The interactive graph explorer 2) The cypher module 3) Regular table based block explorer(TODO). The cypher module would have pre-made charts but there would a link to the editor for each of them.
 
Update
  • Added a collection of daily charts
    • Start date and end date can be changed
    • 7 day and 30 day simple moving averages (SMA) can be used
  • Added navbar for navigating between charts and the transaction graph visualizer
  • Added toggle fullscreen button to transaction visualizer and and individual charts
  • Neo4j database changes
    • Added "Day" nodes that are linked to last "BlockChainTotals" node of each day.
      • Makes querying daily information much faster. Also makes many queries shorter.
      • Example in the default query
    • Changed "total_generated_sat" of BlockChainTotals to "total_block_rewards_sat" because it also includes fees.
    • Added "total_fees_sat" to BlockChainTotals
 
Update
  • Added a collection of daily charts
    • Start date and end date can be changed
    • 7 day and 30 day simple moving averages (SMA) can be used
  • Added navbar for navigating between charts and the transaction graph visualizer
  • Added toggle fullscreen button to transaction visualizer and and individual charts
  • Neo4j database changes
    • Added "Day" nodes that are linked to last "BlockChainTotals" node of each day.
      • Makes querying daily information much faster. Also makes many queries shorter.
      • Example in the default query
    • Changed "total_generated_sat" of BlockChainTotals to "total_block_rewards_sat" because it also includes fees.
    • Added "total_fees_sat" to BlockChainTotals
Awesome! :)

Few suggestions:
- "fees per kb (Dash)" is 0.000001234323432 or say 7.9234234345345e-7 (just some random examples but you get the idea) and it's not human friendly imo :) IMO it would be much better to have "fees per byte (duff)" like sat/byte in Bitcoin (should be integers, because you can't divide duffs or satoshis into smaller units);
- also "for fees per kb" - it's not clear is it avg or median, would be nice to have both if possible;
- would be nice to see avg/median for number of ins/outs for all/ps/non-ps txes - the last graph shows avg for all txes, so it's mostly a ps/non-ps ratio which is interesting too but says nothing about actual trends for various types of txes.

Thanks :)

EDIT: also gray background and gray font is smth to tweak imo, it's hard to read the text...
 
Last edited:
Awesome! :)

Few suggestions:
- "fees per kb (Dash)" is 0.000001234323432 or say 7.9234234345345e-7 (just some random examples but you get the idea) and it's not human friendly imo :) IMO it would be much better to have "fees per byte (duff)" like sat/byte in Bitcoin (should be integers, because you can't divide duffs or satoshis into smaller units);
- also "for fees per kb" - it's not clear is it avg or median, would be nice to have both if possible;
- would be nice to see avg/median for number of ins/outs for all/ps/non-ps txes - the last graph shows avg for all txes, so it's mostly a ps/non-ps ratio which is interesting too but says nothing about actual trends for various types of txes.

Thanks :)
Thanks for suggestions. I will definitely change fee chart to show in bytes, maybe also duffs.

Everything is currently using mean but I will think about adding medians. I might need to precompute daily medians to the neo4j database as median can't be quickly computed from the current format.

I just updated with a version that should fix fullscreen issues with other browsers than firefox.
 
Awesome! :)

Few suggestions:
- "fees per kb (Dash)" is 0.000001234323432 or say 7.9234234345345e-7 (just some random examples but you get the idea) and it's not human friendly imo :) IMO it would be much better to have "fees per byte (duff)" like sat/byte in Bitcoin (should be integers, because you can't divide duffs or satoshis into smaller units);
- also "for fees per kb" - it's not clear is it avg or median, would be nice to have both if possible;
- would be nice to see avg/median for number of ins/outs for all/ps/non-ps txes - the last graph shows avg for all txes, so it's mostly a ps/non-ps ratio which is interesting too but says nothing about actual trends for various types of txes.

Thanks :)

EDIT: also gray background and gray font is smth to tweak imo, it's hard to read the text...
Just changed "Fees per kB (Dash)" to "Average fee per byte (Duffs)". It still has decimals because it's an average.
 
Back
Top