세그윗(SegWit)에 대해서 알아보자

in #kr7 years ago (edited)

원래 세그윗인지 세그윙인지 관심도 없었는데
이것때문에 코인시장이 번지점프를 해대는통에
꿍시렁거리면서 한번 알아보았습니다만
드럽게 어렵군요. -_-..
개복치 운운하기 전에 저부터 뒈졌습니다
걍 대충 이런거구나 하시길 바랍니다

BIP148


BIP란 Bitcoin Improvement Proposal 의 약자로
해석하면 비트코인 개선안 같은겁니다

스팀잇으로 따진다면..

제가 스팀에 건의를 내놓습니다

난민촌 만들어주세요

만약 그게 스팀잇에서 최초로 내놓은 건의였다면
SIP (Steem Improvement Proposal) 1번이 되는겁니다

그러자 누가 스팀에선 누구나 방구를 자유롭게 껴야된다
라는 개선안(?)을 내놓았어요
그럼 이게 SIP2가 되는겁니다

그런식으로 개선안들이 하나씩 번호표 받아가면서
나오는데 그중 148번 손님이 바로

BIP148 이 되는 것이죠

그리고 BIP148의 내용이 바로 아래에서 얘기할 SegWit..
즉, '증인 분리하는게 어떰?'
이라는 제안입니다

SegWit(Segregated Witness)


용어로는 '증인 분리'를 뜻합니다


이런 분리 아닙니다

가상화폐들은 증인, 증거를 참 좋아하는데요

그도 그럴것이 증인이 없으면 거래가 성립되지 않습니다

'손님 내 아이스크림 드셨죠?'

'아뇨? 이 사람보게 생고양이잡네'

이런 고냥이 같은 경우에 심증은 100% 가지만
눈 땡그랗게 뜨고 정색하면 방법이 없죠
낯짝에 두터운 털이 덮여있어서 부끄러움이 없습니다

그렇기에 이런 뻥을 방지하기위해서
거래에서는 증거가 필요합니다.
계약서 같은거 말이죠.

암호화폐에서도 상대방에게 거래내역을 전송할때
이게 진짜라는 증거를 포함시킵니다
그 증거가 바로 전자서명(Signature)입니다
전자서명에 대한 설명은 이전의 포스팅을 참고하시고..
🔗전자서명과 공개키 기법의 초보적 설명

나의 화려한 키로 요리조리 잠궈서 서명한
탁월한 전자서명은 사람들에게 감탄을 불러일으킵니다
'이 거지 같은 서명은 니가 맞구나'
이렇게 확인 받아서 상대가 거래를 빼도박도 못하게하는
서명(Signature)은 매우 중요하여
모든 거래명세서에 첨부됩니다

그런데 거래서에서 그 서명을 분리하겠다는 것이 바로
segwit 입니다

오해를 위해서 말해두자면 '분리' 입니다. '제거'가 아니라..
즉 배치를 어디로 하느냐라는 문제입니다

예를들면 기존에 이런 거래내역서를 보냈다고 합시다

[밥뭇나?] [전자서명] [3000원짜리 정식 뭇따] 


그림으로 나타내면 요렇습니다

그걸 모아서 보내면 기존에는

요렇게 모아서 제출했습니다

하지만 세그윗은 서명부분만 수집해서

요렇게 분리합니다

그리고 그 분리된 영역을 witness(증인,증거) 영역이라고 합니다

이럼 무슨 이득이 있느냐..
여러가지 이득이 있습니다..-ㅅ-;;
이걸 설명했다간 개복치시체로 피바다를 이룰것이고
애시당초 본인도 같이 둥둥 떠오를 겁니다ㅡ,.ㅡ

그중 딱 두가지만 설명하자면
첫째는 짝퉁이중지출의 방지입니다

Malleability 문제 해결


세그윗처럼 서명을 분리하지 않은 거래내역서의 경우는
똑같은 거래를 보낼때 거래내역서의 이름을
다르게 할 수 있습니다

[밥먹음] : 잔고2000원에서 2000원 소비
[엿먹음] : 잔고2000원에서 2000원 소비

이렇게 보낼 수 있는 것이죠
2000원이 든 내 계좌에서 2000원을 씀
같은 내용을 이름만 다르게해서 이중지출 거래서를 뿌린거죠

다만
이래봤자 지갑플그램들은 님 계좌 다 조사해서
둘 중 하나만 블록에 포함시킵니다

그래서 이중지출이 안됩니다

한데 요게 되는 경우가 있습니다
바로 거래소를 속이는 경우입니다

먼저 거래소에다가 1000원 달라고 합니다
그럼 거래소는 거래내역서 이름을 '너에게 보낸다' 라고
하고 돈을 보냅니다
그때 해커는 거래소가 나한테 1000원 줬다 라는 거래내역서를
'난 받은적 없다' 라는 이름으로 네트워크에 날립니다
(방법은 몰라용~ 해킹잘하는 사람한테 물어보세요^^)

이때 앞의 거래가 확정되어 블록에 포함되면?

