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
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