비트코인의 블록 크기는 1MB로 제한되어 있습니다.
사실 처음의 비트코인 블록은 그 크기에 대한 제한이 존재하지 않았습니다. 하지만 2010년에 사토시 나카모토가 블록의 크기를 1MB로 제한하게 되었습니다. 이는 DDoS 공격 등의 가능성으로 인해 변경되었습니다.
현재는 한 블록 내에 들어갈 수 있는 트랜잭션은 약 2,000여 개 입니다.
당연하게도 채굴자들은 블록의 크기가 제한되어 있으니 한번 채굴할 때 거래 수수료가 높은 트랜잭션만 모아서 채굴 보상을 최대한으로 하려하게 됩니다.
이는 결국 거래 수수료의 인플레이션으로 이어지게 되고, 비트코인의 확장성 문제가 대두되게 됩니다.
확장성 문제를 해결하기 위하여, 가장 단순한 방법은 블록의 크기 제한을 늘리는 것입니다. 하지만 이는 생각보다 복잡하게 엮여 있습니다.
블록의 크기를 늘려 한 블록에 더 많은 트랜잭션이 들어갈 수 있게 하려면 지금까지 쌓인 모든 노드에 대한 합의가 필요합니다. 만약 합의가 이루어지지 않고 업그레이드를 진행(하드포크)하게 되면 블록체인이 두 개로 분리되게 되는 것이죠.
2017년 Segregated Witness 소프트포크 업데이트가 블록체인에 적용되었습니다.
기존 트랜잭션 구조에서 만약 다수의 사람들에게 받은 금액을 한 트랜잭션에 넣으려고 하면 각 UTXO마다 서명이 필요했으며, 이는 한 트랜잭션의 크기 증가로 이어지게 되었습니다. 기존 블록 데이터 중 서명 데이터가 가장 큰 비중을 차지했기에 세그윗이라는 업그레이드가 제안되었습니다.
세그윗을 적용하면 트랜잭션에서 전자 서명을 분리하여 한 블록에 더 많은 트랜잭션을 넣을 수 있습니다. 이는 블록체인 시스템에 호환되도록 업데이트가 가능하였므며, 기존의 방식과 비교하여 트랜잭션을 한 블록에 1.8배 더 넣을 수 있었죠.
하지만 결국 세그윗을 적용하게 되니 기존의 ASIC 채굴기를 사용할 수 없게 되어, 결국 블록의 크기를 늘리는 방식의 하드포크가 발생하여 비트코인과 비트코인 캐시가 분리되게 되었습니다.