해커입장에서 줫같은 거래입니다

그러나 뒤의 거래가 확정되어 블록에 포함되면?

됐어!!

블록의 법칙에 따라 이중지출은 허용할 수 없으므로
하나가 채택되었으면 하나는 버려집니다
그리고 버려진게 거래소가 보낸 거래내역서
'너에게 보낸다'가 되는 것이죠
하지만 '난 받은적 없다'는 채택되었으므로
돈은 1000원이 들어온 상태입니다

이제 거래소에 이의를 제기합니다
야 1000원 안들어왔잖아!

거래소는 화들짝 놀라서 블록체인을 뒤져봅니다
이때 거래소가 막 거래내역하고 이런거 다 뒤져보면
얄짤없이 걸리지만 그런 귀찮은 작업을 안하고
단순히 '너에게 보낸다'.. 즉 거래제목으로 검색해버립니다
당연히 검색될리가 없죠. 버려졌으니까..

어 이상타.. 하면서 거래소는 다시 1000원을 보냅니다
그 결과 해커는 2000원을 얻게 되는겁니다
(거래소는 망하구)

이것을 segwit으로 서명과 거래내역을 분리해버리면
거래내역서 이름을 바꿀수가 없게 되버립니다

원리가 뭐냐고요?
당신.. 개복치가 아니군

개복치 여러분을 위해 불온분자를 없앴습니다 ^^
(그리고 나 자신을 위해)

블록사이즈 증가효과


부가효과중 가장 부각받는 것이 바로 이 블록사이즈 증가효과입니다

비트코인의 각 블록(장부)는 1M의 제한 사이즈를 갖습니다
글자 한글자가 1바이트이므로 백만자 이상의 글자가 들어갑니다
하지만 엄청 불어난 거래수로 인해서
현재 백만자로도 장부용량이 모자릅니다
모자른 부분은 이번 장부에 포함이 안되고 다음번을
노려야되며.. 이로인해서 장부에 자기 거래가 올려질때까지
거래완료를 기다려야됩니다

이 문제를 해결하기 위해서 블록사이즈를 늘리자는 제안이
커졌으나 채굴을 장악하고 있는 중국채굴자들이 반대를
하여서 계속 이뤄지지 못하고 있습니다

변화가 두렵고, 블록체인이 바뀔때 위험성을 거부하며,
마지막으로 중국의 인터넷 사정때문에
블록크기가 커질경우 경쟁에 밀릴까봐 그렇다고 합니다
-수정-
저건 개발자 커뮤니티에서의 얘기였던거 같고
거부한건 세그윗인거 같습니다
@onlimono 님의 제보 감사드립니다

나쁜넘들..

여하튼 자꾸 저렇게 거부하자 블록사이즈를 늘리는 방안으로
하드포크가 아닌 소프트포크를 제안하게 됩니다
그리고 그게 SIP8 아니.. BIP148 입니다

BIP148 즉, 세그윗은 실제적으로 블록사이즈를 증가시킵니다
대략 두배 가까이 증가시키는데요

이전 블록에는 거래내역+서명 이렇게 해서 1M 이내였다면
세그윗의 블록은 거래내역을 1M 이내로 둡니다
그리고 분리한 서명은 블록의 늘어난 확장공간에다가
보관하는 것이죠

한데 문제는 아까 말했듯이
채굴업자들이 하드포크를 반대했고
어쩔수 없이 소프트포크를 하는데
이 소프트포크는 기존의 규칙을 변경하지 않습니다
변경하면 당장 이전의 지갑프로그램들이 변경된 규칙때문에
오류를 뿜어내죠.
근데 실제적으론 1M 이상의 사이즈를 갖게 됩니다
그럼 어떻게 이전의 프로그램들이 1M 블록을
받아들이게 하면서 자신들은 1M 이상을 쓸수 있을까요

그것을 위해서 사용한 방법이
이전 지갑 프로그램들에게는 분리해서 확장공간에
넣어둔 서명들은 주지 않고 거래내역만 주는 것이죠

예를들면
거래내역이 800KB 이고 서명이 800KB 라고 한다면
1600KB 이므로 1M를 넘습니다
세그윗 업데이트를 한 지갑들은 1M 넘든 말던 괜찮다고
된 프로그램들이니까 당연히 받아들입니다

그리고 업데이트를 안한 예전 지갑들은
1M를 넘으니 저걸 다 받을 수 없습니다
그래서
분리된 증거부분인 800KB를 쏙 빼고 줍니다
거래내역만 담긴 부분은 800KB 니까
1M가 안되어서 OK 가 떨어집니다


또한 각 거래에대한 검증은 상대 SEGWIT 버전 지갑이
해줬고 블록해쉬도 맞으니까 예전 지갑은
안심하고 받아들입니다. 짤렸는지도 모르고..

도망을 준비하며..


많은 부분에서 morning님, maa님의 게시물을 참조했습니다
https://steemit.com/kr/@morning/3bjdvz
이 자리를 빌어 감사드립니다

