블록체인 거래에 대해서 질문있습니다.
A가 B에게 어떤 송금을 했다고 하면 이 거래 관련 정보가 블록형태로 생성되는걸로 알고 있는데요 근데 블록 생성시에 거래 관련 기록을 모아서 merkle trees를 만들어서 블록을 생성해야 한다고 알고있는데 채굴자들은 어떻게 전세계 암호화 화폐 사용자들의 거래 정보를 수집하는건가요?
블록이 생성될 때 해당 블록에 포함된 거래 내역들을 두 개씩 묶어 암호화를 하여 해시값을 도출한 후 다시 두 개씩 묶어 암호화하는 작업을 계층적으로 반복함으로써 가장 높은 층위에 존재하는 머클루트 해시값이 나오게 되고 이것이 블록 헤더에 '머클 해시'로 저장됩니다.
그리고 다음 블록을 생성을 위해 마이닝 노드들이 무작위 논스 값을 해시 함수에 대입하면서 난이도 값과 같거나 낮은 값을 찾는 연산을 진행하고 논스 값을 찾게 되면 블록을 생성할 수 있게 됩니다.
이때 논스 값을 비롯해 이전 블록의 해시 값, 머클루트의 해시 값인 머클 해시, 블록이 생성된 시간, 난이도 등의 모든 값을 더한 후 이것을 해싱하게 되면 이 새로운 블록의 해시 값을 구할 수 있게 됩니다.
따라서 이전 블록의 머클 해시는 다음 블록이 생성될 때 해싱되어 다음 블록의 해시 값에 포함되게 됩니다.
이런 식으로 제네시스 블록부터 시작해서 계속해서 머클 해시가 최신 블록까지 이어지고 있고 이러한 블록에 대한 모든 정보를 풀 노드가 블록 데이터 베이스로 저장하고 있기 때문에 모든 비트코인의 거래 내역에 대한 정보를 알 수 있고 머클 해시 값을 통해 빠르게 거래 내역의 무결성을 검증할 수 있게 되는 것입니다.
답변이 도움이 되길 바랍니다.