A transaction in IOTA consists of 2673 trytes. The biggest part is the
signatureMessageFragment (more infos here) which has a size of 2187 trytes.
It is used to store the signature of value transactions and it can be used for custom data of 0 value transactions.
If a transaction's
signatureMessageFragment has leading
9s, they don't have to be transmitted or stored because the Curl hash function will produce the same result with any amount of leading
If you want to send IOTAs to another person, you have to create a Bundle that consists of 4 or more transactions.
- recipient output
- input + first half of signature
- second half of signature
- remainder output
With variable size
signatureMessageFragments, we could put the entire signature into 1 transaction. That would save some header data (2673-2187=486 trytes) and even more for multisignature transactions.
This would reduce the Tangle size significantly, wouldn't it?
If you want to send a small amount of data (up to 2187 trytes), you can put it at the end of
signatureMessageFragment without using up additional space/network because you can ignore the leading
But if you want to send a big amount of data (e.g. 16 Kilotrytes (16000 trytes)), you have to make 8 transactions instead of 1. That's a lot of unnecessary header data.
3.9 Kt header for
16Kt instead of
486 Kt header for
With variable size
signatureMessageFragments, we could send small amounts of data and big amounts of data in less space.
This would decrease the Tangle size significantly, wouldn't it?
Of course you'd have to adjust the amount of PoW to the size.
e.g. default POW for up to 2187 Trytes of data, higher difficulty for additional data.
But it would be possible, wouldn't it?
Even if the Tangle size won't be decreased by a lot because most transaction data would be
It would save at least 486 trytes per value tx, right?