mn spread

mn spread is a visualization tool that allows you to check how masternodes are distributed around the world by processing a list of unique ip addresses.
It resolves ISP and geo location and groups this by region and ISP in real-time.
Three ways of fetching ip list information implemented:
- Parse the IP list from a specific
web explorer.
- Use a local
wallet cli to get recent masternode information
- Use a webcrawler that returns you recent information about masternodes
Flow
- get list of all active masternode ip addresses of a coin
- request
ipstack api with ip address to retrieve information
- analyze and group by location and provider
- visualize
Example visualization
coins implemented

basic coin view

Installation
Its a simple go project that you can just checkout and build an executable. Requires go v1.10+
go get -u "github.com/cwntr/mn-spread"
Code dependencies
github.com/dnaeon/go-vcr/recorder HTTP request/response recorder
github.com/gin-gonic/gin Gin Framework to utilize the frontend + APIs
github.com/cwntr/go-crypto-tools for client, wallet cli and webcrawler's
mn spread API
Coins Details
Util
(GET) /api/totals lists current MN nodes IPs counts
(GET) /history/:coin/:start-date/:end-date
returns archived .json objects in the given time range.
e.g. /history/xsn/2019-02-01/2019-02-10 will return a list of 10 MN spread result objects.
XSN Governance
Available on: https://mn-spread.de/xsn/gov

(GET) /api/xsn/governance/totals reads local XSN wallet cli for total governance stats
(GET) /api/xsn/governance/objects reads local XSN wallet cli for proposal information
(GET) /api/xsn/governance/object/:hash reads local XSN wallet cli for a specific object (:hash) parameter the object hash
XSN Merchants (TPoS)
Available on: https://mn-spread.de/xsn/merchants

(GET) /api/xsn/merchants/list reads local XSN wallet cli for merchant contracts and calculates commission rate based on last rewards
Translate IP to Geo Location / ISP info: ipstack.com(https://ipstack.com/)
Using a free api key for the ipstack api is request limited by 10k requests/ month, I decided to record the results. If same
ip is requested again, it will replay the response it received before. So only new ip's will be requested.
free template provided by web-framework: mdbootstrap (https://mdbootstrap.com)
map: jVectorMap (http://jvectormap.com/)