Skip to main content


HashConsensus is a contract that gets consensus reports (i.e. hashes) pushed to and processes them asynchronously.

HashConsensus doesn't expect any specific behavior from a report processor, and guarantees the following:

  1. HashConsensus won't submit reports via IReportAsyncProcessor.submitConsensusReport or ask to discard reports via IReportAsyncProcessor.discardConsensusReport for any slot up to (and including) the slot returned from IReportAsyncProcessor.getLastProcessingRefSlot.

  2. HashConsensus won't accept member reports (and thus won't include such reports in calculating the consensus) that have consensusVersion argument of the HashConsensus.submitReport call holding a diff. value than the one returned from IReportAsyncProcessor.getConsensusVersion() at the moment of the HashConsensus.submitReport call.