helium/blockchain-core

reactivation list within a HB is not processed if the node is in consensus

andymck opened this issue · 0 comments

Since Validator challenges, a val heartbeat txn can contain two additional lists:

  1. A list of POC key proposals
  2. A list of gateways to reactivate

When processing a HB txn there is a check to determine if the validator is in consensus. If true we dont process either of the above lists. This behaviour is incorrect. We should always process the activation list ( assuming inactivity is enabled via its chain var ). The key proposals should continue to be processed only if the node is not in consensus.

By not processing the reactivation list, GWs are not being marked as active and continue to be excluded from POC.
The issue presented itself as extremely apparent on testnet where we only had a total of 5 vals, with a CG size of 4. This resulted in GWs almost never being reactivated as they were always connecting to a validator which was in consensus. On mainnet the visibility of this will be minor as the availability of non consensus vals is significant.