[첫글] AMA(Ask Me Anything)시리즈(1) - 세그윗 하고 나면 증인 데이터는 어디 저장되나요?
안녕하세요. 첫글로 인사드립니다 :)
저는 온라인으로만 진행되는 블록체인 온라인 스터디에 운영자중 한명으로 참여하고있습니다.
입문반, 중급반, 고급반, Dapp개발반을 포함하여 여러주 제의 스터디가 현재 모집 중이니, 관심있는 분들은 https://studypie.co/ko 에서 모든 커리큘럼을 확인해보세요:)
스터디에 많은 분들이 참여하다보니, 정말 다양한 질문들이 나오게 되는데, 스터디에서만 활용하기엔 아까울 것 같아서, 앞으로 스팀잇에 AMA(Ask Me Anything)이라는 이름의 시리즈로, 스터디에서 나왔던 흥미로운 질문 / 답변에 대해서 하나씩 공유해드리려고합니다.
또한, 혹시라도 블록체인 관련해서 궁금하신 내용이 있다면, 공부해서!(제가 아직 모르는 내용이 많아서요^^;) 답글 드릴테니, 편하게 댓글로 질문해주세요.
AMA 시리즈 첫 질문은 이미 어떻게 보면 옛날 얘기일수도있는, 세그윗 관련 질문입니다. 혹시라도 잘못된 정보가 있다면 댓글로 정정 부탁드립니다.
Q) 세그윗을 통해서 증인정보와 거래정보가 분리되면, 증인정보는 어디에 보관되나요? 블록크기를 키우지 않고 더 많은 거래를 포함하려면, 블록 밖에 보관되는건가요?
--
답변)
세그윗 이전에는 1MB 블록 크기를 넘는 블록은 체인에 포함되지 않는다라는 규칙이었습니다.
하지만 세그윗에서는, 블록 크기라는 개념을 버리고, Block Weight라는 개념을 도입하자고 제안합니다. 그리고, Block Weight 가 4MB 를 넘는 블록은 체인에 포함되지 않는다 라는 규칙으로 바꾸자고 제안한 것입니다.
Block Weight 는 아래와 같은 규칙으로 정해놓았습니다.
"기본데이터 크기"X3 + "전체데이터 크기"
기본 데이터란, 전체 데이터 거래에서, Witness 와 관련된 데이터를 제외한것입니다.
예를들어, 세그윗을 받아들인 노드가 2MB의 블록크기(0.5MB의 기본데이터, 1.5MB의 세그윗 데이터)를 가진 블록을 전파한다고 합시다.
우선, 이 블록의 block weight는 0.5*3 + (0.5+1.5) = 3.5MB 이므로, 4MB보다서 규칙을 만족합니다.
세그윗을 받아들이지 않은 노드 입장에서, 이 거래를 받게되면, 이 노드는 증인데이터를 보지 못함으로 block weight 는 0.5*3+ 0.5 = 2MB로 역시나 4MB보다 작아서 규칙을 만족시킵니다.
새로운 규칙을 적용하더라도, 기본데이터가 1MB라고하면, 세그윗을 받아들이지 않는 노드 입장에서 block weight는 1*3 + 1 = 4MB이므로, 결국 기본데이터는 여전히 1MB을 넘을 수 없습니다. 따라서, 새로운 규칙을 적용해도 기존에 세그윗을 받아들이지 않은 노드 입장에서는 크기 규칙에 변화가 없다고 느껴지는거고, 그래서 새로운 노드도, 기존 노드들과 문제없이 호환(backward-compatible)이 됩니다. 그리고 이것이, 세그윗이 softfork로 가능했던 이유입니다.
즉, 결과적으로 세그윗 하고 난 이후에 증인 데이터는 블록 밖에 저장되는 것이 아니라, 블록 안에 여전히 함께 분리되어 저장되는 것이며, 다만 블록크기를 기존처럼 계산하는 것이 아니고, block Weight라는 새로운 개념을 도입해서 계산하는 것입니다.
참고자료 :
https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki
https://medium.com/@jimmysong/understanding-segwit-block-size-fd901b87c9d4
세그윗 공부 하면서 그 부분은(전자 서명이 어디에 보관 되는지)) 놓쳤는데 많은 도움이 되었어요. 정리하면 Block Weight 개념으로 바꾸는 합의 알고리즘(?)으로 진행되면서 softfork가 이루어졌다고 보는게 맞는 것이지요?
네 그렇게 저도 이해하고있습니다. 소프트포크/하드포크관련해서도 이후에 한번 작성해보겠습니다 :)
넵. 기다리고 있겠습니다 :)
반갑습니다.
저희도 진입한지 얼마 안된 뉴비이지만
환영합니다. ^^
반갑습니다 잘 부탁드려요!
반갑습니다. ^^
짱짱맨 호출에 출동했습니다!!
감사합니다!ㅎㅎ
스팀잇 입문 환영합니다. 풀보팅, 팔로우, 리스팀 3종 세트 드리고 갑니다. 가즈아~
감사합니다 분발하겠습니다 ㅎㅎ
반가워요 저도 뉴비입니다 상식이 많은 분이 첫글을 쓰셨군요 ^^
우리 소통해요
https://steemit.com/@sullijun
앗 넵 저도 잘 부탁드립니다!ㅎㅎㅎ
반갑습니다.
전 이런 내용들에 대해 잘 모르지만 잘 아시는 분들이 많이 있으니 서로 정보 공유하면서 즐겁게 스팀잇하시면 될 것 같아요~
네 감사합니다 잘 부탁드립니다 :)
환영해요! 풀보팅했습니다. :)
블록체인 공부하신다면 리디북스에서 <블록체인 상식사전> 읽어보시길 추천드려요.
궁금했던 내용인데 감사합니다! blockweight 개념에 대해 더 알아봐야겠네요~