세그윗(SegWit)은 Segregated Witness의 약자로서, 번역하면 '분리된 증인'이라는 의미이다.
증인은 암호쪽에서는 암호 해독을 말하는 것이고, 여기서는 디지털 서명을 말한다.
(비트코인에서 서명은 서명 + 소유자 공개키로 구성된다.)
세그윗은 원리적으로는 세그윗이라는 이름과 같이 서명을 거래의 입력에서 분리하여 다른 곳으로 옮겨놓는 기술이다.
비트코인에서 거래는 입력과 출력으로 구성된다.
입력은 소유자가 소비가 가능한 출력, 즉 UTXO를 말하고, 이것은 자신의 UTXO와 서명과 공개키로 이루어졌고,
출력은 받는 사람의 주소와 보내는 코인량으로 이루어졌다.
아래는 거래의 raw 포맷을 보여준다.
기존 방법 : [nVersion][txins][txouts][nLockTime] ----------- (1)
시그윗 : [nVersion][marker][flag][txins][txouts][witness][nLockTime] ----- (2)
여기서 nVersion: 버전, txins: 입력, txouts:출력, nLockTime: 잠금시간(블럭에 기록될 수 있는 시간)이다.
세그윗은 [txins]에 포함되었던 서명을 [witness]로 옮겨놓은 것이다.
즉, 크게 보면 서명의 위치를 [txins]에서 [witness]로 이동시킨 것으로서, 이것은 거래 구조를 변경한 것이다.
이 한가지를 한 것이 아니라, 거래의 출력 형태도 바꾸어서 출력의 사이즈를 조금 줄였다.
이로서, UTXO의 사이즈가 조금 줄어드는 효과가 있어서, 램에 상주하는 UTXO의 크기를 조금은 줄여준다.
세그윗의 효과는 1) 거래의 사이즈를 최대 75% 정도 절약할 수 있다. 즉, 서명이 차지하던 부분은 새로운 항목인 [witness]로 옮겨놓아서 기존 구조에서 인식하는 사이즈로 보면, 서명 부분만큼 새로운 거래 데이터가 더 블럭에 포함될 수 있게 된 것이다.
txid는 기존의 (1)번으로 계산하고, (2)번으로 wtxid를 새로 만들어서, 서명까지 포함된 새로운 거래id(wtxid)를 새로 만들었다.
블럭의 사이즈는 1MB + 3MB로 총 4MB를 저장할 수 있다. 기존의 블럭 사이즈 규정인 1MB과 그 외에 디지털 서명 등이 포함되는 3MB로 구성된다.
그 외에 세그윗의 효과는 거래의 가단성(transaction malleability)을 주로 이야기한다.
이것은 마운트 곡스의 해킹 때 문제가 되었던 것으로 거래가 블럭에 기록되기 전에 거래의 서명의 일부를 고쳐도 유효한 거래가 되는 특징을 이용한 공격이었다.
참고1: https://en.bitcoin.it/wiki/Transaction_Malleability
참고2: 가단성이란 금속에 압력을 가하여 금속을 변형시킬 수 있는 성질을 말합니다. 즉, 금속을 쉽게 변형시킬 수 있는 것을 말하는 용어입니다.
https://simple.wikipedia.org/wiki/Malleability
세그윗은 디지털 서명을 [witness]로 이동시켜서 txid에 서명이 포함이 안되므로 가단성 문제를 완전히 해결할 수 있다.
라이트코인에는 세그윗이 5월 11일에 블럭높이 1,201,537부터 적용이 되었다.
참고:
@loum님 좋은 글 감사합니다! :)
블록체인 주제 관련 게시글 태그에는 한국어 태그로 #kr과 블록체인 및 암호화폐 관련 게시글 태그인 #coinkorea 태그를 붙여 주시면 더 많은 사람들이 보실 수 있을 것 같습니다.
그와 관련된 게시글을 한번 읽어주시고 동참해주시면 정말 감사하겠습니다.
Steemit KR 커뮤니티 CoinKorea 프로젝트
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
아하.. 오랫만에 쓰는 글이라서 kr 태그를 까먹었습니다.
#kr로 해야 하나요?
다음에는 coinkorea도 함께 태그하겠습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
네 맞습니다 ㅎㅎ 감사합니다!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
암호화폐에 대한 글은 kr coinkorea 태그를 사용했고,
암호화폐와 상관 없는 글은 kr 태그만 사용는 것으로 바꾸었습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
정보 감사합니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit