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

[dashninja.pl] Dash Masternode Ninja - Free Masternode Monitoring

elbereth

Well-known member
Dash Support Group
dashninja-logo48x48.png
Dash Masternode Ninja - Free Masternode Monitoring

My page offers free masternode monitoring tools. Feel free to donate/tip me whenever you feel like it: XkfkHqMnhvQovo7kXQjvnNiFnQhRNZYCsz

On plain internet it uses very secure HTTPS settings and available both on IPv4 and IPv6.
Can be browsed privately using Tor and I2P. This way you don't have to trust me on not logging the queries. :)
You can check the current site status (up or down) from this Status Page.

You need to have JavaScript enabled to use.

Masternode owners : Please help with the funding of Dash Ninja for 2022, vote yes to the proposal : dash-ninja-2022

Blocks Masternodes Payee
Mainnet URL : https://www.dashninja.pl/blocks.html
Mainnet Tor : seuhd5sihasshuqh.onion/blocks.html
Mainnet I2P : dzjzoefy7fx57h5xkdknikvfv3ckbxu2bx5wryn6taud343g2jma.b32.i2p/blocks.html
Testnet URL : https://test.dashninja.pl/blocks.html
Current version: HTML v2.3.9 / JS v2.3.4
(if you see an older version force the refresh by pressing Ctrl+F5)

Get statistics about which pool is updated to latest version of dashd and paying masternodes correctly.

Global Statistics:

AteJSe0.png


Per Miner information:
Click on the pool name/pubkey in the Per Miner statistic to filter and see only blocks found by that pool during last 24h.

IRKXEs8.png


Blocks Detail:
Auto-updates every 2.5 minutes.

Tl1HUWF.png


API:
A "RESTful" API returning JSON can be used to retrieve the data:
End-point: /api/blocks
HTTP Method: GET
HTTP GET Parameters:
  • testnet (mandatory) = 0 for mainnet or 1 for testnet
Result in the data property:
blocks is an array with last 24h blocks for each:
  • BlockId
  • BlockHash
  • BlockMNPayee = What masternode was paid for this block
  • BlockMNValue = How much the masternode was paid
  • BlockSupplyValue = How much coin was generated in that block
  • BlockMNPayed = Was the masternode paid (0 or 1)
  • BlockPoolPubKey = Pool pubkey that found the block (or P2POOL)
  • PoolDescription = Human readable description of the pool pubkey (if known)
  • BlockMNProtocol = ProtocolVersion of the masternode payed (indicates the pool version)
  • BlockTime = When was the block found
  • BlockDifficulty
  • BlockMNValueRatio = Payment ratio (MN/total)
  • BlockMNValueRatioExpected = Payment ratio expected from block template
  • IsSuperBlock = Was this a Super Block (payment of budgets)
  • SuperBlockBudgetName = Super Block Budget Name (v0.12.0.x)
  • BlockDarkSendTXCount = InstantSend transactions count in block
  • MemPoolDarkSendTXCount = InstantSend transactions in mempool
stats is an array with some stats (global, perversion and perminer).

Masternodes Monitoring
Mainnet URL : https://www.dashninja.pl/masternodes.html
Mainnet Tor : seuhd5sihasshuqh.onion/masternodes.html
Mainnet I2P : dzjzoefy7fx57h5xkdknikvfv3ckbxu2bx5wryn6taud343g2jma.b32.i2p/masternodes.html
Testnet URL : https://test.dashninja.pl/masternodes.html
Current version: HTML v2.2.15 / JS v2.3.9
(if you see an older version force the refresh by pressing Ctrl+F5)

Check if your masternode is detected by several monitoring dashd nodes accross Europe.

To show only your nodes:
https://www.dashninja.pl/?mnregexp=...NcT4jWLELckQ9LWTeStftG39ATx4HwQ)#mnlistdetail

oaQdckD.png


