Thanks John for the response.
I mean something more specific, which is dropping the relay node concept and therefore the initial relay nodes list (there could be still an initial list of nodes or any other mechanism typically used in p2p networks with uniform nodes) altogether. In other words, dropping any relay-specific logic in Algorand codebase.
Another way to look at this: let’s say participation nodes (or a good subset of them) have the hardware/network spec similar to what’s currently required for relays, then is there still any need for relays. What logic/mechanisms/assumptions in the Algorand code/deisgn depend on having a set of relay nodes?
If dropping relays only boils down to having all (or a subset of) participation nodes with necessary hardware/network spec, then why not just aim to make that happen with the p2p+incentivisation plan? Or, why not include those hardware/network spec factors in the incentivisation now, instead of postponing that to after more experimentation in the hybrid state?
I get that there is some value in experimentation and learning from data, however the key facts are already known:
-
If relays are going to be eventually removed, then participation nodes should be also rewarded for relaying, otherwise that’s unlikely to happen sustainably in the long run. So, some form of direct/indirect incentivisation is necessary.
-
Relaying metrics should be defined, or how a relaying work is measured.
It seems to me that the relay incentivisation shouldn’t be part of core consensus but part of the contract between nodes. Every node in the network can define a cost (per hour for example) for accepting connections from other nodes. For most nodes by default the cost is zero. However, for nodes with higher hardware/network spec it is possible to define a non-zero cost (manually set by the node’s owner in a config file). Whether the payment happens automatically or manually (by the client nodes’ owner) is a less important issue at this point. The key point is that the incentivsation is defined at the protocol level with a decentralized mechanism and the need for having a central/default relay nodes list is removed.