git / moonbite-core / src/libmw/src/models/block/Block.cpp · raw
#include <mw/models/block/Block.h>#include <mw/consensus/Params.h>#include <mw/consensus/StealthSumValidator.h>#include <mw/mmr/MMR.h>void mw::Block::Validate() const{ if (m_pHeader->GetNumKernels() != m_body.GetKernels().size()) { ThrowValidation(EConsensusError::MMR_MISMATCH); } m_body.Validate(); if (GetHeight() > mw::KERNEL_LOCK_HEIGHT_GRANDFATHER_HEIGHT && m_body.GetLockHeight() > GetHeight()) { ThrowValidation(EConsensusError::LOCK_HEIGHT); } StealthSumValidator::Validate(m_pHeader->GetStealthOffset(), m_body); MemMMR kernel_mmr; std::for_each( GetKernels().cbegin(), GetKernels().cend(), [&kernel_mmr](const Kernel& kernel) { kernel_mmr.Add(kernel); } ); if (m_pHeader->GetKernelRoot() != kernel_mmr.Root()) { ThrowValidation(EConsensusError::MMR_MISMATCH); }}