2

It's widely known that Bitcoin has a limit of 1 MB per block.

However, the average block size is currently about 0.6 MB:

Bitcoin average block size

(original data)

According to this thread, Bitcoin transactions has an average size of 512 B. For the sake of simplicity, I'm not considering the 80 B of block header.

Given that, it's possible to fit about 1200 transactions in a block today. Considering that a new block will be mined every 10 minutes, the current capacity of the network is 2 tps:

1200 transactions/block / 10 min/block / 60 sec/min = 2 transactions/s

This seems like a very low throughput, specially when compared to Paypal's average rate of ~115tps and Visa's average rate of ~2000 tps.

Now imagine that I want to build a side chain that can handle as much traffic as Visa network. I want to mantain most of the parameters of the Bitcoin's blockchain (10 min/block, ~512 B/transaction), but being able to process 2000 tps.

In this case, my block size would be the following:

2000 transaction/s * 512 B/transaction * 60 s/min * 10 min/block = 586 MB/block

Is the estimate above correct, or am I missing something?

If it's correct, what are the impacts of switching from a 1 MB block size to 586 MB?

1

This is what the current block size debate is about and has been for more than a year now. I'll try not to repeat all of that here.

Your numbers seem roughly correct. Whether 600MB blocks are possible in your side chain depends on how your side chain would work. If you get rid of the Proof-of-Work security and it's all data center grade hardware and bandwidth between parties that trust each other to some degree, then there is no problem. It would probably make sense to lower the block time in that case too, for example 60MB every 1 minute. In fact, blocks probably wouldn't make sense at all anymore, why not just an append-only database of single transactions with some checksums for security?

Sidechains can trade some properties to gain other properties, which could make perfect sense. In the above example you trade decentralized trustless for high efficiency but trusted (users need to trust you and some other parties involved, and the government(s), and... ).

Bitcoin itself has as primary property that it's decentralized. Uncensorable, low barrier to entry for miners and for full nodes, peer2peer and all those good things are very much related and intertwined with that primary property. 600MB per block would completely destroy all that.

That is not to say there aren't many way cooler tricks that Bitcoin has up its sleeve. SegWit is currently being rolled out and will make making blocks smaller for certain nodes and better prunable, while making the effective blocksize around 1.75MB. As well as opening up paths to many more cool efficiency improvements like making multi-sig transactions significantly smaller.

An even bigger step will be made with two-way payment channels and networks built using those. Lightning Network is most well known name in this space. The idea is to cache hundreds and thousands (or orders more) of small transactions over weeks or months without putting a single one in a block. Only at the very beginning when opening such a channel and at the end when closing the channel will a transaction actually end up in a block. Organising these channels in a peer2peer network allows anyone to send and forward money through multiple hops, thus allowing everyone to pay anyone else without having to trust a single node and even having true instant and trustless payments (no need to wait for block confirmations).

Scaling is seldom simply turning one dial merely making an existing thing larger. Clever solutions have a much bigger impact while offering better trade offs.

Excuse me for not answering your exact question of listing all impacts of switching to a large block size. They are numerous and each can lead to its own endless bike shedding and handwaving discussion. The most important is that once a block has been mined it needs to propagate ASAP around the world or there's a risk that another miner will find another block where one of those blocks will be "orphaned" (wasted). More orphaned blocks leads to more centralized mining, as bigger miners have a bigger chance to win such an orphan race. "ASAP" in the case of a 10 minute interval is therefore on the order of seconds. Now that doesn't mean that the whole 600MB would need to be transferred to all nodes around the world within a few seconds, but it's still quite a challenge.

Currently 2MB is deemed the maximum safe blocksize, which SegWit pretty much covers. After further enhancements and efficiency improvements another doubling is likely possible in one or two years.

  • thank your for your comprehensive response. I've been catching up with bitcoin news, which I've been distant for over 1 year. This is more a conceptual question: "dropping the cryptographic proof-of-work mechanism does not make the solution a non-blockchain one?" – Henrique Barcelos Feb 3 '16 at 13:30
  • 1
    @HenriqueBarcelos yeah it sort of does. The concept of a blockchain is meant to amplify the effectiveness of PoW: by linking the blocks together changing one old block requires new PoW for not just one block, but for ALL blocks since. Without PoW you might still want to chain transactions such that changing on transactions would require rewriting all checksum for newer transactions (data integrity), but there's not really a need anymore for putting transactions in blocks. It's not really a blockchain anymore, more like a linked-list with hash pointers instead of memory pointers. – Jannes Feb 3 '16 at 14:50
1

Is the estimate above correct, or am I missing something?

Your estimations seem (more or less) fine.

If it's correct, what are the impacts of switching from a 1 MiB block size to 586 MiB?

The two major ones I see are:

  • large blocks make full nodes more difficult/expensive to operate (i.e. requires better specs and better upload/download speeds); thus bad for decentralization as not many people will be able to run a full node
  • the blocks will take longer to propagate through the network, thus it increases the chances of orphan blocks and double spends.

For a more detailed list see here.

Note, that these concerns/drawbacks for an increased block size were raised for a 4, 8 or 32MBs increase... a 586MB increase would be way too excessive. And if you keep the parameters similar to bitcoin you would have the same issues in the side chain.

  • So, basically it would be better to change the other parameters as well in order to improve this chain performance? Considering 32 MiB as block size limit, decreasing the block mining average time to 30 s, I would be able to process ~2200 tps. But this could impact the security of my chain, right? – Henrique Barcelos Feb 2 '16 at 19:24
  • 1
    If you reduce the block time to 30s, 32MiB blocks would never manage to properly propagate through the network before the next block is due. This is a tough problem and I don't know any research on the topic to give you pointers. However, I would advice you to study (experiment with) some of the altcoins and their capabilities. For example Zetacoin has a 30s block time. A list of SHA256 altcoins including their block times can be found here. – karask Feb 2 '16 at 19:37
  • @HenriqueBarcelos The reason Satoshi came up with 10 minutes is because of this propagation delay: if 10% of the 10 minutes is spent propagating the block, then that means ~10% of the mining capacity is wasted and it gives an significant unfair advantage to miners that receive the block first compared to last. So if anything, you would want to increase the block time. Although even that doesn't help that much and will quickly make settlements take hours or days. – Jannes Feb 2 '16 at 20:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.