Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Peerdx, a Peer Diagnostics Tool

This tool allows you to run diagnostics for peers of Tendermint nodes by means of analyzing your nodes' address books or directly connecting to the nodes themselves via RPC. In contrast to just retrieving the information via the /net_info endpoint, this program aims to present the data in a more readable way as well as make it possible to compare multiple nodes with each other in terms of peer diversity.

Requirements

Go 1.13+

Install

Clone this repo and run go install within its root directory.

How to Run Diagnostics on Address Books

In order to compare address books, put them into one directory and type:

$ peerdx addrbook --dir <your dir containing address books>

The output should look something like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 c3469b7fcf414f26bc1e86a9abe019053587422d: addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

If you already know some of the nodes and want to give them a name, you can do so by providing a config file:

$ peerdx addrbook --dir <your dir containing address books> --config cfg.json

The config file should look like this:

{
"known_ids": [
{
"name": "Awesome Node",
"id": "c3469b7fcf414f26bc1e86a9abe019053587422d"
}
]
}

And the output would look like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 Awesome Node : addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

How to Run Diagnostics via RPC

Comparing peers of nodes

If you want to compare peers of nodes without collecting all of their address books, you can check via RPC. You have to make the rpc endpoint accessible on the nodes you want to compare. Then all you have to do is run:

$ peerdx rpc compare <node_1 rpc address> <node_2 rpc address> <...>

You can pass in a config file with already known addresses as shown in the address book description. The output will look exactly the same as when comparing address books.

Show Peer Info of a Single Node

Additionally, you can take a more detailed look at the node's peers. Just type:

$ peerdx rpc list <node rpc address>

The result will look something like this:

OUT sebytza05 [d32432f9...] : IP 164.64.104.66
send active; receive active
tendermint version 0.33.3
OUT prim-sentry [8aea2394...] : IP 157.85.239.128
send active; receive active
tendermint version 0.33.3
OUT Nodeasy [3f931256...] : IP 172.243.73.214
send active; receive active
tendermint version 0.33.3
OUT gunray [49d7656d...] : IP 65.222.131.87
send active; receive active
tendermint version 0.33.3

About

Peer Diagnostics Tool for Tendermint blockchains

Resources

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Peerdx, a Peer Diagnostics Tool

This tool allows you to run diagnostics for peers of Tendermint nodes by means of analyzing your nodes' address books or directly connecting to the nodes themselves via RPC. In contrast to just retrieving the information via the /net_info endpoint, this program aims to present the data in a more readable way as well as make it possible to compare multiple nodes with each other in terms of peer diversity.

Requirements

Go 1.13+

Install

Clone this repo and run go install within its root directory.

How to Run Diagnostics on Address Books

In order to compare address books, put them into one directory and type:

$ peerdx addrbook --dir <your dir containing address books>

The output should look something like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 c3469b7fcf414f26bc1e86a9abe019053587422d: addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

If you already know some of the nodes and want to give them a name, you can do so by providing a config file:

$ peerdx addrbook --dir <your dir containing address books> --config cfg.json

The config file should look like this:

{
"known_ids": [
{
"name": "Awesome Node",
"id": "c3469b7fcf414f26bc1e86a9abe019053587422d"
}
]
}

And the output would look like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 Awesome Node : addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

How to Run Diagnostics via RPC

Comparing peers of nodes

If you want to compare peers of nodes without collecting all of their address books, you can check via RPC. You have to make the rpc endpoint accessible on the nodes you want to compare. Then all you have to do is run:

$ peerdx rpc compare <node_1 rpc address> <node_2 rpc address> <...>

You can pass in a config file with already known addresses as shown in the address book description. The output will look exactly the same as when comparing address books.

Show Peer Info of a Single Node

Additionally, you can take a more detailed look at the node's peers. Just type:

$ peerdx rpc list <node rpc address>

The result will look something like this:

OUT sebytza05 [d32432f9...] : IP 164.64.104.66
send active; receive active
tendermint version 0.33.3
OUT prim-sentry [8aea2394...] : IP 157.85.239.128
send active; receive active
tendermint version 0.33.3
OUT Nodeasy [3f931256...] : IP 172.243.73.214
send active; receive active
tendermint version 0.33.3
OUT gunray [49d7656d...] : IP 65.222.131.87
send active; receive active
tendermint version 0.33.3

About

Peer Diagnostics Tool for Tendermint blockchains

Resources

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Peerdx, a Peer Diagnostics Tool

