How to find out the node is quarantined or not

Hi There!

when using /api/v0/network/p2p/quarantined API call my node is not in the list. But either in /api/v0/network/p2p/available. Probably because the list not contains the node which made the query or I am using the wrong id.
So is it possible to get somehow the info whether the node is quarantined or not?

I think checking the p2p quarantined list is sufficient.
If you are not in the list then you are good.
Shawn Squid Pool

ok, but can you help me which id should be used? public_id is commented out from my config - so it is generated by the node but how can I fetch it?

That list is purely just your node’s POV of the network, meaning that your node put other nodes into the quarantine (so your node should never be in it), so every node has different quarantine list.

You should set a public_id for your node (openssl rand -hex 24), as if you do not set it’s like a Sybil Attack, means on every restart your node generates a new node identifier, and probably you will end up in the quarantine in some other nodes, cos the node identifier and your IP do not match for the known one (but I have not checked the quarantine rule/policy in jormungandr source).

1 Like

From this manual:

public_id : (optional) This is a static identifier, 24 bytes encoded in hexadecimal. They are used to bootstrap the connection to the node if the node introduce itself as a trusted peer. Most of the user don’t need to set this value and in fact we are working toward potentially removing the need for this value

That is why my node does not have that id…
But know I learned that there is another list - blacklist. Tat list is maintained by IOHK?
I am asking this because my node had 3 block creations today but none of them verified. before that almost every creation was validated. So I thought my node has been put into quarantine or something…

It does not matter what they say (nobody should accepts or deny anything until its verified by himself/herself). That’s why the nodes have more than ~100K node entries in their all struct, which also can slow down the nodes, and lead to miss some block due to the computational resources. But, it depends on a lot of another factors too.

Especially, when jormungandr use an immutable global state structure, where you want to change something then you need to use some locking mechanism before you touch it (i.e. Futex or POSIX’ mutex the good old semaphores or condition variable or similar). If somebody studied CS/IT then it’s obvious that this is not and ideal solution to modify the state, but for complex system where lot of components want to use it, you must have some restriction for tis access. Of course you can clone that state if it does not harm, and change that cloned global state for some reason.

There is no such list, your node (and of course other nodes too) put any nodes in the quarantine if they triggered by these:

  • cannot connect: You node cannot connect to a node that have public address specified.
  • invalid public id, peer node identifier differs to the previously known/stored one, whihc is always the case if you restart your node.
  • invalid data: not implemented.

We should need more info on this. VM/VPS/Phys spec of the node. Node version config etc.
Nr. of running node on the same VM/VPS/Phys. Network bandwidth/latency characteristic etc.