We know that because of the way Monero's privacy works, transactions are larger than a Bitcoin one, but how much larger on average are they compared to Bitcoin transactions? How will this affect the growth of the blockchain into the future? Mechanisms like the flexible blocksize are geared to encourage smaller blocks, but are there other mechanisms that can help reduce the size of the blockchain now, or into the future, like Bitcoin's ability to prune the blockchain for certain applications?
4 Answers
Most non coinbase Monero transactions are currently around 2,000 bytes (but with significant variation) which is somewhere in the neighborhood of 8 times larger than most Bitcoin non coinbase transactions.
The reason why RingCT should help eliminate the need for extremely large Monero transactions is that RIngCT no longer will require the use of outputs of many different denominations.
-
1This assumption was not factoring in the terrific tx size increase CT creates. See this answer: monero.stackexchange.com/a/6166/915 With RingCT transaction sizes grew from 2,000 bytes to 13,000 bytes. It's worth pointing out with Bulletproofs it can be improved.– nopara73Commented Feb 3, 2018 at 15:46
-
1
Non coinbase transactions can start at a couple hundred bytes, and can go up in size a lot if they have a large number of inputs.
The main factors driving up size is the number of inputs and mixin. When sending a large amount, if the sending wallet only has small inputs, it will have to include a lot of them in the transaction (and possibly even send multiple transactions). This is similar to paying a large amount of fiat money with small coins, and the problem is compounded with Cryptonote coins which receive outputs split into denominations (so when you receive 346.2 monero, you actually receive four different outputs: 300, 40, 6, and 0.2 monero).
Mixin adds linearly to part of the transaction size. Mixin refers to the amount of extra keys plucked from the blockchain in order to appear alongside your real output, such that an observer does not know which is spent. The higher the mixin, the larger the transaction, but the better the privacy.
Let's look at a few examples:
http://moneroblocks.info/tx/97bfcc8e040a7d6411579aedb05599dd7433b6dbfc4c367fd8e0e06f531c5454 has a single output (good) but a large number of dusty outputs (bad), and is 1264 bytes.
http://moneroblocks.info/tx/d0e3e5e74d27552d8fbcaf4c28c41d13e7bf31976555e142ce87235fd2cf8ebe has 28 inputs (bad) and 8 outputs (good), and is 7161 bytes.
http://moneroblocks.info/tx/40e3ad658dda3a89e03b0ad1ffad65dff8ae986db642b67c4e37a60fef335d49 uses one input (good) and 5 outputs (good), and is 509 bytes.
All of these are using mixin 2, which is the minimum allowed (save special circumstances of unmixable inputs).
So from browsing this explorer, we can see transactions are typically a few kB in size, 2 kB as mentioned above seems like a fair characterization.
After RingCT is merged, transaction size will go up substantially. However, you will get better privacy, and much less "uselessly small" outputs that force you to have a larger number of inputs in your transactions.
-
The links to the block explorer should be removed, as the block explorer may not exist forever. When I get around to it I'll paste the transaction info from the onion-type monero block explorer. Its all easily copypasta text. Commented Aug 18, 2016 at 2:14
The current Monero median block size (last 1,000 blocks) is 286 bytes. The median transaction size is slightly less because some block include multiple transactions. The current median BTC transaction size is 260 bytes.
http://moneroblocks.info/stats
Monero median (not mean) block sizes are important since they influence the dynamic block size limit (which is 2x the median block size over the last 100 blocks).
Note that median transactions sizes also include coinbase transactions which are relatively small compared to non coinbase transactions. As transaction volume increases (with non coinbase transactions growing as a percentage of total transactions) the median transaction size will therefore increase as well.
When looking at mean or maximum sizes Monero transactions can become larger due to the possibility of a very high mixin and many outputs.
Pruning is possible for Monero. In fact a pruning branch already exists for Aeon which began as a Monero fork.
RingCT will raise transaction sizes for Monero but to a lesser degree than a Confidential Transactions implementation would raise transactions sizes for Bitcoin.
-
4Thanks for the informative answer. I'm surprised that the median transaction size is so close given all the discussion about the scalability of Monero and associated blockchain bloat. Does anyone know, in terms of the overall blockchain size, whether the transaction size is the primary factor or are there any other significant contributions (e.g. database overheads)? Commented Jul 22, 2016 at 19:27
-
3Yeah that's a great answer, and it's something a lot of people will be curious to know. Thanks! Commented Jul 22, 2016 at 19:31
-
2For some reason SE won't let me edit my previous comment. I've posted my blockchain size question as its own question on here, see here: monero.stackexchange.com/questions/213/… Commented Jul 22, 2016 at 19:35
-
4I believe this answer is false. Checking the block explorer, the minimum block size (with coinbase transaction) is 172 bytes (some empty blocks are larger), blocks with actual transactions are much much larger, from what I can see, 2000+ bytes. If more than half of the blocks are devoid of transactions, you would expect the median block size to be equal to the size of an empty block (which is approximately the number you've given). But the question is with reference to the median size of a transaction, not a block. So, this answer is wrong, pending evidence to the contrary. Commented Jul 22, 2016 at 21:05
-
4Coinbase transactions are typically smaller than "normal" ones as they just have a placeholder input, so no signatures. Signatures take a lot of the space in a normal tx. Commented Jul 23, 2016 at 8:45
2021 update to account for bullet proofs and fixed ring sizes
Real (non-coinbase) transactions in Monero are generally 1425 bytes each now.
The median Bitcoin transaction size is 224 bytes.
-
-
@massive_whale those numbers you saw were from 2017. I just updated the answer with current numbers which are much smaller for Monero thanks to bullet proofs and other improvements (even though the rings size is larger 🙂) Commented Sep 8, 2021 at 8:04
-
1