Neo: alert messages from consensus nodes

Created on 11 Oct 2018  ·  10Comments  ·  Source: neo-project/neo

In some cases, the consensus nodes need to notify the network of something. Such as policy changes, network status, and so on. These contents do not need to be written into the block, and can be sent to the network through the P2P message alert.

discussion

All 10 comments

So such messages are only valid when signed by consensus nodes?

For policy related changes, is it expected that all such changes are agreed upon by consensus nodes ahead of time through some other process external to the blockchain? What is the governance model for proposing and making such policy changes?

What if some nodes start up after a policy message or are down when the policy message is sent and therefore miss the policy message update? Maybe there should be a smart contract that the consensus nodes make a call to that does a Runtime.Notify to send policy related messages. Then if an offline node comes back online and syncs the chain they will see any message they miss. Such messages will take up space on the chain, but at least it doesn’t add space to contract storage.

CN could broadcast these messages periodically to notify new nodes.
But in addition to being signed by the consensus nodes, what would happen if two CN have different values? Should they reach consensus for these values before broadcast them?

I guess periodically broadcasting them is reasonable, though possibly less reliable. Maybe nodes can also keep the currently applicable config messages from CN nodes in memory, so when a node starts it can request to get the most recent? It is obviously important that these signed messages include the block height at which the changes will apply.

We need to first decide whether to allow consensus nodes to have different policies?

Maybe the policy should be voted in common

I believe consensus nodes should be required to come to consensus on the policy. The best option IMO is if the consensus mechanism uses a voting mechanism built into the core.

I had missed this issue, @erikzhang. It is a nice idea.

I think consensus nodes should have the same policy. I have an idea following.
If one validator wants to change the policy , for example, it wants to change FreeTransactionPerBlock to 30, it sends a transaction which invokes PolicyContract with its signature and “FreeTransactionPerBlock = 30“ get one vote.
If more than 2/3 validators have voted for “FreeTransactionPerBlock = 30“ and PolicyContract will put it into storage. Then when invoke getFreeTransactionPerBlock of PolicyContract, the result become 30.
We can update consensus policy in OnPersist of PolicyContract.

Replaced by #758

Was this page helpful?
0 / 5 - 0 ratings

Related issues

shargon picture shargon  ·  3Comments

vncoelho picture vncoelho  ·  3Comments

igormcoelho picture igormcoelho  ·  4Comments

igormcoelho picture igormcoelho  ·  3Comments

vncoelho picture vncoelho  ·  4Comments