Overview

Fig. 1 - Overview of versions and transaction types

The chart above shows the transaction types and version where each point represents an average of a 1000 blocks. The miner transactions (Type 0) are not represented.

Approach

This work is divided into four categories explained below in order to prove the non-occurrence of inflation. Let's see what are them and what we need to do:

  1. Check the ring signatures
  2. The goal is to validate the transactions by checking its signature. We will need to understand the ring signature scheme in the Pre-RingCT Era, the adoption of the generalization of ring signatures MLSAG (Multilayered Linkable Spontaneous Anonymous Group) and a more concise ring signature scheme CLSAG (Concise Linkable Spontaneous Anonymous Group). Verifying that the ring signature scheme is correct is necessary to guarantee that an user spent funds from an existing transaction in the ledger and is not creating inputs out of thin air. Monero hides the sender by picking other transactions in the chain as decoys and it is important to prove that one and only one real previous transaction is being spent and no inflation is generated.

  3. Check the amounts
  4. The goal is to confirm that the amount of XMR in the inputs are equal to the amount of xmr in the outputs. We will understand rangeproofs and how the amounts are hidden.

  5. Check the uniqueness of key images
  6. The goal is to scan the blockchain and confirm that every key_image is unique in the key_images set to prevent a double-spending transaction.

  7. Check the emission
  8. The goal here is to scan the blockchain and confirm that the miners generated up to the maximum XMR values allowed according to the pre-stablished emission curve. We also want to verify that the collected fees match the equation fees = inputs - outputs.