Segwit(세그윗, Segregated witnesss)

Hong·2022년 11월 6일
0
post-thumbnail




🧐 Why Segwit?

비트코인 네트워크의 확장선 개선을 위해 도입된 방법이 Segwit이다.

비트코인 블록의 크기는 약 1MB이다.
비트코인이 대중적으로 알려지지 않았을 때는 이 1MB의 블록 크기가 큰 문제가 되지 않았지만, 시간이 점차 흐르면서 비트코인 네트워크의 샤용량이 급증하자 문제가 생기기 시작했다.
비트코인 블록의 크기는 1MB이기 때문에 블록 안에 담을 수 있는 트랜잭션 수도 제한된다.
비트코인 네트워크를 사용하는 사람들이 늘어나며 트랜잭션은 늘어난 반면 구조적으로 처리할 수 있는 거래량은 제한되어 있다보니 내가 요청한 트랜잭션 하나를 처리하기 위해서는 긴 줄을 기다려야 하는 현상이 발생했다.
이러한 문제를 일부분 해결하기 위해 Segwit이라는 방법이 도입되었다.




블록체인의 속도와 확장성을 개선하기 위한 방법은 크게 4가지로 구분된다.

  1. 블록의 용량 늘리기
  2. 블록체인 기술 도입(샤딩 등)
  3. 블록체인 외부와 연계(Layer 2 Solution)
  4. 합의 알고리즘 재설계

여기서 Segwit은 1번 블록의 용량 증대를 통해 속도와 확장성을 개선시킨다.




✍🏻 Segwit

세그윗은 비트코인 블록에서 디지털 서명(Signature) 부분을 분리시켜 빼낸다음 그 빈 용량을 다른 곳에 활용하도록 만드는 방법이다.

비트코인 블록의 용량에서 Signature(트랜잭션을 요청한 사람이 private key로 암호화한 메세지, 확인증 )가 차지하는 비율이 75%고 그외의 데이터가 25%(트랜잭션 데이터 등)이다.
사실 서명 데이터 그 자체는 그렇게 크지 않지만 블록에서 서명을 하기 위해 만들어지는 공간이 크다고 한다.


근데 비트코인 블록의 크기를 10MB로 늘리면 되는거 아닌가?

단순히 블록의 크기를 늘리는 것도 방법이 될 수 있지만 블록의 크기가 더 커지면 많은 해시파워를 요구하게 된다. 이렇게 되면 정말 우수한 성능을 가진 그래픽 카드를 가진 채굴 노드들에게 해시파워가 집중되어 탈중앙화 네트워크가 파괴된다.
때문에 기존 블록의 크기는 그대로 놔두고 블록 안에 있는 데이터를 따로 빼내서 갸용 용량을 늘리는 방법이 솔루션으로 사용되었다(소프트포크 방식).




Segwit은 아래와 같은 문제들을 개선시켰다.

  • 거래 속도와 확장성 문제
  • 거래 가변성 문제(Transaction Malleability)
  • 버전 호환

거래 속도와 확장성 문제
VISA카드가 1초에 24,000개의 트랜잭션을 처리할 수 있는 반면 비트코인은 1초에 단 7개의 거래만을 처리할 수 있었다. 물론 세그윗을 도입했다고 해서 VISA카드의 거래처리속도를 따라잡지는 못했지만 개선시키기는 했다는 것에 큰 의의를 둔다.


거래 가변성 문제(Transaction Malleability)
거래 가변성은 실질적인 거래 내용에는 변화가 없지만 거래 ID(Transaction ID)만 변경하여 새로운 거래를 만들어 낼 수 있는 버그다.

예를 들어 위와 같은 시나리오가 발생할 경우 하나의 거래로 두개 이상의 거래를 만들어낼 수 있게된다. 이러한 문제는 세그윗을 도입함으로써 TXID(Transaction ID)를 따로 분리시켜 악의적인 사용자들이 거래 ID를 가지고 장난을 못치게 만들었다.(세그윗은 Signature, TXID를 따로 분리시켜 저장함)


버전 호환
소프트포크 방식으로 진행되었기 떄문에 세그윗 이전과 세그윗 적용 버전을 비트코인 네트워크에서 사용이 가능하다.




Segwit 2x

Segwit 2x는 블록 자체의 크기를 늘리고자 하는 업데이트 방식이었지만 채택되지는 않았다.

profile
Notorious

0개의 댓글