또한 저 역시 긴가민가하는 상태므로 -_-
실컷 읽으신 분들께 참 죄송스럽게도
내용의 유효성은 보장못합니다 (좀 어려워야지!!)

하지만 소설 쓴건 아니니까
단군신화 같은 걸 보는 시선으로 보진 않아도 됩니다

Sort:  

ㅋㅋㅋ 정말 재밌게 읽었습니다. 필력이 대단하세요.

제가 다 닌자님 밑에서 수련을 쌓아서 그렇습니다 ㅎㅎ
이전부터 지금까지 쭈욱 감사드립니다 +_+/

어우... 제가 뭐 한것도 없는걸요. ㅋㅋ 트윈님 앞으로도 좋은 글 부탁드려요!

넵 감사합니다+_+/

이런.. 멋쟁이! 풀봇부터 드셔욧!

웃 감사합니다 ㅎㅎ

중국 마이너들은 블록 사이즈를 늘리는 걸 선호하는 편이고, core 개발자들이 segwit을 선호합니다.

엇 정말인가요? 전 반대로 들었는데.. 오래전부터
사이즈를 늘리자는 얘기가 있었고 그걸 못한게 중국채굴업자들 때문이 아닌가요?
요즘은 바뀌었는지 아님 처음부터 잘못 알고 있었는지 아리달쏭하네요

Segwit2x 개념과 segwit이 다른건데 그 개념을 혼동하고 계신거 같아요~ 비트코인 코어와 언리비티드가 각각 다르버전을 배포하면 하드포크는 강제적으로 일어나는거에요 7월 21 segwit2x 발표 예정이고 8월1일 비트코인 코어측에서 segwit을 발표 소프트 포크가 되려면 둘의 합의해서 segwit이 발표가 안되야 됨

아 제가 예전에 들었던 내용과 비코 망했다고 한 사람 피자헛이던가
하는 사람 얘기에 그렇게 착각한거 같군요
그때 용량 늘리는 지갑을 막 거부하고 그래서 싸우고 이랬던게
중국업자때문인줄 알았는데 개발자 커뮤니티내에서의 싸움이었더군요
다만 업자랑 관련이 있을지도 모르겠지만
여튼 2X의 개념은 알고 있습니다 segwit 성공후 하드포크였죠..

오늘도 하나 배워 갑니다.

책임 못지지만 좋은 지식을 얻어가셨군요.+_+

저도 어디서 맨날 가상화폐 이야기나오면 증인증인 뭔 증인? 했었는데요... 아주 잘은 모르겠지만 뭔가 개념이 조금 생긴듯 합니다ㅎㅎ 설명을 진짜 재밌게 잘해주시는 능력이 있으십니다!!!^^

증인이라기보다 증거.. 그리고 증거라기보다 전자서명입니다. 그 공인인증서의 그거죠
해커가 조작된 데이터를 보내도 신분증명만은 전자서명으로 해야되는데
그건 조작이 안되거든요. 그래서 신분이 증명되지 않은 사람이 보내는 데이터는
전부 가짜라고 처리하는 것이 공인인증서 시스템입니다

개복치 중독적입니다 ㅋㅋ 잘보았습니다~^^

개복치 live 카운트가 1 올랐습니다+_+

✈ 저도 중간까지 너무 재미있다고 무릎을 탁탁 치면서 보다가 "무릎을 쳐서 개복치가 사망"하였습니다.

마지막 내용은 저도 골때립니다
쉽게 요약하자면 1kg 만 선물 받는 집에 사과 1kg을 보냈습니다
한데 세그윗은 사과를 깎아보니까 껍질이 500g 사과가 500g 나온겁니다
그래서 사과를 몇개 더 구입해서 800g 사과와 800g 껍질을 택배 2상자에 나눠담고
1kg만 받는 집에는 껍질박스는 안보내는 겁니다
그결과 300g의 사과를 더 보낼수 있게 되었습니다

✈ 와우... 껍질을 안 보내고 사과만 더 보내는 개념이군요! 정말 알면 알수록 신기한 가상화폐의 세계네요...

다른 세그웻 관련 글에 비하면 개복치들 좀 살겠는데요 ㅎㅎ 좋은글 감사합니다

그럴까요? ㅎㅎ 마지막이 난관이죠
댓글 감사합니다

뭔 말인지 하나도 모르겠지만 어쨌든 막짤을 고르신 식견에 감탄하며 갑니다!

요즘 워낙 자주틀려서 이제는 미리 도망치면서 씁니다

오호 저같은 개복치도 세그윗조금은 알아가네요..ㅎㅎ 읽다가.. 해킹 1000원에서 2000원 으로 또 받게 되는 과정까지는 조금씩 이해하다가..그뒤에있는글들은..읽으면서 사망하게되네요ㅋㅋㅋ

뒤에는 블록의 구조라던지 포크라던지 이런게 연관되었다보니 ㅎㅎ
하지만 설명이 좋지 않았네요 -_-
뭐 다른거 설명할 글에 다시 설명할지도 모르겠습니다