Make it mandatory for elected candidates to offer Testnet nodes
Summary or problem description Only a few communities host Testnet nodes: NGD, NNT (Edge), NSPCC, and COZ. This is unfair because these communities have to deal with higher hosting costs. Neo also has only a few usable testnet nodes.
Do you have any solution you want to propose? Neo 'governance systems' should demand elected nodes to host Testnet nodes.
Where in the software does this update applies to?
- Other: Governance
Agree that MainNet committee members should run TestNet nodes. I'm not as concerned about the hosting costs as much as I think it's good to have a testing ground that mirrors the MainNet environment as closely as it can.
But more importantly, we need to find a way to enforce committee members running nodes in general. It's a big problem that could even affect MainNet.
Until a committee member is elected to consensus, there's no way of knowing whether they are even bothering to run a node at all. We don't require them to do any work, just register a public key on-chain that we assume correlates to a node. At any moment we run the risk of liveness failure, especially with automated vote makers active on the network.
As far as I know, if the above occurs, there is no way to resolve it until the Byzantine committee members in question start to operate consensus-capable nodes. This is because no new blocks being produced means no Policy-level actions or voting out of the freeloaders.
https://github.com/neo-project/neo/issues/300, https://github.com/neo-project/neo/issues/2203
A proof of life as a seed node on mainnet is also very important. A watch only node that seeds the network.
there's no way of knowing whether they are even bothering to run a node at all
Oblige candidates sending some heartbeat transactions (confirmRegistration) once in ten epochs? At least for those in committee (and probably not validators, these we do know some things about). They do receive some GAS anyway, so can spend a little and at least it proves that the key is not lost and some software regularly produces these transactions. Likely it'd be some node if it's to do this automatically for candidates.
Oblige candidates sending some heartbeat transactions
A step in the right direction, but not sufficient IMO. The point is to make sure all committee nodes are consensus-ready, but this heartbeat can be trivially performed by a light client.
We need to be convinced that the address is associated with a full node, not a light client. and ideally, we should be convinced that the full node has the necessary compute resources to participate in consensus. This is why I suggested using these nodes in PoW fallback consensus, or something along those lines that requires them to do work.
For fallback consensus, it would just require a sensible CPU-optimized mining algorithm (e.g. RandomX) and a target difficulty setting that convinces us that such a node would be consensus-capable.
How about in order to receive their gas they must host their own node and transmit this heartbeat. Failure to host a node or missing x amount of heartbeats they will lose the gas for that time frame. The gas that is lost will be split up to the other candidate members or given back to the users of the network as discount network cost.
Also we need to do a regular test, to ensure that the 21 candidates have a node, currently is not mandatory, and if the role change, we can have view changes
A proof of life as a seed node on mainnet is also very important. A watch only node that seeds the network.
Totally agree
At any moment we run the risk of liveness failure
Agree!
NEO has faced potential liveness issues for several times. One I can remember is the BinanceStaking1 committee. It was once voted to be a consensus node while it produced no new block ever.
Hi. I wondered if we should do the same for oracle and neofs nodes.
Should I create another issue to discuss this?