# MLSAG Rules

## Introduction

These rules are split into 3 sections: Full, Simple and Both. Full is for RCT type Full and Simple are for the other RCT types that use MLSAG signatures.

Simple is not just for RCT type Simple!

## Index

## Full Rules

### Creating The Ring Matrix (Full)

For RCT type full the ring matrix contains every inputs ring members: ^{1}

(The signer owns a whole column)

The last row contains: \(\sum CommitmentsAtIndex - \sum outPK - fee * H \) ^{2}

Where CommitmentsAtIndex are the ring members commitments in that column.

Which means that for the true spends column the entry in the last row will be commitment to 0.

By structuring the matrix like this the true spend has to be a the same index in each inputs ring, which is not good for privacy.

### Number Of Ring Members

There must be the same amount of ring members in each inputs ring.^{3}

### One MLSAGs

There must be only one MLSAG signature.^{4}

## Simple Rules

### Creating The Ring Matrix (Simple)

For simple RCT types the ring matrix only contains the ring members of a single input: ^{5}

The last row contains the ring members commitment minus the pseudo-out for this input.^{6}

### Simple Number Of MLSAGs

There must be the same amount of MLSAG signatures as there are inputs.^{4}

## Rules That Apply To Both

### More Than One Ring Member

There must be more than one ring member.^{7}

### SS Size

The ss field must be the same length as the key matrix^{8} and each ss member lengths must be the same as the matrix's rows. ^{9}

### SS, CC Canonical Encoding

Every ss element and cc must be fully reduced scalars.^{10}

### Key Images Not Identity

All the key images must not be equal to the identity point.^{11}

### The MLSAG Signature Must Be Correct

The signature must be valid.^{12}