블록체인에서 블록 전송 지연에 대해 궁금합니다
블록체인 궁금증이 있어서 질문드립니다
1. 100번째 거래 발생
2. 해당 거래 정보가 담긴 블록인 생성
3. 네트워크 내 모든 참여자에게 블록이 전송
4. 모든 참여자가 해당 거래의 타당성 확인
5. 승인된 블록을 기존 블록체인에 연결
하게 되는데
네트워크 내 모든 참여자에게 블록이 전송이 되는 중에 특정 사용자(홍길동)에게 블록이 전송이 되지 못하거나
전송이 지연이 되지 못하고 있는 상황이 발생한다는 가정하에
블록을 전송받은 다른 모든 참여자들 사이에서는 블록에 대한 유효성 검증이 끝나고
51%이상에 참여자들에게서 승인이 되어 99번 블록뒤에 100번 블록이 연결
특정 사용자(홍길동)은 99번 블록만 가지고 있는 상황 지속
이 상황에서 101번 거리 발생해서 다시 블록이 모든 참여자에게 전송
이때 특정 사용자(홍길동) 은 101째 블록은 전송을 받았음
모든 유효성 검증이 끝나면
홍길동은 99번 블록 - 101번 블록
나머지 모든 참여자는 99번 블록 - 100번 블록 - 101번 블록
이런 현상이 발생하게 되는 건가요?
블록체인에서 블록이 생성될 때 다른 노드들에게 제대로 전파되지 못하면 체인이 분기(Fork)될 가능성이 생기는 경우가 있습니다. 그리고 체인이 분기될 때는 같은 블록 높이를 공유하게 됩니다. 예를 들면 질문자께서 예로 든 99번 블록이 되겠습니다.
이렇게 체인이 분기될 경우 블록체인은 어떤 체인을 메인 체인으로 간주할 것인가 하는 것을 결정하게 됩니다.
이때 보통은 블록체인의 길이가 가장 긴(더 긴 블록체인을 완성한, 더 많은 블록을 포함하여 길어진) 체인이 메인 체인으로 인정하게 되고 해당 블록에 이어서 블록체인이 계속해서 이어지게 됩니다. 이 질문에서는 '99-100-101'로 이어지는 블록체인이 메인 체인이 되겠습니다.
그리고 앞서 살펴 본 것처럼 생성되었지만 메인 체인에 포함되지 못한 블록을 고아 블록이라고 하며 고아 블록의 생성자는 보상을 받지 못하게 됩니다. 그리고 고아 블록의 경우 메인 체인에 포함되지 못했기 때문에 블록 높이를 메인 체인의 블록과 더 이상 공유하지 않게 됩니다.
끝으로 시간이 지나면 다시 노드들이 메인 체인을 기준으로 한 블록 데이터베이스를 동기화하게 되므로 블록체인이 동일한 거래 내역을 공유하며 이어질 수 있게 됩니다.
답변이 도움이 되길 바랍니다.