1. Introduction
  2. Consensus Rules
    ❱
    1. The Genesis Block
    2. Hard Forks
    3. Blocks
      ❱
      1. Difficulty
      2. Weights
      3. Block Reward
      4. Miner Transactions
    4. Transactions
      ❱
      1. Inputs
      2. Outputs
      3. Unlock Time
      4. Ring Signatures
      5. Ring CT
        ❱
        1. Borromean
        2. MLSAG
        3. Bulletproofs
        4. CLSAG
        5. Bulletproofs+
  3. P2P Network
    ❱
    1. Levin Protocol
      ❱
      1. Admin Messages
      2. Protocol Messages
    2. Common Types
    3. Message Flows
      ❱
      1. Handshake
      2. Timed Sync
      3. New Block
      4. New Transactions
      5. Chain Sync
      6. Get Blocks
  4. Pruning

The Monero Book

CLSAG Rules

Introduction

These rules apply to all ringCT types that use CLSAG signatures.

Rules

Number Of CLSAGs

There must be the same number of CLSAG signatures as there are inputs.1

s Size

The s field must have has many elements as the amount of ring members.2

Canonical Encoding

All s scalars must be fully reduced, the c1 scalar must be fully reduced3 and the D point must be canonically encoded.4

Key Images Not Identity

The key image and 8 * D, the commitment key image, must both not be the identity point.5

The CLSAG Signature Must Be Correctly Formed

The signature must be valid.6


1

https://github.com/monero-project/monero/blame/ac02af92867590ca80b2779a7bbeafa99ff94dcb/src/ringct/rctTypes.h#L496

2

https://github.com/monero-project/monero/blame/ac02af92867590ca80b2779a7bbeafa99ff94dcb/src/ringct/rctSigs.cpp#L880

3

https://github.com/monero-project/monero/blob/ac02af92867590ca80b2779a7bbeafa99ff94dcb/src/ringct/rctSigs.cpp#L881-L883

4

https://github.com/monero-project/monero/blob/ac02af92867590ca80b2779a7bbeafa99ff94dcb/src/ringct/rctSigs.cpp#L894

5

https://github.com/monero-project/monero/blob/ac02af92867590ca80b2779a7bbeafa99ff94dcb/src/ringct/rctSigs.cpp#L895 and https://github.com/monero-project/monero/blob/ac02af92867590ca80b2779a7bbeafa99ff94dcb/src/ringct/rctSigs.cpp#L884

6

https://github.com/monero-project/monero/blob/ac02af92867590ca80b2779a7bbeafa99ff94dcb/src/ringct/rctSigs.cpp#L872