So, in order to check that a node is misbehaving, surely other nodes have to audit it to some extent. I haven’t looked much into how exactly this works. The information mostly seems to be scattered around various dev updates.
But, if that auditing is happening, who ensures that the nodes are auditing each other correctly? Who audits the auditors, and who audits the audit auditors?
If a node is meant to do some kind of auditing task, then they need to feel supervised in some way, otherwise a fork whose performance isn’t burdened by that auditing task will become popular.
One idea I had, which probably wouldn’t translate well to the network, is to have 3 flavours of node (red, green, blue), and make it so that red nodes aren’t aware of green nodes, but are aware of blue nodes and have to audit half of everything blue nodes do, including blue’s auditing tasks. Then the same would be true for green, blue, red; and blue, red, green.
Also, I think I read somewhere that misbehaviour would result in a node age penalty, setting back a node’s progress. I’m wondering why this isn’t simplified to resetting the node age to 0 rather than just decreasing it a bit.