This tool allows you to run diagnostics for peers of Tendermint nodes by means of analyzing your nodes' address books or directly connecting to the nodes themselves via RPC. In contrast to just retrieving the information via the /net_info endpoint, this program aims to present the data in a more readable way as well as make it possible to compare multiple nodes with each other in terms of peer diversity.

Requirements

Go 1.13+

Install

Clone this repo and run go install within its root directory.

How to Run Diagnostics on Address Books

In order to compare address books, put them into one directory and type:

$ peerdx addrbook --dir <your dir containing address books>

The output should look something like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 c3469b7fcf414f26bc1e86a9abe019053587422d: addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

If you already know some of the nodes and want to give them a name, you can do so by providing a config file:

$ peerdx addrbook --dir <your dir containing address books> --config cfg.json

The config file should look like this:

{
"known_ids": [
{
"name": "Awesome Node",
"id": "c3469b7fcf414f26bc1e86a9abe019053587422d"
}
]
}

And the output would look like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 Awesome Node : addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

How to Run Diagnostics via RPC

Comparing peers of nodes

If you want to compare peers of nodes without collecting all of their address books, you can check via RPC. You have to make the rpc endpoint accessible on the nodes you want to compare. Then all you have to do is run:

$ peerdx rpc compare <node_1 rpc address> <node_2 rpc address> <...>

You can pass in a config file with already known addresses as shown in the address book description. The output will look exactly the same as when comparing address books.

Show Peer Info of a Single Node

Additionally, you can take a more detailed look at the node's peers. Just type:

$ peerdx rpc list <node rpc address>

The result will look something like this:

OUT sebytza05 [d32432f9...] : IP 164.64.104.66
send active; receive active
tendermint version 0.33.3
OUT prim-sentry [8aea2394...] : IP 157.85.239.128
send active; receive active
tendermint version 0.33.3
OUT Nodeasy [3f931256...] : IP 172.243.73.214
send active; receive active
tendermint version 0.33.3
OUT gunray [49d7656d...] : IP 65.222.131.87
send active; receive active
tendermint version 0.33.3

About

Peer Diagnostics Tool for Tendermint blockchains

Resources

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Peerdx, a Peer Diagnostics Tool

This tool allows you to run diagnostics for peers of Tendermint nodes by means of analyzing your nodes' address books or directly connecting to the nodes themselves via RPC. In contrast to just retrieving the information via the /net_info endpoint, this program aims to present the data in a more readable way as well as make it possible to compare multiple nodes with each other in terms of peer diversity.

Requirements

Go 1.13+

Install

Clone this repo and run go install within its root directory.

How to Run Diagnostics on Address Books

In order to compare address books, put them into one directory and type:

$ peerdx addrbook --dir <your dir containing address books>

The output should look something like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 c3469b7fcf414f26bc1e86a9abe019053587422d: addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

If you already know some of the nodes and want to give them a name, you can do so by providing a config file:

$ peerdx addrbook --dir <your dir containing address books> --config cfg.json

The config file should look like this:

{
"known_ids": [
{
"name": "Awesome Node",
"id": "c3469b7fcf414f26bc1e86a9abe019053587422d"
}
]
}

And the output would look like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 Awesome Node : addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

How to Run Diagnostics via RPC

Comparing peers of nodes

If you want to compare peers of nodes without collecting all of their address books, you can check via RPC. You have to make the rpc endpoint accessible on the nodes you want to compare. Then all you have to do is run:

$ peerdx rpc compare <node_1 rpc address> <node_2 rpc address> <...>

You can pass in a config file with already known addresses as shown in the address book description. The output will look exactly the same as when comparing address books.

Show Peer Info of a Single Node

Additionally, you can take a more detailed look at the node's peers. Just type:

$ peerdx rpc list <node rpc address>

The result will look something like this:

OUT sebytza05 [d32432f9...] : IP 164.64.104.66
send active; receive active
tendermint version 0.33.3
OUT prim-sentry [8aea2394...] : IP 157.85.239.128
send active; receive active
tendermint version 0.33.3
OUT Nodeasy [3f931256...] : IP 172.243.73.214
send active; receive active
tendermint version 0.33.3
OUT gunray [49d7656d...] : IP 65.222.131.87
send active; receive active
tendermint version 0.33.3

About

Peer Diagnostics Tool for Tendermint blockchains

Resources

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Peerdx, a Peer Diagnostics Tool