API:
A "RESTful" API returning JSON can be used to retrieve the data for your masternode:
End-point: /api/masternodes
HTTP Method: GET
HTTP GET Parameters:
  • testnet (mandatory) = 0 for mainnet or 1 for testnet
  • portcheck = 0 if you don't need/want the portcheck information (faster) or 1 if you do (slower)
  • balance = 0 if you don't need/want the balance information of the pubkey (faster) or 1 of you do (slower)
  • ips = JSON list of ip:p ort masternode info to retrieve, ex: ips=["ip1: port1","ip2: port2"]
  • pubkeys = JSON list of pubkeys masternode info to retrieve, ex: pubkeys=["pubkey1","pubkey2"]
  • vins = JSON list of vins masternode info to retrieve, ex: vins=["outputhash1-outputindex1","outputhash2-outputindex2"]
  • protocol = Don't specify it to use latest (that's usually what you want). Add it if you wish to check old versions (as long as monitoring nodes are still running with this protocol version, ex: 70076 for v0.11.2.23)
  • exstatus = Retrieve an array of extended status from all monitoring nodes on Dash Ninja
Result in the data property is an array of masternodes found from input parameters:
  • MasternodeOutputHash
  • MasternodeOutputIndex
  • MasternodeIP
  • MasternodePort
  • MasternodePubkey
  • MasternodeProtocol
  • MasternodeLastSeen
  • MasternodeActiveSeconds
  • MasternodeLastPaid
  • ActiveCount = How many monitoring nodes (on latest protocol version) see it active (in masternode list and 1)
  • InactiveCount = How many monitoring nodes (on latest protocol version) see it inactive (in masternode list but with 0)
  • UnlistedCount = How many monitoring nodes (on latest protocol version) see it unlisted (not in masternode list)
  • ExStatus (only if exstatus=1)
    • NodeName = id of the Dash Ninja node
    • NodeVersion = version as reported by getinfo of Dash Ninja node
    • NodeProtocol = protocol version as reported by getinfo of Dash Ninja node
    • Status = active/inactive/unlisted as seen by the Dash Ninja Node
    • StatusEx = Exact status code from rpc call as seen by the Dash Ninja Node
  • Portcheck (only if portcheck=1)
    • Result = open/closed
    • SubVer = Complete version string returned by remote dashd
    • NextCheck = Next scheduled check
    • ErrorMessage = Last error message when remote dashd was port checked
    • Country = Country name for IP
    • CountryCode = Country code (2 letters) for IP
  • Balance(only if balance=1)
    • Value
    • LastUpdate

Masternode Detail
Mainnet URL : https://www.dashninja.pl/mndetails.html?mnoutput=
Mainnet Tor : seuhd5sihasshuqh.onion/mndetails.html?mnoutput=
Mainnet I2P : dzjzoefy7fx57h5xkdknikvfv3ckbxu2bx5wryn6taud343g2jma.b32.i2p/mndetails.html?mnoutput=
Testnet URL : https://test.dashninja.pl/mndetails.html?mnoutput=
Add your masternode output hash and index at the end of the URL (hash-index).
Current version: HTML v3.0.0 / JS v3.0.0
(if you see an older version force the refresh by pressing Ctrl+F5)

Check details of your masternode for monitoring info and last expected and actual payments.

8th0vsG.png
 
Last edited:
Budgets Monitoring (Obsolete since v0.12.1):
Mainnet URL : https://www.dashninja.pl/budgets.html
Mainnet Tor : seuhd5sihasshuqh.onion/budgets.html
Testnet URL : https://test.dashninja.pl/budgets.html
Add your masternode output hash and index at the end of the URL (hash-index).
Current version: HTML v1.5.3 / JS v1.5.0
(if you see an older version force the refresh by pressing Ctrl+F5)

Check budget proposals, alloted, final and super-blocks.

Budgets Details (Obsolete since v0.12.1):
Mainnet URL : https://www.dashninja.pl/budgetdetails.html?budgetid=
Mainnet Tor : seuhd5sihasshuqh.onion/budgetdetails.html?budgetid=
Testnet URL : https://test.dashninja.pl/budgetdetails.html?budgetid=
Add the budget hash id at the end of the URL (hash).
Current version: HTML v1.2.2 / JS v1.2.1
(if you see an older version force the refresh by pressing Ctrl+F5)

