세그윗(SegWit)이란? 세그윗(SegWit)의 특징은?
💡세그윗(SegWit)
2008년 비트코인이 등장한 이래로, 블록체인을 실생활에 도입하기 위해 전 세계에서 다양한 시도를 하고 있다. 비트코인에서도 TPS(초당 트랜잭션 처리 수)를 늘려 확장성을 개선하기 위해 여러 시도를 하고 있다. 속도와 확장성 개선을 위한 여러 시도 중, 가장 대표적인 기술이 바로 세그윗이다.
✓ 배경
블록체인의 시작이자, 세계 최초의 암호화폐인 비트코인은 매우 느리고 제한된 서비스이다. 약 10분 단위로 거래 기록을 저장하며, 안전한 거래를 위해서는 최소 6번의 승인이 필요하다. 그렇기 때문에, 안전한 트랜잭션을 위해서는 약 1시간이상 소요된다는 문제점이 있다. 또한 용량 문제도 있는데, 비트코인 블록은 약 1MB이다. 비트코인이 대중적으로 알려지지 않았을 때는 이 1MB의 블록 크기가 큰 문제가 되지 않았으나, 시간이 점차 흐르면서 사람들은 비트코인에 관해서 관심을 가지고 활용하려는 반면 처리할 수 있는 데이터 작다는 작다 보니 어느샌가 비트코인의 가격이 큰 폭으로 오를 정도가 되면서 문제가 발생했다. 위와 같은 특징으로 인해 비트코인은 화폐 시스템으로는 부적합하다고 평가받고 있다. 이러한 속도와 확장성 문제는 결제 및 송금 서비스 등 현실적인 활용을 어렵게 만들고 있다. 블록체인이 지역과 국가를 벗어난 탈중앙화 금융 시스템으로 동작하게 하기 위해서는, 강력한 탈중앙화 그리고 초당 3,000건 이상의 트랜잭션을 처리할 수 있는 속도, 확장성이 필요하다.
현재 블록체인의 속도와 확장성을 개선하기 위한 여러 방법은 크게 4가지가 있다.
1. 블록의 용량 증대
2. 블록체인 내 기술 도입: 샤딩 등
3. 블록체인 외부와 연계
4. 합의 알고리즘 재설계
여기서 세그윗은 1. 블록의 용량 증대를 통한 개선 방법 중 하나이다.
세그윗(SegWit) 이란 Segregated Witness의 약자로서, 비트코인의 블록에서 디지털 서명 부분을 분리함으로써 블록당 저장 용량을 늘리는 소프트웨어 업그레이드를 말한다. 즉, 고정된 블록의 가용 공간을 늘려서 속도를 개선하자는 것이 핵심이다. 기존의 비트코인의 블록구조는 디지털 서명 데이터가 75%의 비율을 가지고 있고 그 외 데이터가 25%의 비율로 구성되어 있었다. 전체 블록의 크기가 1MB인데, 그 중 디지털 서명 데이터가 75%이상 차지하였기 때문에, 당시 비트코인은 초당 처리할 수 있는 트랜잭션이 7TPS 정도로 확장성이 매우 제한적이었다. 그래서 비트코인 관련 커뮤니티에서는 전자 서명 데이터를 별도의 공간에 저장하고, 대신 블록에 더 많은 트랜잭션을 담자는 세그윗이라는 제안이 나왔다. 세그윗을 통해 전자 서명 데이터만큼 블록 저장 용량을 늘릴 수 있기 때문이다. 이때 우지한을 비롯한 채굴 세력들을 주축으로 비트코인 시스템에서 블록의 크기 자체를 늘리자는 하드포크 방식도 제안되었지만, 비트코인 커뮤니티는 보다 안정적인 개선이 가능한 세그윗, 즉 소프트포크 방식을 택했다. 2017년 8월 1일 기준으로 비트코인은 세그윗을 적용하였다.
디지털 서명 데이터 부분만 별도로 Off-Chain 에서 작동하게 분리함으로써 기존 시스템에는 영향을 주지 않으면서 처리 속도를 개선할 수 있게 되었다.
세그윗을 처음으로 활성화한 암호화폐는 무엇일까요?
기존의 비트코인에서 세그윗을 처음으로 활성화한 암호화폐는 그로스톨코인이다. 한 개 블록에 더 많은 거래정보를 담게 함으로써 더 많은 거래내역을 처리할 수 있게 하였다. 그로스톨 코인은 개인 정보 보호를 지향하며 수수료가 거의 없고 안전한 코인을 목표로 한다.
우지한을 비롯한 채굴 세력을은 왜 세그윗에 반대했을까요?
세그윗을 진행할 경우 중국의 채굴업자들이 사용하던 에이식부스트 방식의 비트코인 채굴이 불가능해지게 된다. 이에 앤트풀, 비아비티씨 등 중국의 채굴업체들은 중심으로 기존 에이식 채굴기를 사용한 비트코인 채굴을 지속하기 위해 기존 비트코인을 하드포크시켜 블록 용량을 8MB로 늘린 비트코인 캐시 라는 새로운 암호화폐를 생성했다.
💡세그윗의 특징은?
세그윗의 특징은 크게 3가지로 말할 수 있다. 거래 속도의 확장성을 해결, 거래 가변성 문제를 해결, 버전 호환이다. 먼저 거래 속도의 확장성에 대해 알아보자.
✓ 거래 속도의 확장성 (Scalablity)
비트코인은 1초에 7개의 거래밖에 처리하지 못한다. 이는 VISA나 Master Card와 같은 금융기관이 처리하는 양에 비해 현저히 적은 수치이다. 이를 거래 속도의 확장성 문제라고 한다. 이 확장성 문제를 해결하기 위해 세그윗을 사용한다. 거래하기 위해서는 거래를 하는 당사자의 서명이 필요하다. 서명은 신원을 증명하는 것인데, 디지털 서명은 이를 컴퓨터상에서 숫자 등으로 암호화하여 만든다. 쉽게 생각하면 마트에서 카드 결제를 할 때 서명하는 것을 생각하면 된다. 디지털 서명이란 돈을 보내는 사람의 개인 키로 암호화한 메시지를, 돈을 받는 사람이 돈을 보내는 사람의 공개키로 해석하여 돈을 보내는 사람이 맞는지 신원을 확인하고 증명하는 것이다. 비트코인 블록은 디지털 서명을 저장하는 공간, 그 외 데이터로 구성이 된다.
서명란에 실제 서명 데이터가 차지하는 크기는 크지 않지만, 서명란 자체가 차지하는 부피가 크다. 세그윗은 서명 부분을 따로 Witness라는 데이터 영역으로 분리해 더 많은 거래를 처리할 수 있도록 업데이트 한다. 단순히 블록의 크기를 늘리는 것도 방법이 될 수 있지만, 블록의 크기가 커지면 더 많은 해시파워를 요구하고 그렇게 되면 소수의 해시파워를 가진 채굴 노드들로 인해 탈중화한에서 점차 멀어질 수 있기 때문이다.
* 확장성 문제는 말 그대로, 더 많은 용도 또는 더 많은 사람들이 사용하기에 적합한 정도를 말한다. 블록의 서명란이 차지하는 부피가 커서 더 많은 블록이 생성되는 것을 방해한다면, 확장성의 문제로 인식할 수 있다. 세그윗은 블록에 불필요한 부분을 줄여 블록의 크기를 줄이는데, 블록의 불필요한 부피가 줄어들면, 더 많은 트랜잭션을 블록에 담을 수 있다.
✓ 거래 가변성 문제 (Scalablity)
모든 비트코인 거래는 해당 거래를 식별할 수 있는 거래의 ID(Transaction ID : TXID)를 포함한다. TXID가 ID라면 TXID를 따라다니는 전자서명은 비밀번호라고 할 수 있다. 거래가변성은 실질적인 거래 내용에는 변화가 없지만 TXID만 변경하여 새로운 거래를 만들어 낼 수 있는 일종의 버그이다.
예를 들어,
1. 유저 1은 유저 2에게 1BTC를 송금한다. 이것을 거래 A라고 하자.
2. 1BTC 송금을 확인한 유저2는 해당 거래의 TXID만 바꿔서 거래 B를 만들어낸다.
3. 유저2가 만들어 낸 거래가 네트워크에 전파되고 검증된다.
4. 유저2는 유저1에게 거래 A의 TXID 를 확인할 수 없다며 따진다.
5. 유저1은 유저2에게 다시 1BTC를 송금한다.
즉, 위와 같이 두 개의 이상의 거래 ID로 서로 다른 거래처럼 보이지만 실제 거래 내역은 동일한 거래를 가질 수 있는 것이 가변성의 문제이다. 이러한 문제를 막기 위해 서명을 거래아 따로 분리하자는 읙녀이 제시되었고 이것이 바로 세그윗이다. 세그윗이 거래 ID 를 따로 보관하고 관리함으로써 여러 개의 ID 를 가지고 장난을 치거나 동일한 거래 내역 여러 개를 만드는 것을 방지할 수 있다.
✓ 버전 호환
세그윗은 하드포크가 아닌 소프트포크이다. 비트코인 소프웨어의 업그레이드를 하지 않아도 세그윗 이전과 세그윗 적용 버전을 모든 노드에서 사용할 수 있다. 0..13.1 버전 이전의 비트코인 코어는 크기가 1MB 이상인 블록을 읽을 수 없지만 디지털 서명 부분만 빠져있기 때문에 호환이 가능하다. 단, 서명 부분이 빠져있기 때문에 구버전의 노드는 이를 검증하지 않고 그냥 받아들이지만, 세그윗이 적용된 버전의 노드들은 디지털 서명을 사용해 신원을 증명한다.
블록 용량 증가 | 트랜잭션 속도 증가 | 트랜잭션 가변성 해결 |
디지털 서명 데이터 분리 | 더 많이 저장할 수 있는 블록을 통해 트랜잭션 속도를 증가 | 서병이 더 이상 트랜잭션 데이터의 일부가 아니기 때문에 해당 데이터를 변경 불가 |
실질 블록 크기는 1MB에서 4MB까지 증가 | 하나의 트랜잭션에 30달러 이상에서 1달러 미만으로 절감 | 서명 조작 불가 |