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 9
s, they don't have to be transmitted or stored because the Curl hash function will produce the same result with any amount of leading 9
s.
Value Transaction
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?
Data Transaction
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 9
s.
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.
2673-2187=486 trytes
486*8=3888 trytes
3.9 Kt
header for 16Kt
instead of 486 Kt
header for 16Kt
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?
PoW
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 <= 2188
.
It would save at least 486 trytes per value tx, right?
So:
signatureMessageFragment
? So if the message/signature isHELLO9CFB999999...
onlyHELLO9CFB
has to be stored?