brunch

You can make anything
by writing

C.S.Lewis

by 뱅크샐러드 Aug 17. 2018

[EasyBlockchain] 세그윗이란?

비트코인의 확장성 문제를 해결해주는 '세그윗'에 대해 알아볼까요?

거래 속도의 확장성(scalability)


비트코인은 현재 기술력으로 1초에 7개의 거래를 성사시킨다. 이는 master card와 같은 금융기관이 1초에 수 백 만 건의 거래를 처리할 수 있는 것에 비해 현저히 속도가 떨어지는 것이다.


이를 거래 속도의 확장성(scalability) 문제라고 하는데, 이 확장성 문제가 현재 비트코인이 가장 시급하게 해결해야할 큰 문제이다. 초당 7개의 거래를 처리한다면 전세계 사람들이 이용하는 경우 하나의 거래를 처리하는데도 몇 년이 걸릴 수 있기 때문에 이를 반드시 해결하지 않고선 비트코인의 대중화는 어려울 수밖에 없다.




확장성 문제 해결을 위한 세그윗(Segregated Witness ; Segwit)


우리는 주변에서 카드결제를 할 때 하는 서명을 귀찮아서 하지 않는 경우도 많고 최근에는 5만원 미만 결제금액에 대해서는 서명을 하지 않는 거래 방식도 등장해서 디지털 서명의 중요성에 대해 잘 모르는 사람이 많다. 하지만 거래를 하기 위해서는 거래를 하는 당사자 본인의 서명이 필요하다. 

서명이란 쉽게 말해 신원을 증명하는 것인데, 디지털 서명은 서명을 컴퓨터 상에서 숫자 등으로 암호화 하여 만드는 것이다.



디지털 서명은 돈을 보내는 사람의 개인키로 암호화한 메세지를 돈을 받는 사람이 돈을 보내는 사람의 공개키로 해독하여 돈을 보내는 사람이 맞는지 신원을 확인하고 증명하는 것이다.


이 디지털 서명은 그만큼 중요하고 당연히 블록에 포함되는 내용이다. 하지만 비트코인 네트워크에서는 1개의 블록의 크기가 제한되어 있다는 점에서 문제가 발생한다. 현재 비트코인 블록체인의 블록당 크기는 1MB.



블록의 구조를 보면 디지털 서명란과 거래내역이 하나로 뭉쳐 있다. 위 그림과 같이 서명란에서 서명이 실제로 차지하는 크기는 크지 않으나, 서명란 자체가 차지하는 부피가 크다고 할 수 있다. 이렇게 되면 생기는 문제가 확장성(scalability) 문제인 것이다. 블록의 크기를 1MB 내외로 유지하면서 거래를 처리할 수 있는 속도를 더 빨리 할 수 있는 방법이 세그윗(Segregated Witness ; Segwit)이다.




세그윗(Segregated Witness ; Segwit)이란



세그윗은 위 그림과 같이 서명부분을 따로 Witness라는 데이터 영역으로 분리시켜 더 많은 거래를 처리할 수 있도록 업데이트 하는 것이다. 

혹자는 '블록의 크기를 1GB 정도로 많이 키우면 되지 않느냐?'고 물을 수도 있다. 하지만 블록의 크기를 키운다면 그것을 감당해 낼 수 있는 해시파워가 전세계적으로 많지 않기 때문에 탈중앙화라는 블록체인의 특성에 맞지 않게 된다는 문제점이 있다. 그렇기에 블록 사이즈를 유지하면서 블록 내부의 내용을 업데이트 하는 것이다.




세그윗은 ‘거래 가변성(Transaction Malleability)’ 문제까지 해결한다



모든 비트코인 거래에는 해당 거래를 식별할 수 있는 거래의 ID (transaction ID: txid)를 포함한다. 전자서명도 txid와 함께 따라다니는데 txid가 'ID'라면 전자서명은 '비밀번호'라고 할 수 있다.



거래 가변성(Transaction Malleability)이란 실질적인 거래 내용에는 변화가 없지만 거래 ID만 변경하여 새로운 거래를 만들어 낼 수 있는 일종의 버그이다. 즉, 거래 ID는 주민등록번호와 같이 한 사람에게 하나만 주어지는 것이 원칙이지만, 두개 이상의 거래 ID (주민번호가 2개인 셈)로 서로 다른 거래처럼 보이지만 실제 거래내역은 동일한 거래를 가질 수 있는 것이 거래 가변성 문제인 것이다.



쉬운 예를 하나 들어보자


1) Bob은 Alice에게 1BTC(비트코인의 약자)를 보낸다. 이것이 ‘거래 A’라고 하자. 

2) Bob이 보낸 거래 정보를 확인한 Alice는 해당거래에서 txid만 바꾼 ‘거래 B’를 네트워크에 전파한다.

3) Alice가 전파한 ‘거래 B’를 포함한 블록이 채굴된다. 

4) Alice는 Bob에게 ‘거래 A’의 txid가 포함된 거래가 기록되지 않았다고 하자 Bob이 ‘거래 A’의 해당 txid를 블록에서 찾아보지만 거래내역이 없다.(이미 ‘거래 B’를 통해 1BTC는 지불된 상태) 

5) Bob은 Alice에게 다시 1BTC를 전송하게 된다.


결과적으로 txid를 두개를 사용해 ‘거래B’ 의 존재를 알지못하는 Bob은 2BTC를 지불하게 되는 것이 거래 가변성 문제이다.


사실 이 거래 가변성 문제는 조금만 신중한다면 일어나지 않는 문제이다.거래 내역을 검증하는 것이 노드들의 역할이기 때문에 이것이 근본적인 문제라고는 할 수 없지만, 발생했을 때 비트코인의 가치는 하락하게 되므로 무시할 수 없는 문제이다.



세그윗은 이 txid를 따로 보관하고 관리함으로써 여러 개의 ID를 가지고 장난을 치거나 동일한 거래내역 여러 개를 만드는 것을 막을 수 있다.




요약


>> 계좌, 카드, 투자상품까지! 흩어진 자산을 한 눈에 관리할 수 있는 방법이 궁금하다면


Written by EasyBlockchain

블록체인 분야 전문 블로거가 블록체인 기술의 기본에 대해 가장 쉽게 설명해드립니다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari