Relation between max tranasction size and max stream data size

+2 votes


I was going through the blockchain paramters, and saw that the max transaction size, max-std-tx-size is given as 100000000 bytes, which translates to ~96MB, whereas "max-std-op-return-size", is 67108864 bytes, which is 64MB. (this is the largest amout of data we can embed for a key in a stream

According to your "Production recommendations", for "max-std-tx-size", its stated - "Ensure this is large enough to accommodate the largest piece of data you will ever embed in the blockchain (but note the hard limit of 64 MB). The max-std-tx-size and maximum-block-size should both be at least a few hundred bytes larger than this value."

This makes sense, as the published stream item, say the max allowed, 64MB + other transaction data (txid, addresses, blockhash, blocktime, etc) and even if an asset tranasction is done, whose metadata is very small should be around 2-3MB at most.

So why is there such a big difference between max-std-tx-sizemax-std-op-return-size? (Around 32MB?) 

Is this is view of future proofing, where some other large data may be added to the transaction or am I missing something here?

asked Sep 6, 2017 by amolpednekar

1 Answer

+2 votes
Best answer
This is a good question! The main reason is that it's possible to write an item to more than one stream in a single transaction (in MultiChain 1.0, it's not possible to write multiple items to the same stream in one transaction, but this will change in 2.0). So with the default settings we leave space for (say) 3 stream items of 32 MB each in a single transaction.
answered Sep 6, 2017 by MultiChain
selected Sep 6, 2017 by amolpednekar