블록체인 기술이 집중받기 시작한 건 아마 비트코인이 출시되고 난 이후가 아닐까 싶습니다. 리먼 브라더스가 파산하는 초유의 사태를 지켜본 많은 사람들은 더 이상 중앙집중식 원장 관리 방식이 효과적이지 않다라고 판단했습니다. 비트코인이 출시되고 벌써 14년이 흘렀지만 아직 까지 블록체인이 나아가야 할 방향은 남았습니다.
블록체인이 해결해야 할 과제 중 가장 시급한 과제는 TPS(Transaction Per Second) 입니다. 현재 비트코인 블록체인의 경우 TPS가 7개 정도입니다. 굉장히 느린 네트워크라고 할 수 있습니다. 블록체인이 실제 서비스에 적용되기 위해서는 TPS가 적어도 3000건은 되어야 합니다.
블록체인 네트워크의 속도와 확장성 개선을 위해 여러가지 시도가 진행되었고, 그 중 대표적인 기술이 바로 세그윗(SegWit)입니다. 사실 초기 블록체인인 비트코인은 굉장히 느린 네트워크입니다. 약 10분마다 새로운 블록이 생성되고 안전한 거래를 위해 최소 6번의 승인이 필요합니다. 따라서 모든 노드들이 합의에 도달해 거래기록이 장부에 기록되기 위해서는 약 1시간 이상 소요되게 됩니다. 뿐만 아니라 비트코인 블록은 약 1MB의 용량 제한을 가지고 있습니다. 비트코인 등장 초기에는 별 문제가 되지 않았지만 비트코인 가격이 올라가면서 문제점으로 지적되고 있습니다.
세그윗(SegWit)
세그윗(SegWit)은 블록의 용량을 증대하기 위해 등장한 기술입니다. 세그윗이란 Segregated Witness의 약자로 비트코인의 블록에 포함된 디지털 서명 부분을 분리하면서 블록당 저장 용량을 늘리는 소프트웨어 업그레이드 입니다. 블록의 용량은 고정되어 있기 때문에 가용 용량을 늘려 속도를 개선하기 위한 시도입니다.
기존 비트코인 블록의 블록 구조를 보면 디지털 서명 데이터가 70% 이상 차지하고 있었습니다. 비트코인의 블록 용량은 1MB로 제한되어 있었기 때문에 초당 처리 가능한 트랜잭션이 7 TPS 밖에 되지 않았습니다. 이 중 디지털 서명 데이터를 외부로 빼고 빈 공간에 더 많은 트랜잭션을 담고자 하는게 세그윗(SegWit)이라는 제안입니다. 비트코인은 실제로 2017년 8월 1일 세그윗이 적용되었습니다. 결과적으로 디지털 서명 부분만 Off-Chain에서 작동하도록 함으로써 처리 속도를 개선할 수 있었고 블록의 용량은 4MB까지 증가 되었습니다.
데이터 타입 | 비율 |
디지털 서명 데이터 | 75% |
기타 데이터 | 25% |
세그윗 거래 속도 확장성(Scalability)
VISA의 경우 TPS가 24,000에 육박합니다. 전 세계 사람들이 카드를 사용하는데 아무런 문제를 느끼지 못합니다. 하지만 비트코인은 7 TPS에 제한되어 있습니다. 이는 비트코인이 거래 속도의 확장성 문제를 가지고 있기 때문입니다. 블록체인의 거래 속도 확장성 문제를 해결하기 위해서 세그윗을 사용합니다.
세그윗이 거래속도를 개선하는 방법은 디지털 서명 부분을 외부로 분리해내는 방식을 사용합니다.
디지털 서명이란?
거래가 발생하기 위해서는 거래 당사자의 서명이 필요하게 됩니다. 서명을 하는 이유는 거래 하는 주체가 본인임을 확인하고 거래에 대해 증명을 하기 위함입니다. 디지털 서명이란 이를 컴퓨터상에 숫자로 암호화하여 만들게 됩니다.
예를 들어 비트코인을 보내는 사람은 원본 데이터를 해싱한 후 본인이 보유한 개인키로 암호화합니다. 이 후 원본 데이터와 암호화된 메시지를 동시에 전송합니다. 비트코인을 수신하는 사람은 전달받은 암호화된 메시지를 공개키(지갑 주소)로 복호화를 한 후 전달받은 원본 데이터 해싱 결과와 비교한 후 디지털 서명이 되었음을 알게 됩니다.
기존 비트코인 블록내에서 서명란에 들어가는 데이터가 차지하는 양은 많지 않지만 서명 데이터 공간 자체가 많은 부분을 차지하고 있었습니다. 세그윗을 적용하면 서명 부분만 Witness라는 데이터 영역으로 분리해냅니다. 따라서 블록 내에는 더 많은 트랜잭션을 담을 수 있게 됩니다. 만약 세그윗을 적용하지 않고 기존 비트코인 블록 1MB 용량을 늘리게 되면 많은 해시 파워가 소모되게 되며 비트코인 네트워크를 소수 채굴업체들이 장악하게 만드는 요인이 됩니다.
세그윗 거래 가변성 문제(Transaction Malleability)
모든 비트코인 거래들은 해당 거래를 식별할 수 있는 ID를 가지게 되는데, 이를 TXID에 추가되는 전자서명은 비밀번호라고 할 수 있습니다. 만약 거래와 전자서명이 함께 관리된다면 거래 가변성 문제가 발생할 수 있습니다. 거래 가변성이란 거래 내용은 동일한 상태에서 거래 ID(TXID)만 변경해서 새로운 거래인 것처럼 생성할 수 있는 오류입니다.
- 예를 들어 A가 B에게 1BTC를 송금하는 거래가 있었고, 이를 거래 1이 됩니다.
- B는 입금내역을 확인하고 해당 거래의 TXID를 2로 변경하고 네트워크에 전파합니다.
- B는 A에게 TXID 1번을 확인할 수 없다고 주장하면서 다시 송금을 요청합니다.
- B는 A로 부터 추가적인 1BTC를 송금받게 됩니다.
이러한 가변성 문제를 개선하기 위해 디지털 서명과 거래를 따로 분리하자는 의견이 제안됩니다. 이를 실제로 적용한 방법이 세그윗(SegWit)입니다. 이제 Witness에 TXID를 따로 보관하면서 ID를 가지고 같은 거래내역을 반복적으로 생산하는 작업을 방지할 수 있습니다.
정리
정의
세그윗이란 서명 부분을 따로 Witness라는 데이터 영역으로 분리해 비트코인의 TPS 성능을 개선하기 위한 방법입니다.
등장배경
블록체인의 블록의 용량이 제한되어 있고 이로 인해 TPS 성능이 떨어지는 것을 개선하기 위해 등장하였습니다.
적용
블록의 전자서명과 거래내역을 분리하면서 TPS를 개선하고 거래 다변성 문제를 해결합니다.
블록 용량 증가 | TPS 개선 | 가변성 문제 해결 | |
내용 | 디지털 서명과 데이터를 분리함 | 블록 용량 증가 > TPS 증가 | 디지털 서명과 트랜잭션을 분리해 데이터 변경 불가 |
결과 | 실질 블록 크기 1MB -> 4MB | 1 Transaction 당 $30 > $1 | 서명 조작 불가 |
'Blockchain' 카테고리의 다른 글
[Blockchain] 암호화폐란(Cryptocurrency vs CBDC)? (0) | 2022.06.17 |
---|---|
[Blockchain] 블록체인 머클트리(Merkle Tree)란? (0) | 2022.06.16 |
[Blockchain] 블록체인 분산 원장 기술이란? (0) | 2022.06.16 |
[Blockchain] 분산 데이터베이스 투명성 장점 단점 (feat 블록체인) (0) | 2022.06.16 |
[Blockchain] 블록체인 지갑(Wallet) 이란? (0) | 2022.06.14 |
댓글