board_free custom_top_html:no
default debug random = 0 / type = READ / detected = READ

단축키

Prev이전 문서

Next다음 문서

크게 작게 댓글로 가기 위로 아래로

현재 비트코인이 가진 가장 큰 문제 중 하나가 블럭체인의 크기 (현재 약 20G(?) 정도) 너무 커지는 것이고, 또한 거래가 늘어나면 그에 따라서 블럭체인의 데이터 크기가 더 빠르게 늘어나는 문제가 있다.

따라서, 이 문제를 해결하는 것이 비트코인이 해결해야 할 문제 중 하나이다.

먼저, 블럭체인은 헤더 부분(hash, ver, prev_block 등)과 거래데이터 부분(tx)으로 이루어지며, 전체 블럭 크기 중에서 거래 데이터 부분이 차지하는 크기는 약 90% 이상이고, 그 나머지 부분이 블럭 헤더 부분이 차지한다. 

하지만 거래가 많이 이루어지면, 전체 블럭 중에서 거래 데이터 부분이 차지하는 비중이 더 커지게 된다.

블럭체인의 크기를 줄이는 방법은 왜 블럭체인이 필요한가를 이해하는 것에서 부터 출발한다.

블럭체인은 모든 거래에 대한 데이터를 가지고 있으며, 이는 바꿀 수 없는 특징을 가지고 있다. 

결국, 블럭체인의 용도는 모든 거래 데이터를 확인하여 현재 특정 지갑주소에 얼마의 코인이 있는지를 알려주는 역할을 하는 것이다.

따라서 블럭체인의 크기를 줄이는 방법은 특정 블럭높이(block height) 또는 블럭체인 데이터의 크기가 일정한도를 넘을 때, 그때까지의 특정 지갑주소의 코인의 개수를 genesis(최초) 블럭부터 현재 블럭 높이까지 조사하여서, 모든 지갑주소와 코인 개수를 목록으로 기록하는 것이다. 

이 블럭을 '코인목록 블럭'이라고 칭하기로 한다.

그리고 이런 코인목록 블럭을 일정한 주기로 만들게 된다.

이때, 코인목록 블럭은 기존의 블럭과 같이 블럭헤더 부분은 동일하고, 거래 데이터 부분(tx)에 코인을 가지고 있는 모든 지갑의 주소 및 코인의 개수를 목록으로 작성하여 기록하면 될 것이다.

블럭(block)에는 거래 데이터인 서명, 비밀키 및 개인키, 머클트리 등에 의해 발생된 데이터가 필요하며, 한개의 지갑주소에서 수백번의 거래가 있으면 수백개의 서명, 비밀키 등이 포함되어야만 한다.

하지만, 코인목록 블럭에는 특정 지갑주소(공개키)에서 몇백번의 거래가 있었다고 하더라도, 지갑주소 및 코인의 개수와 이에 대한 마지막 거래의 해쉬(txid)만을 가지고 있으면 되기 때문에 전체 거래의 데이터를 가지고 있는 것보다 크기를 크게 줄일 수 있다. 

 

또한 특정 지갑주소에서 몇백번 거래가 있었다면 거래 데이터 부분(tx)에서 각각의 거래 데이터 보안을 위해 존재하는 머클트리 부분의 크기도 줄어들 것이다. 

참고로 머클트리는 각각의 거래데이터 중 두개씩을 짝을 지어서 해쉬값으로 만들고 그 후 만들어지 해쉬값을 다시 두개를 합해서 하나의 해쉬값을 만들게 되어 최종적으로는 하나의 루트 머클트리 해쉬값을 만들게 된다. 

이 루트 머클트리의 해쉬값이가 블럭헤더 부분에 mrkl_root에 포함되어 거래 데이터의 변조를 막게된다. 

따라서 거래 데이터 부분(tx) 중에서 머클트리의 데이터량도 상당히 큰 편으로 거래수에 따라 다르지만 거래 데이터 부분 중 약 5~10%(?)를 차지할 것으로 추정해본다.(실제 계산은 안해보았음.)

이 경우, 지갑에는 genesis 블럭부터 가장 높은 블럭체인까지 전체 블럭체인의 모든 데이터를 모두 받을 수도 있거나 또는 최근의 코인목록 블럭부터의 데이터를 가지고 있도록 할지를 선택하는 버튼을 만들면 될 것이다.

참고로, 현재 비트코인을 가지고 있는 지갑주소는 약 몇백만개 정도로 추정되며 이를 통해서, 코인목록 블럭의 크기를 대략 추측할 수는 있다. 

코인목록 블럭의 크기를 간략하게 계산해보자.

지갑 주소: 약 30바이트, 코인 개수 : 약 10바이트 및 이것의 해쉬: 약 20바이트 정도이므로,
여유롭게 하나의 지갑주소의 크기를 100 바이트라고 가정을 하고 코인을 가지고 있는 지갑주소가 약 500만개이면 코인목록 블럭의 크기는 대략 5,000,000 * 100 바이트 = 500,000,000바이트 => 약 500M 바이트로 크기가 굉장히 줄어든다.

그렇지만 비트코인 블럭의 경우 각 거래 데이터를 안전하게 보관하기 위해서 각 거래 데이터의 해쉬값을 다시 머클트리 방식으로 저장하게 되므로, 코인목록 블럭의 경우도 이를 위한 추가적인 보안 대책이 필요하므로 데이터 크기는 조금 더 늘어날 것으로 예상된다.

참고로, 지갑을 설치하고 지갑에서 싱크가 시작되면, 지갑은 genesis 블럭부터 가장 높은 블럭까지의 블럭 데이터를 순서대로 다운받게 되고, 이때 지갑 주소와 관련이 있는 거래내용을 읽어서 현재까지의 코인 개수를 표시하게 된다.

 

----------------------

Full node의 경우 처음 블럭부터 마지막 블럭체인을 다운 받으면서, utxo 목록을 만들게 됩니다.

결국, 예로 100번째 블럭이 새로 생성이 될 때 기존의 블럭체인에 utxo 블럭도 추가로 만들어 블럭체인에 올리면 됩니다.

하지만 이러면 하드포크를 해야 하는 문제가 생기므로, 사이드체인 형태 등으로 utxo 블럭을 만드는 것이 가능할 듯합니다.