Check budget details, payments and prebuilt manual votes commands.

Governance Proposal Monitoring:
Mainnet URL : https://www.dashninja.pl/governance.html
Mainnet Tor : seuhd5sihasshuqh.onion/governance.html
Mainnet I2P : dzjzoefy7fx57h5xkdknikvfv3ckbxu2bx5wryn6taud343g2jma.b32.i2p/governance.html
Testnet URL : https://test.dashninja.pl/governance.html
Current version: HTML v1.0.3 / JS v1.0.4
(if you see an older version force the refresh by pressing Ctrl+F5)

Check governance proposals, valid, final and super-blocks.

API (Governance proposals):
A "RESTful" API returning JSON can be used to retrieve the data for governance proposals:
End-point: /api/governanceproposals
Cache time: 120 seconds (not need to refresh more often...)
HTTP Method: GET
HTTP GET Parameters:
  • testnet (mandatory) = 0 for mainnet or 1 for testnet
  • onlyvalid = 0 if you want even non-valid proposal (default) or 1 if you don't
  • balance = 0 if you don't need/want the balance information of the pubkey (faster) or 1 of you do (slower)
  • proposalsnames = JSON list of proposals names ex: proposalsnames=["proposal1","propoal2"]
  • proposalshashes = JSON list of proposals hashes ex: proposalshahes=["deadbeef1","deadbeef2"]
Result in the data property is an array of proposals found from input parameters:
  • Name
  • Hash
  • CollateralHash
  • URL
  • EpochStart = Start of validity
  • EpochEnd = Start of validity
  • MasternodeProtocol
  • MasternodeLastSeen
  • MasternodeActiveSeconds
  • MasternodeLastPaid
  • PaymentAddress = Where will the proposal be paid
  • PaymentAmount = Monthly amount requested
  • AbsoluteYes = How many valid absolute yes - no votes
  • Yes = How many yes votes total
  • No = How many no votes total
  • Abstain = How many abstain votes total
  • BlockchainValid
  • IsValidReason = Reason why the proposal might be invalid
  • CachedValid
  • CachedFunding
  • CachedDelete
  • CachedEndorsed
  • FirstReported = When was proposal first received by the monitoring nodes
  • LastReported = Last time seen by the monitoring nodes

In the result you will also find a stats property:
  • valid = How many valid proposals
  • funded = How many are funded
  • totalmns = How many valid masternodes
  • nextsuperblock = array of info about the next superblock
    • blockheight = What is the expected next superblock height
    • estimatedbudgetamount = Estimation of how much Dash will be available for budgets
    • estimatedblocktime = Estimation of timestamp for next superblock
  • latestblock = Current height of Dash blockchain
API (Governance triggers):
A "RESTful" API returning JSON can be used to retrieve the data for governance triggers:
End-point: /api/governancetriggers
Cache time: 120 seconds (not need to refresh more often...)
HTTP Method: GET
HTTP GET Parameters:
  • testnet (mandatory) = 0 for mainnet or 1 for testnet
  • onlyvalid = 0 if you want even non-valid proposal (default) or 1 if you don't
  • afterblockheight = by default will return all triggers, the best is to call it with current height to only have triggers for future superblocks
Result in the data governancetriggers property is an array of triggers found from input parameters:
  • Hash
  • BlockHeight
  • AbsoluteYes = How many valid absolute yes - no votes
  • Yes = How many yes votes total
  • No = How many no votes total
  • Abstain = How many abstain votes total
  • BlockchainValid
  • IsValidReason = Reason why the trigger might be invalid
  • CachedValid
  • CachedFunding
  • CachedDelete
  • CachedEndorsed
  • FirstReported = When was the trigger first received by the monitoring nodes
  • LastReported = Last time seen by the monitoring nodes
  • PaymentPosition = Payment position in superblock
  • PaymentAddress = Where will the proposal for this position in superblock be paid
  • PaymentAmount = Amount to be paid for this position in superblock
  • PaymentProposalHash = Proposal hash to be paid for this position in superblock
  • PaymentProposalName = Proposal name to be paid for this position in superblock
