Skip to content

Desync between redistribution game phase tracked by node and on-chain (need to investigate) #5485

@sbackend123

Description

@sbackend123

Context
An on-chain round is split into commit → reveal → claim. When round N enters claim, the agent publishes the internal sample phase and runs handleSample. At the start of handleSample, IsPlaying() is called — an eth_call to the contract’s isParticipatingInUpcomingRound(owner, committedDepth) — to check whether the node will fall in the neighbourhood for the next round (N+1). Building the sample can take a long time and may overlap with commit of round N+1; IsPlaying is not called again during that work (only once at the beginning of sample).

Problem
The bee_storageincentives_is_playing_errors metric keeps increasing steadily.
Logs on light testnet show phase failed, phase=sample, with errors like
IsPlaying: ... execution reverted: 0xe2586bcc. As I understand, selector decodes to WrongPhase().
In the contract, isParticipatingInUpcomingRound reverts with WrongPhase() only when the call lands in the on-chain reveal phase (currentPhaseReveal()). It should not revert for phase reasons during claim or commit.
If IsPlaying fails, no sample is created → the node does not participate in that game round.

Hypothesis
I suspect a desync between the phase the node believes it is in and the actual on-chain phase. Because of these frequent errors, the node rarely passes the gate before sampling and participates in the game only rarely

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions