Lumino whitepaper

Lumino Transaction Compression Protocol (LTCP) 

by Sergio Demian Lerner, Chief Scientist RSK Labs

“…The critical insight behind Lumino compression is delta compression of selected fields, from a previous referenced transaction and the aggregate signing of previous transactions, so previous signatures can be disposed. Delta compression is done by allowing each transaction to refer to a previous transaction from the same owner, which is used as a template. Any field can be overridden, and unmodified fields are copied intact.

A transaction that uses LTCP contains several fields, some of them optional and some of them are persistent. Persistent means that they will become part of the blockchain forever, while non-persistent fields may or may not become part, depending on future transactions. These are the user provided transaction fields:

[…]

The set of persistent fields in a transaction is called the Persistent Transaction Information (PTI). An additional auto-computed field is added to the PTI, the accountIndex. This is an increasing sequence number assigned to each new account created. What is actually signed in a transaction is not the user provided transaction data, but a compound record with additional information, called the SigRec . The SigRec contains all fields, plus the additional field:

● prevTx : a hash of the SigRec of the previous transaction from the same source account.

The SigRec contains all the fields in a fixed order. To sign a transaction, its corresponding SigRec is hashed, and the hash digest is signed with the ECDSA private key corresponding to the

Lumino Transaction Compression Protocol (LTCP) 5 of 10

sender’s account. Amount is a big integer represented by a base-10 exponent (5 bits) and a mantissa (variable number of bits), allowing greater compression. A 4-byte accountIndex can support more than one billion accounts. Also it’s possible to replace the accountIndex with a shorter field, representing the block number delta and transaction index in the block of the previous transaction from the same account in the blockchain, using compact variable-length integers. For instance, if the prior transaction is the second of the previous block, the value (-1,2) would encode the reference, consuming no more than 2 bytes.

A transaction is accepted if it satisfies standard conditions (enough funds, well formatted, etc.) plus additional conditions on the sequence number, which allows transaction replacement for the Lumino Network. The transaction fields that are missing from the user provided fields are copied with the fields of the delta transaction. The exact conditions to accept a transaction are the following:

●  the nonce must be higher or equal than the nonce of the previous transaction included in a block from this account

●  If the nonce is equal, the seqNum value must be higher than the predecessor.

●  If the nonce is equal, it is included in the PTI to signal it.

●  If present, deltaTxNonce must be specify a transaction at a distance lower than a value D

(replacements included in the block counted in the distance).

●  prevTx = hash (prevSigRec) where prevSigRec is the SigRec of the previous transaction

included.

●  the source account must have enough funds for the payment.

●  the block distance of the delta compression chain must be lower or equal than M….”

read full paper