원래 세그윗인지 세그윙인지 관심도 없었는데
이것때문에 코인시장이 번지점프를 해대는통에
꿍시렁거리면서 한번 알아보았습니다만
드럽게 어렵군요. -_-..
개복치 운운하기 전에 저부터 뒈졌습니다
걍 대충 이런거구나 하시길 바랍니다
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바이트이므로 백만자 이상의 글자가 들어갑니다
하지만 엄청 불어난 거래수로 인해서
현재 백만자로도 장부용량이 모자릅니다
모자른 부분은 이번 장부에 포함이 안되고 다음번을
노려야되며.. 이로인해서 장부에 자기 거래가 올려질때까지
거래완료를 기다려야됩니다
이 문제를 해결하기 위해서 블록사이즈를 늘리자는 제안이
커졌으나 채굴을 장악하고 있는 중국채굴자들이 반대를
하여서 계속 이뤄지지 못하고 있습니다
변화가 두렵고, 블록체인이 바뀔때 위험성을 거부하며,
마지막으로 중국의 인터넷 사정때문에
블록크기가 커질경우 경쟁에 밀릴까봐 그렇다고 합니다
-수정-
저건 개발자 커뮤니티에서의 얘기였던거 같고
거부한건 세그윗인거 같습니다
님의 제보 감사드립니다
나쁜넘들..
여하튼 자꾸 저렇게 거부하자 블록사이즈를 늘리는 방안으로
하드포크가 아닌 소프트포크를 제안하게 됩니다
그리고 그게 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
이 자리를 빌어 감사드립니다
또한 저 역시 긴가민가하는 상태므로 -_-
실컷 읽으신 분들께 참 죄송스럽게도
내용의 유효성은 보장못합니다 (좀 어려워야지!!)
하지만 소설 쓴건 아니니까
단군신화 같은 걸 보는 시선으로 보진 않아도 됩니다