노드가 장부를 기록하는 일과 채굴은 별개의 작업인 것인지요?
노드가 되면 거래 내역을 장부에 작성하는 일을 한다고 알고 있고 이러한 거래 내역에 대한 수수료를 향후 블록을 만든 노드가 지급 받는 다고 알고 있습니다. 그리고 채굴이란 것은 해시함수를 푸는 과정이라고 알고 있으며 이 해시함수를 푼 사람에게 고정된 비트코인을 보상금으로 지급한다고 알고 있습니다. 그리고 모든 노드가 채굴을 하는 것이 아니라는 말씀도 들었습니다.
장부도 기록하고 해시함수 푸는 작업도 열심히 해서 해시 함수를 가장 먼저(?)풀면 그 중에서 가장 무거운(여기서는 더 열심히 일한) 블록이 채택이 되고 이 경우 해당 블록에 기록된 거래내역이 새로운 체인을 만들고 보상을 받고 그렇지 못한 블록들은 다 퇴출 다시 작업을 시작한다고 들었습니다.
노드가 장부를 기록하는 일과 채굴은 별개의 작업인 것인지요?
질문자께서 질문해주신 내용을 중심으로 답변을 드리도록 하겠습니다.
노드가 장부를 기록하는 일과 채굴은 별개의 작업인 것인지요?
결론부터 말씀드리면 마이닝 노드가 거래의 유효성을 검증하고 해시 함수의 연산 과정을 거쳐 해시 값을 찾을 경우 거래 내역을 블록에 포함시켜(기록하여) 생성하고 채굴 보상을 받는다고 보시면 되겠습니다.
즉, 연산과정과 거래 내역이 포함된 블록의 생성은 각각 세부적으로 나눈나면 별개의 작업일 수도 있지만 '블록의 생성 또는 채굴'이라는 전체 작업 속에서 연속적으로 이어지는 작업으로 생각하시면 좋겠습니다.
보다 자세한 설명을 원하시면 이어지는 내용을 참고하시면 좋겠습니다. A가 B에게 1 BTC를 전송하는 상황을 가정하고 트랜젝션이 처리되는 과정을 설명해 드리면서 답변을 드리도록 하겠습니다.
A가 B에게 1BTC를 보내는 트랜젝션을 발생시킵니다. 이 트랜젝션이 마이닝 노드들에게 전파되면 해당 마이닝 노드들은 해당 트랜젝션이 유효한지 검증하게 됩니다.
그리고 마이닝 노드는 A가 발생시킨 트랜젝션을 자신의 Mempool에 저장합니다. 즉, Mempool에는 거래의 유효성은 검증되었지만 아직 거래가 완전히 컨펌되지 않은 트랜젝션들이 저장된다고 할 수 있습니다.
마이닝 노드들은 난이도 타겟 값과 같거나 낮은 값을 찾기 위해 해시 함수에 논스를 대입하며 연산을 실행하고, 해시 값을 찾아 새로운 블록을 생성할 수 있게 된 마이닝 노드는 새 블록에 Mempool에 저장된 트랜젝션들을 수수료가 많은 순서로 기록하게 됩니다.
블록 크기가 한정되어 있기 때문에 우선 순위에 따라 블록에 거래내역을 기록하는 것이 완료되면 블록을 생성하고 그것을 다른 노드들에게 전파하여 블록이 검증받게 되면서 1 컨펌을 받게 됩니다. 이런 과정을 통해 트랜젝션이 처리되고 블록이 생성된다고 할 수 있습니다.
답변이 도움이 되길 바랍니다.