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 matrix8 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