비트코인
블록의 크기
는 약1MB
이다.
비트코인이 대중적으로 알려지지 않았을 때는 이 1MB의 블록 크기가 큰 문제가 되지 않았지만, 시간이 점차 흐르면서비트코인 네트워크의 샤용량이 급증
하자 문제가 생기기 시작했다.
비트코인 블록의 크기는 1MB이기 때문에 블록 안에 담을 수 있는트랜잭션 수도 제한
된다.
비트코인 네트워크를 사용하는 사람들이 늘어나며 트랜잭션은 늘어난 반면 구조적으로 처리할 수 있는 거래량은 제한되어 있다보니 내가 요청한 트랜잭션 하나를 처리하기 위해서는 긴 줄을 기다려야 하는 현상이 발생했다.
이러한 문제를 일부분 해결하기 위해Segwit이라는 방법이 도입
되었다.
여기서 Segwit은 1번 블록의 용량 증대를 통해 속도와 확장성을 개선시킨다.
비트코인 블록의 용량에서 Signature(트랜잭션을 요청한 사람이 private key로 암호화한 메세지, 확인증 )
가 차지하는 비율이 75%
고 그외의 데이터가 25%(트랜잭션 데이터 등)
이다.
사실 서명 데이터 그 자체는 그렇게 크지 않지만 블록에서 서명을 하기 위해 만들어지는 공간이 크다고 한다.
단순히 블록의 크기를 늘리는 것도 방법이 될 수 있지만 블록의 크기가 더 커지면
많은 해시파워
를 요구하게 된다. 이렇게 되면 정말 우수한 성능을 가진 그래픽 카드를 가진 채굴 노드들에게 해시파워가 집중되어 탈중앙화 네트워크가 파괴
된다.
때문에 기존 블록의 크기는 그대로 놔두고 블록 안에 있는 데이터를 따로 빼내서 갸용 용량을 늘리는 방법이 솔루션으로 사용되었다(소프트포크 방식).
거래 속도와 확장성 문제
VISA카드가 1초에 24,000개의 트랜잭션을 처리할 수 있는 반면 비트코인은 1초에 단 7개의 거래만을 처리할 수 있었다. 물론 세그윗을 도입했다고 해서 VISA카드의 거래처리속도를 따라잡지는 못했지만 개선시키기는 했다는 것에 큰 의의를 둔다.
거래 가변성 문제(Transaction Malleability)
거래 가변성은 실질적인 거래 내용에는 변화가 없지만 거래 ID(Transaction ID)만 변경하여 새로운 거래를 만들어 낼 수 있는 버그다.
예를 들어 위와 같은 시나리오가 발생할 경우 하나의 거래로 두개 이상의 거래를 만들어낼 수 있게된다. 이러한 문제는 세그윗을 도입함으로써 TXID(Transaction ID)를 따로 분리시켜 악의적인 사용자들이 거래 ID를 가지고 장난을 못치게 만들었다.(세그윗은 Signature, TXID를 따로 분리시켜 저장함)
버전 호환
소프트포크 방식으로 진행되었기 떄문에 세그윗 이전과 세그윗 적용 버전을 비트코인 네트워크에서 사용이 가능하다.
Segwit 2x는 블록 자체의 크기를 늘리고자 하는 업데이트 방식이었지만 채택되지는 않았다.