In the result you will also find a stats property:
  • valid = How many valid proposals

API (Governance superblocks):
A "RESTful" API returning JSON can be used to retrieve the data for governance superblocks (in blockchain paid governance proposals):
End-point: /api/blocks/superblocks
Cache time: 120 seconds (not need to refresh more often...)
HTTP Method: GET
HTTP GET Parameters:
  • testnet (mandatory) = 0 for mainnet or 1 for testnet
  • proposalshash = JSON list of proposals hashes ex: proposalshahes=["deadbeef1","deadbeef2"]
Result in the data superblocks property is an array of uperblocks payments found from input parameters:
  • BlockId
  • BlockHash
  • BlockPoolPubKey = The pubkey that found the block
  • PoolDescriptions = The name of the pool if it is known from the pubkey
  • BlockTime = Block timestamp
  • SuperBlockVersion = Superblock version (1 = old budget superblock else it is a newer governance superblock)
  • BlockchainValid
  • SuperBlockPaymentAddress = Address paid for this proposal in superblock
  • SuperBlockPaymentAmount = Amount paid for this proposal in superblock
  • SuperBlockProposalHash = Proposal hash paid in the superblock (only for governance superblocks)
  • SuperBlockProposalName = Proposal name paid in the superblock
Governance Proposal Details:
Mainnet URL : https://www.dashninja.pl/proposaldetails.html?proposalhash=
Mainnet Tor : seuhd5sihasshuqh.onion/proposaldetails.html?proposalhash=
Testnet URL : https://test.dashninja.pl/proposaldetails.html?proposalhash=
Add the budget hash id at the end of the URL (hash).
Current version: HTML v0.9.1 / JS v0.9.0
(if you see an older version force the refresh by pressing Ctrl+F5)

Check governance proposals (v0.12.1+) details, payments and pre-built manual votes commands.

Common API structures:
In the data result property you can find also 2 common structures :
  • cache = is the result from cache or from database
    • time = when was the data pulled from database
    • fromcache = boolean, if true then data comes from cache, else it comes from database
  • api = API versioning
    • version = API version for this end-point
    • compat = API version compatibility
    • bev = string representation of the current back-end version (first two values are the global Dash Ninja Back-End version)

License:
Dash Ninja is free to use and Open Source (GPLv3):
- Back End @ https://github.com/elbereth/dashninja-be
- Database @ https://github.com/elbereth/dashninja-db
- Control Scripts @ https://github.com/elbereth/dashninja-ctl
- Front End @ https://github.com/elbereth/dashninja-fe
- IRC Bot @ https://github.com/elbereth/dashninja-irc

I provide no warranty for anything showed on the website. Use at your own risk.

If any issue arise, the best way to notify is an issue on github (probably Front-End).
 
Last edited:
you pages rule ... i am on every day !
well done for keeping this going in such a professional way !!
 
This is a damn good resource... Thanks...

ec0226b48070039664ebe3076508cc024f459c9146b69de5f183e7e5358ebee5-000
 
This is great. Even the API. :). Any chance you can stick sockets on it? So we can register interests and when something changes IT pushes the notification out?
 
Something wrong I guess. :)
But no time to check until the evening, sorry.

Edit: Fixed, portcheck will re-cehck everything soon.
 
Last edited by a moderator:
elbereth something is wrong with color scheme
158019 -> 6 -> 1.2 green (20%)
158018 -> 6 -> 1.5 orange (25%)
should be colored in opposite way
 
Last edited by a moderator:
There is a problem with the query retrieving the expected ratio. Will try to fix that in the evening.

Edit: Fixed (was a problem in the API, the expected ratio is now correct, hence also the colors and stats).
 
Last edited by a moderator:
Fixed the blocks API, it was giving a wrong MN population for unknow versions (now 0 as it should).
 
Well I have no idea how to add that feature and I barely have more than half a hour per day to work on this.
So maybe but unlikely. :)
 
The API backend is PHP indeed (using Phalcon framework).
Rest is pure HTML with Javascript.
 
Back
Top