36
댓글 22
  • 직접 쓰신것인가요? 대단하십니다.

    비트코인이 블록체인 용량문제를 해결하지못하면 비트코인운 없어질것이라 생각하고있었는데

    비트코인재단이 이에대해 얼마나 의지를 가지고 해결을 할지 궁금하네요.
  • ?
    @쌍둥아빠
    한달 전에 생각이 났던 것인데요..
    글을 쓰기 싫어서 안쓰다가..
    오늘 생각난 김에 한번 써보았습니다.

    한 30분만에 글을 다 써서 기분은 좋았습니다.

    내용은 거의 맞을 것으로 보고 있습니다.
    뭐 제가 생각하지 못한 부분이 있을 수가 있으니까요!
  • @loum
    매우 합당합니다. ㅎㅎ 좋은 글 감사합니다. ^^
  • 어제 블록데이터를 스키마에 밀어넣고 있는데 새벽 4시부터 지금까지 절반 들어갔습니다. 테스트로 relation만 잡고 fee, confirmation 계산 후 필드에 넣는 건 아직 하지도 않았는데 시간과 디스크 스페이스 잡는게 장난이 아니네요.

    어제 다른 스레드에서 언급했던 지갑의 scalability 문제는 지금으로서는 scale up은 용이한 구조이지만 비트코인이 분산 네크워인데 아이러니하게도 현재 오픈소스 라이브러리로는 지갑이 scale out하기 어렵다는 점이죠.

    글 잘 읽었습니다.
  • @핀코인
    트랜젝션 디테일까지 집어넣는데 2주걸렸습니다. ㄷㄷㄷ
  • ?
    @핀코인
    감사합니다.
  • ?
    그렇지만 어짜피 모든 블럭체인 데이터를 다운로드 해서 해시해야 하는 것은 마찬가지 입니다.
    비트코인 네트워크로부터 받은 데이터가 신뢰할수 있는지는 해시하는 수 밖에는 없죠
    하드디스크 용량을 줄이자는 의견이시지요??
    비트코인재단이 움직일 필요도 없이
    그냥 지갑개발자가 언제 이전 데이터는 버리고 목록으로 만드는 기능만 추가하면 될 것 같습니다
  • ?
    @남박사
    이전 데이터를 그냥 버리면 안됩니다.
  • ?
    @loum
    그러면 현재 특정 지갑주소의 코인 개수를 알 수 없습니다.
  • ?
    지갑파일과 블럭체인데이터를 혼동하시는분들이 꽤 계시네요...
    wallet.dat는 지갑파일이고 용량이 문제가 안되지요.

    블럭체인데이터 용량문제인데...
    문제가 되긴 할텐데...
    컴퓨터의 발전속도도 있기 때문에 단기간내에 문제가 발생하지는 않을 듯 합니다.
  • ?
    @눈사람
    ㅎㅎ
  • @눈사람
    얼마전에 블록 하나를 보니까 트랜잭션피가 0.03정도 되더군요.

    3년정도 후면 다시 반감기가 찾아올텐데 트랜잭션피로 채굴자들이 먹고살려면 단순히 대충 계산하면 (오차 심합니다) 지난 1년간의 블록체인 데이타 증가량 10기가정도 잡고 대충 500배정도 되어야 트랜잭션피가 15BTC 가 나온다고치면 1년에 5테라가 됩니다.

    이것을 극복하지 못하면 비트코인 core 동기화하는데만 시간이 엄청 걸릴테고 코어를 설치하는 사람이 즐어들수록 비트코인의 안정성은 저하됩니다.

    만일 비트코인이 최소 1년은 살고싶다면 반드시 해결하고 넘어가야합니다.

    물론 재단측에서 대충 3년만 버티고 단물 빨아먹고 끝낼생각하고 있다면 다른 코인이 그 자리를 대체할수도 있겠지요.
  • ?
    @쌍둥아빠
    ㅎㅎ
    그렇게 계산하는 건... 너무 채굴자 위주네요.
    굳이 채굴자를 위한다면 fee를 늘일수도 있고 그렇지 않다면 채굴자가 줄겠죠.

    결국은 거래가 얼마나 더 증가하는가의 문제죠.
    거래량이 어느정도까지 증가할까요?

    1년간 5테라면... 엄청난 거래양일텐데...
    그 정도면 비트코인이 굉장히 활성화 되었다고 봐도 될거 같은데요.
    가격도 어느정도 상승해 있을거 같은데요.
    15BTC의 가치가 현재와 같지는 않을거 같군요.
    뭐 이 문제는 제법 복잡한 문제고...

    어쨌든 데이터 크기를 줄이는 방법을 강구하긴 해야겠죠.
    크기 줄이는 방법을 생각할때 1감으로 떠오르는 방법이 글쓴님께서
    말씀하신 내용이 아닐까 합니다.
    저도 저런 방법을 떠올렸으니까요.

    혹은 다크의 마스터노드 개념을 빌려 일부노드들이 전체 블럭체인을 보유하고
    나머지는 일부 최근 데이터만 보유한다던지 하는 방법도 어떨까 싶어요.

    근데 머리 좋은 사람들 꽤 많습니다.
    이 문제가 심각한 문제거리라고 대두될때쯤엔 해결책이 나올거예요 ㅎㅎ
    너무 걱정안하셔도 될듯...
  • @눈사람
    누군가 해결을 해야겠지요.

    그런데 지금 문제는, 머리좋은 사람 한 두명으로 처리를 할 수 있는 규모를 벗어났다는 것입니다.

    머리좋은 사람 한 두명이 자기 뜻대로 비트코인을 주무르기에는 비트코인이 너무 커져버렸습니다.

    지금은 단순히 머리 좋은 사람의 재능에 따라 개발이 진행되면 안되고

    자금을 투입해서 스케줄대로 개발 플랜이 이루어져야하는데 이를 해줄 사람 혹은 단체는 비트코인 재단뿐이라는 생각입니다.

    머리좋은 사람이라도 여러가지 과정을 거쳐야하는데 다크코인처럼 됐다 안됐다하는 식이면 비트코인 박살나는거 한순간이거든요.
  • @
    참고로 현재 일일 btc 트랜잭션피가 13 btc 정도입니다.
    https://blockchain.info/charts/transaction-fees

    마이너들 전체 수입의 0.32%에 불과하지요.
    그럼에도 불구하고 개별 트랙잭션의 입장에서 보면 여전히 트랙재션피가 너무 높아요, 특히 마이크로 페이먼트를 처리하기 힘들지요.
    트랜잭션 볼륨이 엄청나게 늘어나야 개당 트랜잭션피를 낯출 수 있을텐데, 이건 반대로 지적하신 것처럼 늘어나는 데이타량을 감당하는 비용이 같이 늘어나는 문제가 생기구요.

    마이너에게 들어가는 비용이 하루 $2,000,000 에서 $3,000,000 정도 됩니다. 문제는 이렇게 엄청나게 소모되는 비용이 정작 네크워크의 인프라 구축에는 거의 사용되지 않는다는데 있습니다. 해시량이 커져서 네트워크 보안이 더욱 강화된다고 믿고 있지만, 해시파워의 집중으로 인한 보안의 약화도 함계 진행되고 있습니다.

    지금보다 트랜잭션 볼륨이 수백배 이상 늘어나는 것을 버티면서, 크레딧 카드 정도의 authorization 스피드를 받쳐주려면 결국은 슈퍼 피어 노드의 존재가 불가피 합니다. 그런데 누가 이런 인프라 구축에 비용을 댈까요?

    현재의 PoW 모델과 마이닝 구조, 보상 구조로서는 불가능하다고 봅니다.
  • ?
    blockchain의 size가 큰 것이 이슈는 될 것 같습니다. 어떻게 해결할 지도 많이 궁금하구요. 좋은 글 잘 봤습니다. 작성하신 내용 중에 merkle tree의 size에 대해서 언급하셨는데, 실제 leaf의 값들은 transaction 리스트에 포함이 되고 이들에 최종 merkle root는 block header에 들어가지만 merkle tree의 전체 값들은 block에 포함되지 않는 것으로 알고 있습니다. "...머클트리의 데이터량도 상당히 큰 편으로 거래수에 따라 다르지만..."라고 기술하신 부분을 제가 잘못 이해했을 수도 있습니다. 다시 한 번 정리 감사 드려요~
  • ?
    @그린세상
    블럭헤더에 머클트리 루트(mrkl_root)가 포함됩니다.

    그리고 tx(거래 데이터부분)에서 제일 밑에 보면 "mrkl_tree" 부분에 머클 트리 데이터가 위치합니다.
    "mrkl_tree" 부분의 제일 아래에 있는 것이 머클투리 루트값(mrkl_root)이 됩니다.

    아래 링크의 제일 아랫부분의 "mrkl_tree" 부분과 블럭헤더 부분의 "mrkl_root"의 해쉬값을 확인해보세요.

    http://blockexplorer.com/rawblock/000000000000000023c17199630959f00d9fbf70562ab5eb4fa8c08784434918

    (링크를 확인해보면, 아래와 같습니다.
    헤더 부분의 "mrkl_root": "ba214f84aabbe3e84c8f2fe5c628400f6acdd2068813d6b911693f3b661ae4d9",
    "mrkl_tree"의 제일 나중에 위치한 해쉬값: "ba214f84aabbe3e84c8f2fe5c628400f6acdd2068813d6b911693f3b661ae4d9")

    머클트리 부분은 굉장히 직관적이고 쉬운부분이라서 쉽게 이해할 수 있습니다.

    시간이 나면, 관련 자료를 올려보겠습니다.
  • @loum
    감사합니다 자료좀 꼭좀 보고싶네요 ㅎ^^
  • ?
    @어른아이
    감사합니다.
  • @loum
    저도 관련글에 관심이 있습니다. 기대됩니다. 꼭 올려주세요.
  • ?
    @핀코인
    감사합니다.
  • 좋은내용 감사합니다
