네트워크
네트워크를 운영하는 단계는 다음과 같습니다:
- 새로운 거래가 모든 노드에 전파됩니다.
- 각 노드는 새로운 거래들을 하나의 블록에 모읍니다.
- 각 노드는 해당 블록에 대한 난이도 높은 작업증명을 찾기 위해 노력합니다.
- 노드가 작업증명을 찾으면, 그 블록을 모든 노드에 전파합니다.
- 노드는 블록 내의 모든 거래가 유효하며 이미 사용되지 않았을 경우에만 그 블록을 승인합니다.
- 노드는 승인된 블록의 해시를 이전 해시로 사용하여 체인 내 다음 블록을 생성함으로써 블록 승인을 표현합니다.
노드들은 항상 가장 긴 체인을 올바른 것으로 간주하고 이를 확장하기 위해 계속 작업합니다. 만약 두 노드가 동시에 다음 블록의 서로 다른 버전을 전파하면, 일부 노드는 그 중 하나를 먼저 받을 수 있습니다. 이 경우, 먼저 받은 블록을 작업하지만, 다른 분기도 더 길어질 경우를 대비해 저장해 둡니다. 다음 작업증명이 발견되어 한 분기가 더 길어지면, 그 분기가 우위에 서게 되어 동점이 깨집니다. 다른 분기를 작업하던 노드들은 더 긴 분기로 전환하게 됩니다.
새로운 거래 전파는 반드시 모든 노드에 도달할 필요는 없습니다. 많은 노드에 도달하기만 하면 곧 블록에 포함됩니다. 블록 전파도 메시지 손실에 견디도록 설계되어 있습니다. 만약 노드가 블록을 받지 못하면, 다음 블록을 받을 때 이를 인지하고 누락된 블록을 요청하게 됩니다.