Ejemplo n.º 1
0
func CheckBlockPairIntegrity(block interfaces.IFBlock, prev interfaces.IFBlock) error {
	if block == nil {
		return fmt.Errorf("No block specified")
	}

	if prev == nil {
		if block.GetPrevKeyMR().IsZero() == false {
			return fmt.Errorf("Invalid PrevKeyMR")
		}
		if block.GetPrevLedgerKeyMR().IsZero() == false {
			return fmt.Errorf("Invalid PrevLedgerKeyMR")
		}
		if block.GetDBHeight() != 0 {
			return fmt.Errorf("Invalid DBHeight")
		}
	} else {
		if block.GetPrevKeyMR().IsSameAs(prev.GetKeyMR()) == false {
			return fmt.Errorf("Invalid PrevKeyMR")
		}
		if block.GetPrevLedgerKeyMR().IsSameAs(prev.GetLedgerKeyMR()) == false {
			return fmt.Errorf("Invalid PrevLedgerKeyMR")
		}
		if block.GetDBHeight() != (prev.GetDBHeight() + 1) {
			return fmt.Errorf("Invalid DBHeight")
		}
	}

	return nil
}