This tool allows you to run diagnostics for peers of Tendermint nodes by means of analyzing your nodes' address books or directly connecting to the nodes themselves via RPC. In contrast to just retrieving the information via the /net_info endpoint, this program aims to present the data in a more readable way as well as make it possible to compare multiple nodes with each other in terms of peer diversity.

Requirements

Go 1.13+

Install

Clone this repo and run go install within its root directory.

How to Run Diagnostics on Address Books

In order to compare address books, put them into one directory and type:

$ peerdx addrbook --dir <your dir containing address books>

The output should look something like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 c3469b7fcf414f26bc1e86a9abe019053587422d: addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

If you already know some of the nodes and want to give them a name, you can do so by providing a config file:

$ peerdx addrbook --dir <your dir containing address books> --config cfg.json

The config file should look like this:

{
"known_ids": [
{
"name": "Awesome Node",
"id": "c3469b7fcf414f26bc1e86a9abe019053587422d"
}
]
}

And the output would look like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 Awesome Node : addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

How to Run Diagnostics via RPC

Comparing peers of nodes

If you want to compare peers of nodes without collecting all of their address books, you can check via RPC. You have to make the rpc endpoint accessible on the nodes you want to compare. Then all you have to do is run:

$ peerdx rpc compare <node_1 rpc address> <node_2 rpc address> <...>

You can pass in a config file with already known addresses as shown in the address book description. The output will look exactly the same as when comparing address books.

Show Peer Info of a Single Node

Additionally, you can take a more detailed look at the node's peers. Just type:

$ peerdx rpc list <node rpc address>

The result will look something like this:

OUT sebytza05 [d32432f9...] : IP 164.64.104.66
send active; receive active
tendermint version 0.33.3
OUT prim-sentry [8aea2394...] : IP 157.85.239.128
send active; receive active
tendermint version 0.33.3
OUT Nodeasy [3f931256...] : IP 172.243.73.214
send active; receive active
tendermint version 0.33.3
OUT gunray [49d7656d...] : IP 65.222.131.87
send active; receive active
tendermint version 0.33.3

About

Peer Diagnostics Tool for Tendermint blockchains

Resources

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Peerdx, a Peer Diagnostics Tool

This tool allows you to run diagnostics for peers of Tendermint nodes by means of analyzing your nodes' address books or directly connecting to the nodes themselves via RPC. In contrast to just retrieving the information via the /net_info endpoint, this program aims to present the data in a more readable way as well as make it possible to compare multiple nodes with each other in terms of peer diversity.

Requirements

Go 1.13+

Install

Clone this repo and run go install within its root directory.

How to Run Diagnostics on Address Books

In order to compare address books, put them into one directory and type:

$ peerdx addrbook --dir <your dir containing address books>

The output should look something like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 c3469b7fcf414f26bc1e86a9abe019053587422d: addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

If you already know some of the nodes and want to give them a name, you can do so by providing a config file:

$ peerdx addrbook --dir <your dir containing address books> --config cfg.json

The config file should look like this:

{
"known_ids": [
{
"name": "Awesome Node",
"id": "c3469b7fcf414f26bc1e86a9abe019053587422d"
}
]
}

And the output would look like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 Awesome Node : addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

How to Run Diagnostics via RPC

Comparing peers of nodes

If you want to compare peers of nodes without collecting all of their address books, you can check via RPC. You have to make the rpc endpoint accessible on the nodes you want to compare. Then all you have to do is run:

$ peerdx rpc compare <node_1 rpc address> <node_2 rpc address> <...>

You can pass in a config file with already known addresses as shown in the address book description. The output will look exactly the same as when comparing address books.

Show Peer Info of a Single Node

Additionally, you can take a more detailed look at the node's peers. Just type:

$ peerdx rpc list <node rpc address>

The result will look something like this:

OUT sebytza05 [d32432f9...] : IP 164.64.104.66
send active; receive active
tendermint version 0.33.3
OUT prim-sentry [8aea2394...] : IP 157.85.239.128
send active; receive active
tendermint version 0.33.3
OUT Nodeasy [3f931256...] : IP 172.243.73.214
send active; receive active
tendermint version 0.33.3
OUT gunray [49d7656d...] : IP 65.222.131.87
send active; receive active
tendermint version 0.33.3

About

Peer Diagnostics Tool for Tendermint blockchains

Resources

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Peerdx, a Peer Diagnostics Tool

This tool allows you to run diagnostics for peers of Tendermint nodes by means of analyzing your nodes' address books or directly connecting to the nodes themselves via RPC. In contrast to just retrieving the information via the /net_info endpoint, this program aims to present the data in a more readable way as well as make it possible to compare multiple nodes with each other in terms of peer diversity.