default debug random = 0 / type = READ / detected = READ

자유게시판

홍보/사기/불법을 제외한 모든 글작성이 가능합니다.

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
59714 자유 여태 모든것들을 뛰어넘는 희소식이 생겼네요. 넷텔러 라는 전자지갑 (전자화폐와 다름) 업체가 비트코인 입금을 오늘부로 받네요.   이거 엄청난 일입니다.   거의 모든 메이저급 도박사이트 (벳365,포커스타... 19 2 13162
지우긩
2015.03.26
59713 자유 저는 이제 코인시장을 떠납니다.   안녕하세요.   저는 금융투자에 오랜 시간을 보내왔고, 상당히 흥미진진해 하며 이것을 할때면 항상 즐겁습니다. 직장 다니면서 주식으로 시작해 크게 먹지는 ... 99 44 13154
비코10억
2017.12.18
59712 자유 농업용 전기 함부로 사용하시면 안됩니다. 거의 걸리신다고 보면 됩니다. 요즘도 심심찮게 농업용 전기 어떻게 써볼까? 하는 분들이 좀 보이는 것 같아서 글 남깁니다. 몇주 전 가상화폐 사업관련 이런저런 일로 시골에 다녀왔는데요... ... 9 0 13077
웹어스
2014.01.21
59711 자유 국내 시장은 미쳐있습니다. 나가야 합니다. 프리미엄 이라는 단어가 생긴 후 지금같이 괴이한 현상은 처음입니다. 곧 꺼지겠지~ 생각했는데...... 이제는 공포감마저 느끼게 됩니다. 영화의 한 장면이 떠나... 66 file 14 13027
WEBUS
2017.12.24
59710 자유 채굴... 그 오버의 끝은 어디인가? (부제. 나도 이제 오버 할 수 있다.)   제목은 거창하지만 오버를 셋팅하는 아주 기본적인 내용입니다. 아래만 잘 숙지하셔도 어느정도 오버 셋팅은 가능하리라 생각합니다.   참고로, 제가 지난번에 ... 26 45 13024
류스케
2017.07.05
59709 자유 주식으로 깡통차며 배웠던 간단한 사실 주식 처음 하던 시절 저도 특출날 게 없어서 귀도 얇고 쫄보라서 탐욕에 샀다가 공포에 파는 짓을 여러번 했습니다. 뭐... 결과는 깡통이었죠.   그러다 생각해보... 26 19 12951
다크핑거
2017.09.22
59708 자유 공장 전기 시설비는 얼마나 들까요? 또 산업용과 일반용 전기 값 차이 얼마나 되나요? 제가 안산 근처에 사는 관계로 안산 쪽 공장을 좀 알아봤습니다. 아무래도 서울쪽보다는 임대료가 싼 편이네요. 1안: 안산 아파트형 공장 60평. 기본 전기 용량 5... 10 0 12934
황금돼지
2014.01.05
59707 자유 요즘 대졸 초봉이 얼마나 되나요?? 지방 사립대 외국어 전공하는 학생입니다 얼마전에 중소기업 해외영업직으로 두군데 취업이됬는데 연봉 2800얘기하더라구요.. 아직 취업경험이 전무하다보니 이게... 38 0 12919
CYDA
2018.06.05
59706 자유 비트코인으로 아마존 쇼핑기(With Zincsave) -1- Zinc-Save 업체를 통해서 구입을 시도하였습니다. 관련글 링크(아마존, 새로운 브라우저에 비트코인 우호 상점으로 둔갑)     ZINC-SAVE 간략 소개   AMAZON 쇼... 11 file 10 12896
시프녹
2014.04.08
59705 자유 [코인소개] 제 2세대 가상화폐 NXT -1- 안녕하세요 비트데일리의 T&E 입니다. 여름은 다가오고, 기온은 오르고, 난이도도 오르지만 바람에 따라 오르락 내리락 위태롭게 움직이는 벚꽃처럼 가격만큼... 7 file 5 12874
BitT&E
2014.04.09
59704 자유 안녕하세요 저는 이제 나이 52살에 명예퇴직을 했습니다.   안녕하세요 저는 이제 나이 52살에 명예퇴직을 했습니다.   금두꺼비같은 자녀 2명, 사랑하는 마누라...와 살고 있습니다.   이나이에 퇴직을 당하니..앞이 막... 179 18 12839
드리니
2017.08.20
59703 땡글 회원 / ESN 홀더분들을 위한 땡글인의 밤 공지 안녕하세요!! ESN 운영위입니다! 땡글 회원 / ESN 홀더분들을 위한 첫번째 밋업 일정과 장소가 확정되었습니다! 운영위가 출범한다고 했던 것이 엊그제 같은데 ... 38 file 6 12836
ESN홍보
2019.06.20
자유 비트코인의 블럭체인 데이터 크기를 줄이는 방법. 현재 비트코인이 가진 가장 큰 문제 중 하나가 블럭체인의 크기 (현재 약 20G(?) 정도) 너무 커지는 것이고, 또한 거래가 늘어나면 그에 따라서 블럭체인의 데이... 22 13 12835
loum
2014.08.14
59701 자유 해킹당했습니다. 다들 조심하세요. 15일날 해킹을 당해 4 bit 가 날라갔습니다.   가상화폐에 대한 정보가 아주 잘 되있는 블로그였는데 그중에 소프트마이닝이라고 하면서 그 프로그램을 자기 pc에... 16 file 0 12801
hdsearch
2017.05.17
59700 자유 비트코인 의절 레전드 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ                       5 file 2 12769
이더리움살려내
2022.08.25
59699 자유 크립토키티 (CryptoKitties) 게임하는 법 이더리움에 관심있는 분들은 이미 많이 들어보셨을텐데요. 요즘 이더리움 네트워크가 크립토키티 게임때문에 완전 포화상태입니다.  개스피도 계속 올라가고 있습... 19 18 12757
atomrigs
2017.12.05
59698 자유 Blockchain 비트코인 지갑 만들기. 아무래도 컴퓨터에 지갑을 생성하자니 혹시라도 지워지면 낭패고 그렇다고 핸드폰에 생성하자니 핸드폰을 잃어버리면 또한 낭패죠. 그렇다고 아무 인터넷 비트코... 13 file 0 12725
쌍둥아빠
2013.11.06
59697 [오공] 7월 10일 레이븐 개발자 회의 분석 및 논평 // Ravencoin Devs Meeting(10 July 2020) v1.0 안녕하세요, 코인논객오공입니다. 7.10(금)에 진행된 레이븐 개발자 회의 분석 및 논평을 공유합니다. *편의상 '~이다/하다'체로 작성하였음을 미리 양해바랍니다... file 3 12686
코인논객오공
2020.07.11
59696 자유 요즘 암호화화폐를 빙자한 피라미드가 극성입니다. 대표적인 것이 코리아코인(http://www.koreacoins.org/ 관련쇼핑몰 http://www.allcoinmall.co.kr/ ), 월드코인( http://altaw.com/ ), 힉스코인, 다단계 리플코... 21 5 12677
서울코인
2015.02.07
59695 자유 자신의 비트코인 보유 확인은 어떻게 하는건가요?  제가 아직 비트코인을 사거나 한적이 없어서 그러는데    만약 사게 되면 어떤식으로 확인하고 쓰이는건가요?    거래소 안에서만 확인된다면 의미가 없는건데, ... 6 0 12655
시모네로
2013.11.29
목록
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 ... 2997 Next
/ 2997
default debug random = 0 / type = READ / detected = READ