Replies: 3 comments 1 reply
-
I'm not sure that a smart contract would work. You could still invoke the smart contract by yourself so you couldn't trust what's stored in the smart contract. The CNM tool built by Joe isn't 'centralized' it's a representation of the state of the network that is itself decentralized. If node operators don't want to open their rest API with a request per second setting that is totally safe up to them. Likewise for the account info smart contract. Validators shouldn't be pressured to do an update just because there's an upgrade. They should stage it if they're well informed and accept the changes included in the update. |
Beta Was this translation helpful? Give feedback.
-
Currently the next_upgrade indicates that config files exist in In other words, the presence of that folder does not assure that the node will continue to function at the upgrade point. However, that is also true with the current system, so someone irrelevant to improving the notification. I don't believe the smart_contract is a valid method of storing and accessing this. The only port that is required to operate is node to node communication (default 35000). "Perfect" upgrade notification would required some level of status gossiping between nodes and each node to hold latest status information from other nodes. This would be ephemeral and should not take up much local storage, but update rate would determine how much network traffic is used. It is possible that this could be used for handoff of nodes if we automate swapping between hot and cold nodes, using the same key. This is something I will be writing up in a CEP. So if each node had a complete picture of the view of all, we should be able to use any node for update (and other network status) information. |
Beta Was this translation helpful? Give feedback.
-
Implementing an "upgrade status smart contract" seems like a great idea. It would provide transparency to node operators and delegators, enhancing the reliability of network upgrades. Integrating it into the existing upgrade process minimizes complexity. The proposed "Reliability Score" adds an incentive for participation. |
Beta Was this translation helpful? Give feedback.
-
TL;DR
I would like to have the possibility to make the upgrade status of nodes available to everyone whenever a new upgrade is available and before it went live to get an overview about which nodes have staged the upgrade and how smooth the upgrade will go.
-> this feature could be implemented via an "upgrade status smart contract". The current upgrade process could add the possibility of publishing the upgrade status to the smart contract
-> that way the data is automatically available to tools like https://cspr.live or anybody else by querying the blockchain
-> it could be shown as a "Reliability Score" to incentivize node operators to use that smart contract
-> delegators could check the status of their validator on their own
-> node operators who didn't stage the upgrade yet could be contacted by others before anybody is losing rewards and reputation/trust (if contact data is available)
The current situation & much more details
The
casper-node
software which is needed to run the Casper Network provides a REST-API endpoint to get the status of an individual node. That includes the following details:It includes all kind of useful information, esp. the "next_upgrade" part, which can be used to check if a node has an upcoming upgrade staged or not. With the upcoming 1.5.2 upgrade there will be even more information available like how far the sync is already and which blocks are available on a node if the new SyncToTTL was used etc.
For security reasons node operators can disable that REST-API or block access from the internet.
What is bad about this?
If the endpoint is not accessible I'm right now not aware of a reliable way:
Can and should this be improved?
I think so!
If that information would somehow be available network-wide than tools like https://cspr.live and other monitoring solutions could show that information to delegators and all other users of the blockchain. It would also be possible to spot nodes which haven't the upgrade staged yet and if contact details are available the node operator could be informed by others. In a perfect world that shouldn't happen but past upgrades show that there are always node operators who are missing upgrades.
Possible solutions
We have to differentiate between 2 things:
After quite some "discussions" with ChatGPT we came up with the following ideas:
My favorite is
#1
because of the following reasons:casper-node
because it stays untouched-> I believe that the "Reliability" score could even be added right now already by checking which node was not earning rewards anymore after the last upgrades. Similar functionality exists already and is shown as "Performance" so it should be not too hard to implement it already.
The "Reliability" score also adds to the existing reputation system to incentivize node operators to participate and publish their upgrade status.
How it could be implemented:
Using the smart contract would provide information before the upgrade happens and to foresee if and how smooth the upgrade will be and if either delegators or other node operators need to either move their stake and/or try to inform the node operators which didn't stage the upgrade yes.
Modifying the gossip protocol should be avoided since it makes things much more complicated I guess. I think it makes sense to get feedback of core developers here if that would make sense or not.
Using a centralized service depends too much on a centralized entity which could be down, needs maintenance, and adds costs to run additional infrastructure for it. The blockchain exists already and is built to run 24/7.
Possible issues
The smart contract has a few downsides as well:
I think this downsides are pretty small and the benefits are more important which makes it worth to discuss and implement it.
Opinions? Feedback?
Beta Was this translation helpful? Give feedback.
All reactions