Open countvonzero opened 1 year ago
record the next beacon value in proposals (not ballots) so that beacon value can be propagated as soon as it's generated. this helps in the software rolling update case.
i don't understand this item, ballot is encapsulated into proposal. how moving field one layer up makes any difference?
in the extreme case where the whole network needs to be restarted
this is not an extreme case. lets say there is a new version that has some performance improvements. how do you suggest to make an upgrade? what if we will do 5 releases over first epoch?
basically what this issue says to me is that beacon will be specified manually, i am ok with that
i don't understand this item, ballot is encapsulated into proposal. how moving field one layer up makes any difference?
not changing ballot at all. proposals will carry a field next_beacon
in addition to the beacon value in ballot epoch data.
this is not an extreme case. lets say there is a new version that has some performance improvements. how do you suggest to make an upgrade? what if we will do 5 releases over first epoch?
ideally we should do a rolling upgrade. which allows some nodes to complete beacon protocol and using proposals to propagate through the network.
if we estimate that we will interrupt the beacon protocol somehow, as you stated, we will manually set beacon with the software upgrade.
ideally we should do a rolling upgrade.
but rolling upgrade within which period? assuming beacon runs for 2 weeks - everyone will loose beacon in-memory state during rolling period once. rolling will be over longer periods?
and also rolling is only relevant for the nodes managed by the spacemesh infra, other nodes are not controlled. but i think it doesn't even matter
and also rolling is only relevant for the nodes managed by the spacemesh infra, other nodes are not controlled. but i think it doesn't even matter
right. by design beacon protocol finishes before the epoch ends. so the protocol can finish maybe 1 day before the 2-week epoch ends.
for a rolling update, if we can ensure there are enough managed nodes that remain online for this period.
or we can only do the rolling update bwtn [protocol N end, protocol N+1 start]
.
if not, we roll out a new software with specified beacon value. which is probably easiest to do all the time at the beginning.
i don't think that this plan is good enough, or maybe i just don't understand it.
if next_beacon field is simply extracted from proposal, how do you know which one is honest? what if dishonest was received first? do we also count space units from proposals?
even long term plan relies on the rolling upgrade > 2 weeks, how is that a reasonable assumption?
maybe this idea will be relevant:
version() Version
run(epoch, data)
// all required data must be passed here, if interface is not called - service doesn't run outputs() Stream[(epoch, beacon)]
// streams epoch, beacon tuples stop()
// stop the service with exit(0), exit code must be tracked by maintainer to prevent services restart if next_beacon field is simply extracted from proposal, how do you know which one is honest? what if dishonest was received first? do we also count space units from proposals?
this would work the same way as the current beacon sync model where we sample enough weight from the network. the threat-model is the same as getting the beacon value for current epoch from the ballots at the beginning of the epoch. the idea is to start the beacon sync early (as soon as the beacon protocol finishes).
extract beacon into a separately managed service that has a following requirements
@lrettig @pigmej can you put this on the research agenda to discuss this proposal?
the idea is to start the beacon sync early (as soon as the beacon protocol finishes).
imagine that 10% will leave nodes running and won't update, so only those 10% will know the beacon. is it a reasonable assumption that those 10% can collect enough space units to "sync" the next beacon?
is it a reasonable assumption that those 10% can collect enough space units to "sync" the next beacon?
the current setting in beacon sync for mainnet is to collect 800 weight units of ballots/proposals. technically spacemesh can maintain at least 800 weight units online to run the beacon protocol to make it work. @noamnelke is this a reasonable assumption?
i think we don't need this change that much if we will persist state and allow sync beacon before epoch start
i think we don't need this change that much if we will persist state and allow sync beacon before epoch start
this change, to me, is to allow syncing beacon before epoch starts
maybe worth renaming this issue to "start beacon sync before target epoch starts"
problem statement
quotes from @dshulyak
research meeting conclusion from Jan 25, 2023
short term
long term
the network enables syncing of beacon messages from peers. the volume of the data can be huge, so maybe only archival nodes will save and provide syncing of beacon messages.