I am learning about blockchain and P2P in general. I know ethereum uses a distributed hash table for node lookup (kademlia) that maps UUIDs of nodes to their addresses.
I am curious about how the uuids are assigned.
Do nodes generate their own uuids? This would be dangerous since a naive or malicious node could generate an already existing uuid, right?
Or do the boot nodes generate UUIDs for the joining nodes? This would require the boot nodes to issue a certificate containing the UUID for the joining node. So that later, when the node that joined communicates with normal nodes, the normal nodes can verify that the certificate was in fact issued by a boot node (which they all trust) and so they also trust the uuid to be OK. Is this how ethereum does it?
I am looking at the official description about ethereums kademlia peer selection but while it mentions how nodes join the network it does not mention how UUIDs are assigned.