결론적으로 말씀드리자면 POW 채굴에서 해시 함수의 해시 값을 찾는다는 것은 값을 찾기는 어렵지만 찾은 값을 검증하는 것은 매우 쉬운, 연산을 하는 것이라고 생각하시면 되겠습니다. 따라서 마이닝 노드들이 각자 난이도 타겟 값과 같거나 낮은 해시 값을 찾기 위해 무작위 논스 값을 대입하여 연산하고 한 노드가 해당 해시 값을 찾게 되면 그 해시 값을 빠르게 검증한 후 블록을 생성하게 됩니다.
좀 더 자세하게 이것을 A가 B에게 1 BTC를 전송하는 상황을 가정하고 트랜젝션이 처리되는 과정에 적용해 설명해 드리도록 하겠습니다.
A가 B에게 1BTC를 보내는 트랜젝션을 발생시킵니다. 이 트랜젝션이 마이닝 노드들에게 전파되면 해당 마이닝 노드들은 해당 트랜젝션이 유효한지 검증하게 됩니다.
그리고 마이닝 노드는 A가 발생시킨 트랜젝션을 자신의 Mempool에 저장합니다. 즉, Mempool에는 거래의 유효성은 검증되었지만 아직 거래가 완전히 컨펌되지 않은(0 컨펌) 트랜젝션들이 저장된다고 할 수 있습니다.
마이닝 노드들은 각자 난이도 타겟 값과 같거나 낮은 값을 찾기 위해 해시 함수에 논스를 대입하며 연산을 실행하고, 한 노드가 해시 값을 찾게 되면 다른 노드들이 해시 값이 맞는지 검증한 후 그것이 맞다면 해시 값을 찾은 노드가 새로운 블록을 생성하고 Mempool에 저장된 트랜젝션들을 수수료가 많은 순서로 기록하게 됩니다.
블록 크기가 한정되어 있기 때문에 우선 순위에 따라 블록에 거래내역을 기록하는 것이 완료되면 블록을 생성하고 그것을 다른 노드들에게 전파하여 블록이 검증받게 되면서 트랜젝션이 1 컨펌을 받게 됩니다. 이런 과정을 통해 트랜젝션이 처리되고 블록이 생성된다고 할 수 있습니다.