[Blockchain] 세그윗 (SegWit)

yooni·2022년 3월 12일
0

Blockchain

목록 보기
26/36
post-thumbnail

세그윗 (SegWit)

✔️ SegWit (Segregated Witness)
비트코인 블록에서 디지털 서명 부분을 분리하여 블록당 트랜잭션 저장 용량을 늘리는 소프트 포크

비트코인은 원래 블록의 크기를 제한하지 않았다. 비트코인 개발에 큰 공헌을 한 할 피니는 비트코인 개발자 사토시 나카모토에게 블록의 크기를 제한하지 않으면 DDoS와 같은 공격에 취약하다고 말하며 블록의 크기를 1MB로 제안한다.

비트코인은 10분당 하나의 블록을 생성하며 하나의 블록에는 약 2,100개의 거래만 입력할 수 있게 되어있기 때문에 거래 속도가 매우 느리다는 문제가 발생했다. 10분 동안 1만 건의 거래가 발생한다면, 거리 처리를 위해 1시간을 기다려야 한다. 이런 문제로 비트코인은 화폐 보다는 가치를 저장하는 과 같은 개념이 되었다.

이러한 거래 처리 속도의 문제를 확장성 문제라고 하며 비트코인이 가진 가장 큰 문제이기도 하다. 비트코인은 현재 초당 7건의 거래를 처리할 수 있기 때문에 만약 전 세계 사람들이 이용한다면 하나의 거래를 처리하는데 몇 년이 걸릴 수도 있다. 확장성 문제의 해결 없이 비트코인의 대중화는 어려울 수 밖에 없다. 세그윗은 비트코인의 확장성 문제를 해결하기 위해 등장했다.



1. 디지털 서명

디지털 서명이란 첨단 기술로 보안이 강화된 전자 서명의 한 종류로서, 개인키공개키를 이용한 전자 서명이다. 보내는 사람이 개인키를 사용하여 서명을 보내면 받는 사람이 보내는 사람의 공개키를 이용해 보내온 메시지를 해독한 다음 이를 보관할 수 있다. 보내는 사람은 디지털 서명을 통해 본인임을 인증할 수 있고, 받는 사람은 해당 메시지가 위변조 되지 않았음을 확인할 수 있다. 블록체인에 기록되는 데이터의 보안 및 무결성을 보장하는 주요 측면 중 하나이다.



2. 세그윗의 특징

세그윗은 실제 블록 크기를 키우지 않고 실질적인 블록 크기를 늘리는 해결책이다. 블록 크기는 여전히 1MB이지만 유효한 블록 크기 제한은 4MB로 늘어난다. 이로 인해 더 많은 트랜잭션을 처리할 수 있게 된다. 하나의 블록을 마이닝 하는 데는 동일한 시간이 소요될 수 있지만 하나의 블록 안에 더 많은 트랜잭션을 담을 수 있어 TPS가 증가한다. 트랜잭션 속도가 빨라지면서 트랜잭션 수수료가 약 30달러에서 1달러 미만으로 대폭 절감되었다.


거래 속도의 확장성

블록체인의 블록 크기는 1MB인데, 이 중 75%를 디지털서명 데이터가 차지한다. 이로 인해 비트코인의 TPS가 7TPS 정도로 매우 제한적이었다. 세그윗은 블록의 크기는 1MB로 유지하면서 디지털 서명 부분을 따로 Witness라는 데이터 영역으로 분리시켜 블록과 데이터를 주고 받으며 동기화 할 수 있게 하여 더 많은 거래를 처리할 수 있게 한다.


거래 가변성 문제

모든 비트코인 트랜잭션에는 해당 트랜잭션을 식별할 수 있는 트랜잭션 ID(TXID)를 포함한다. TXID가 ID라면 디지털 서명은 이에 상응하는 비밀번호라고 할 수 있다.

거래 가변성(Transaction Malleability)이란 실질적 거래 내용에는 변화가 없지만 거래 ID만 변경하여 새로운 거래를 만들어 내는 일종의 버그이다. 이는 이중 지출 문제를 발생시킨다. 악의적인 사용자가 거래의 TXID만 변경한 새로운 거래를 네트워크에 전파하여 이미 발생한 거래를 이중으로 일으킬 수 있다.

세그윗으로 TXID와 디지털 서명을 따로 보관하고 관리함으로써 이런 문제를 막을 수 있다.


버전 호환

세그윗은 소프트포크이므로 업데이트를 하지 않아도 세그윗 이전 버전과 호환된다. 구버전의 노드는 서명 부분이 빠진 블록을 검증 없이 그냥 받아들이게 되지만, 세그윗 업데이트된 노드들이 검증을 해주기 때문에 문제가 되지 않는다.


✔️ 세그윗2
세그윗은 소프트포크 업데이트인 반면, 하드포크가 필요한 세그윗2가 제안되었다.
세그윗2는 트랜잭션 처리 방식의 변화 뿐 아니라 블록 크기의 증가(1MB → 2MB)를 포함한다. 블록 크기가 커지면 더 많은 데이터를 처리해야 하기 때문에 노드 운영자와 채굴자의 부담이 증가할 수 있다. 이로 인해 세그윗2에 대해 개발자들의 합의를 달성하지 못해 세그윗2 추진은 중단되었다.



📌 Reference
https://brunch.co.kr/@ssimone/14

profile
멋쟁이 코린이

0개의 댓글