코인의 거래기록은 어디에 저장되나요?
블록이 생성되고 코인이 거래되고 하는 기록들이 있을텐데
이런 기록들은 어디에 저장되나요?
별도 서버에 저장되나요? 아니면 유저들 PC에 저장되나요?
초보라 자세히 설명 부탁드려요
블록체인은 각각의 노드들이 직접적으로 연결되어 이루어지는 하나의 네트워크라고 할 수 있습니다. 그리고 거래 내역은 블록에 기록되어 체인으로 이어져 하나의 데이터베이스를 이루게 됩니다.
그런데 이러한 블록 데이터베이스는 특정한 일부 서버에 저장되는 것은 아닙니다. 블록체인에 분산 원장(거래 장부) 기술이 적용되어 있다고 할 때, 이러한 원장은 블록체인 상의 노드들에 분산되어 저장되고 같은 내용을 끊임없이 동기화하며 이어지고 있습니다.
즉, 블록에 담긴 거래 내역(블록 데이터 베이스)은 동기화 과정을 거쳐 다운로드 되어 각 노드의 저장장치에 저장된다고 할 수 있습니다.
좀 더 자세히 설명드리면, 우리가 암호화폐 지갑(라이트 웨이트 노드)을 이용하는 것이 아니라 각 블록체인이 제공하는 클라이언트 소프트웨어를 다운로드하여 풀 노드가 되려고 한다고 할 때 다른 노드들에게서 전체 '블록 데이터 베이스'를 다운로드 받는 과정이 필요합니다.
이러한 데이터 베이스가 블록체인의 분산원장이라고 할 수 있으며 풀 노드의 경우 0번 높이의 블록부터 현재 시점의 가장 최신 블록에 대한 정보까지 동기화하여 컴퓨터에 다운로드를 받아 저장할 수 있습니다. 즉 모든 거래 내역이 기록된 블록에 대한 정보를 PC에 다운로드 받는 것이죠.
그러므로 거래 내역으로서의 블록의 데이터 베이스가 어디에 저장되느냐고 한다면 각 노드의 컴퓨팅 기기 혹은 장비에 저장된다고 할 수 있습니다. 하지만 새롭게 생성되고 있는 블록은 어디에 위치하고 있는 것이냐 하는 문제가 생깁니다.
따라서 결론적으로 말씀드리자면 블록체인이 수많은 노드들이 연결된 하나의 네트워크를 이룬다고 본다면 기존의 블록체인의 데이터 베이스는 네트워크 상의 노드들에 저장되고 새로운 블록의 생성은 블록체인 네트워크 상에서 이루어진다고 정리하는 것이 좋을 것입니다.
그리고 이렇게 블록이 생성되고 나면 그것이 이전 블록과 체인으로 연결되고 다른 노드들에 전파되어 다시 블록 데이터베이스화 되는 것이라고 할 수 있습니다.
끝으로 비트코인 블록체인의 경우 현재까지의 블록 데이터베이스의 용량이 257.64 GB이고 이더리움 블록체인은 118.32 GB 정도 이므로 생각보다 데이터베이스의 용량이 부담되는 수준은 아니라고 할 수 있겠습니다.
답변이 도움이 되길 바랍니다.
안녕하세요. 코인의 거래내역 저장에 대하여 답변드리겠습니다.
각 블록체인마다 데이터를 검증하고 블록을 생성하여 블록체인에 블록을 연결하는 역할을 하는 블록 프로듀서(BP) 노드가 존재합니다. 이런 노드는 몇가지 특성의 노드가 존재하지만 그 중 풀노드(Full Node)는 블록을 생산하는 역할을 포함하여 블록체인의 첫번째 블록(제네시스 블록)부터 현재까지 생성된 블록 정보를 모두 보유한(저장) 노드를 말합니다. 즉 풀노드는 해당 블록체인의 모든 정보를 가지고 있다는 특징을 가집니다.
풀노드의 역할
거래자들간의 정보를 분석하여 유효한 거래인지 확인합니다.
새로운 블록이 추가될 경우 이전거래 내역이 일치하는지 검증합니다.
블록생성시 이중지불이 발생하는지 확인합니다.
새로운 불록이 생성시 올바른 보상이 되는지 확인합니다.
풀노드에 가지고 있는 정보를 주변 노드에 전파하여 공유합니다.
그러나 모든 노드가 풀노드의 역할을 수행하지 않으며 일부 소수의 노드들에 의해 풀노드가 운영되고 있습니다.
풀노드를 운영하기 위해서는 추가적인 장비(블록 데이터 저장)가 필요하므로 유지비용이 상승될 수 있습니다.
또한 현재까지 풀노드에 대한 별도이 보상이 없다보니 풀노드 운영은 그 만큼 중요도와 책무 그리고 유지능력이 가능한 노드여야만 가능하게 됩니다.
감사합니다.
거래기록은 주기적으로 생성되는 블록에 저장됩니다.
비트코인을 예를 들어 설명하면, 주기가 약 10분정도로 블록이 생성되며, 이는 POW 합의알고리즘에 의해 채굴자들이 블록을 채굴합니다. 블록을 가장 먼저 찾아내는 채굴자는 블록에서 거래정보(트랜잭션)를 가져올 수 있습니다.
하지만 채굴자 입장에서도 블록 크기는 한정되어 있고 수수료를 많이 내는 트랜잭션을 최대한 많이 가져오고 싶어하겠죠? 그래서 채굴자는 트랜잭션 수수료가 가장 많은 기록부터 자신이 생성한 블록에 담아 전송하게 됩니다.
블록체인이기 때문에 상호간의 신뢰를 필요하게 됩니다. 블록을 생성하여 자신이 거래정보를 담은 블록을 전파해야 되는데 이 블록이 조작된것이 아닌지, 유효한지 유효성 검증을 한 후 노드에게 전파하게 됩니다.
각 노드들은 블록의 생성시 여러가지 기능으로 권리를 취득합니다.
블럭을 생성할 당시 해당 노드가 많이 몰려서 채굴을 하면 블럭의생성에 도움을 줍니다. 당근 고아블럭이 발생되지 않습니다.
블럭생성시 블럭은 헤더와 바디로 구성이 됩니다. 여기서개인들의(계좌정보) 개인키등과 공개키등은 헤더에 저장이됩니다.
또한 각 거래정보원장인 트랜잭션 정보등은 바디에 저장이 됩니다.
이런 여러가지 정보는 블럭에 저장이되고 각 노드들은 이러한 거래정보를 검증하고 확인하여 블럭에 저장하고 유효한 블럭을 생성합니다.
이때 블럭이생성될 당시 여러 블럭보다 가장 중요도가 높은 블럭을 선정하여 유효한 다음 블럭을 체인처럼 이어갑니다. 이때 중요도란 얼마만큼의 노드로 얼마만큼의 정보를 얼마나 빠르게 저장이 되었나를
중요하게 선정하며 블럭으로 선정되면 채굴보상으로 코인을 지급받습니다.
이처럼 노드들이 개인하나로 접근하지 않고 여러 노드들이 뭉처서 큰 단체노드로 접근하는 방식은 서로 얼마만큼의 중요한 노드해시를 가지고
있는가에 따라 유효한 블럭으로 선정된다는 의미입니다.
지분증명방식으로 채굴시는 얼마만큼의 지분해시를 보유하고 있는가에따라 블럭에대한 정보수정의 권한을 얻기도 합니다.
이처럼 마이닝노드들은 막강한 해시의권한을 행사하기도 합니다