Requirements

Go 1.13+

Install

Clone this repo and run go install within its root directory.

How to Run Diagnostics on Address Books

In order to compare address books, put them into one directory and type:

$ peerdx addrbook --dir <your dir containing address books>

The output should look something like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 c3469b7fcf414f26bc1e86a9abe019053587422d: addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

If you already know some of the nodes and want to give them a name, you can do so by providing a config file:

$ peerdx addrbook --dir <your dir containing address books> --config cfg.json

The config file should look like this:

{
"known_ids": [
{
"name": "Awesome Node",
"id": "c3469b7fcf414f26bc1e86a9abe019053587422d"
}
]
}

And the output would look like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 Awesome Node : addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

How to Run Diagnostics via RPC

Comparing peers of nodes

If you want to compare peers of nodes without collecting all of their address books, you can check via RPC. You have to make the rpc endpoint accessible on the nodes you want to compare. Then all you have to do is run:

$ peerdx rpc compare <node_1 rpc address> <node_2 rpc address> <...>

You can pass in a config file with already known addresses as shown in the address book description. The output will look exactly the same as when comparing address books.

Show Peer Info of a Single Node

Additionally, you can take a more detailed look at the node's peers. Just type:

$ peerdx rpc list <node rpc address>

The result will look something like this:

OUT sebytza05 [d32432f9...] : IP 164.64.104.66
send active; receive active
tendermint version 0.33.3
OUT prim-sentry [8aea2394...] : IP 157.85.239.128
send active; receive active
tendermint version 0.33.3
OUT Nodeasy [3f931256...] : IP 172.243.73.214
send active; receive active
tendermint version 0.33.3
OUT gunray [49d7656d...] : IP 65.222.131.87
send active; receive active
tendermint version 0.33.3

About

Peer Diagnostics Tool for Tendermint blockchains

Resources

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Peerdx, a Peer Diagnostics Tool

This tool allows you to run diagnostics for peers of Tendermint nodes by means of analyzing your nodes' address books or directly connecting to the nodes themselves via RPC. In contrast to just retrieving the information via the /net_info endpoint, this program aims to present the data in a more readable way as well as make it possible to compare multiple nodes with each other in terms of peer diversity.

Requirements

Go 1.13+

Install

Clone this repo and run go install within its root directory.

How to Run Diagnostics on Address Books

In order to compare address books, put them into one directory and type:

$ peerdx addrbook --dir <your dir containing address books>

The output should look something like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 c3469b7fcf414f26bc1e86a9abe019053587422d: addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

If you already know some of the nodes and want to give them a name, you can do so by providing a config file:

$ peerdx addrbook --dir <your dir containing address books> --config cfg.json

The config file should look like this:

{
"known_ids": [
{
"name": "Awesome Node",
"id": "c3469b7fcf414f26bc1e86a9abe019053587422d"
}
]
}

And the output would look like this:

2020/04/08 18:25:29 Looking for address book json files at /path/to/addrBooks
2020/04/08 18:25:29 Analyzing address books
2020/04/08 18:25:29 A total of 29 different addresses:
2020/04/08 18:25:29 Awesome Node : addrbook1.json, addrbook2.json
2020/04/08 18:25:29 304ddd76ea750c7d2d72ac40a2525c37b10ad124: addrbook1.json
...

How to Run Diagnostics via RPC

Comparing peers of nodes

If you want to compare peers of nodes without collecting all of their address books, you can check via RPC. You have to make the rpc endpoint accessible on the nodes you want to compare. Then all you have to do is run:

$ peerdx rpc compare <node_1 rpc address> <node_2 rpc address> <...>

You can pass in a config file with already known addresses as shown in the address book description. The output will look exactly the same as when comparing address books.

Show Peer Info of a Single Node

Additionally, you can take a more detailed look at the node's peers. Just type:

$ peerdx rpc list <node rpc address>

The result will look something like this:

OUT sebytza05 [d32432f9...] : IP 164.64.104.66
send active; receive active
tendermint version 0.33.3
OUT prim-sentry [8aea2394...] : IP 157.85.239.128
send active; receive active
tendermint version 0.33.3
OUT Nodeasy [3f931256...] : IP 172.243.73.214
send active; receive active
tendermint version 0.33.3
OUT gunray [49d7656d...] : IP 65.222.131.87
send active; receive active
tendermint version 0.33.3

About

Peer Diagnostics Tool for Tendermint blockchains

Resources

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages