블록체인에서 블록 전송 지연에 대해 궁금합니다

1. 100번째 거래 발생

2. 해당 거래 정보가 담긴 블록인 생성

3. 네트워크 내 모든 참여자에게 블록이 전송

4. 모든 참여자가 해당 거래의 타당성 확인

5. 승인된 블록을 기존 블록체인에 연결

하게 되는데

네트워크 내 모든 참여자에게 블록이 전송이 되는 중에 특정 사용자(홍길동)에게 블록이 전송이 되지 못하거나

전송이 지연이 되지 못하고 있는 상황이 발생한다는 가정하에

블록을 전송받은 다른 모든 참여자들 사이에서는 블록에 대한 유효성 검증이 끝나고

51%이상에 참여자들에게서 승인이 되어 99번 블록뒤에 100번 블록이 연결

특정 사용자(홍길동)은 99번 블록만 가지고 있는 상황 지속

이 상황에서 101번 거리 발생해서 다시 블록이 모든 참여자에게 전송

이때 특정 사용자(홍길동) 은 101째 블록은 전송을 받았음

모든 유효성 검증이 끝나면

홍길동은 99번 블록 - 101번 블록

나머지 모든 참여자는 99번 블록 - 100번 블록 - 101번 블록

이런 현상이 발생하게 되는 건가요?

    1개의 답변이 있어요!

    • 안녕하세요?

      전송지연이라 하면 홍길동 노드가 네트워크의 이상이나 단절이 일어나서 블록정보를 전송하거나 받지 못한 경우를 가정해보겠습니다. 채굴노드가 이상이 있다가 정상적인 상태가 되어 네트워크에 연결되면 주변의 노드들에게 version이라는 신호를 보내어 내가 가지고 있는 블록의 높이(Height)값을 보냅니다. 이때 주변노드들도 그들의 Height값으로 응답합니다.

      1.이 두 값을 비교하여 나의 Height값으면 같은 블록정보를 가지고 있으므로 상관없지만

      2. 만약 나의 Height값이 작다면 내가 old version을 가지고 있는 것이므로 getblock이라는 신호를 통해 주변의 노드들이 가지고 있는 블록을 가져와 Height을 같게 만드는 동기화를 하게 됩니다. 홍길동은 Height이 100이 되고, 나머지는 101이 되므로 주변 노드들에게서 최신의 블록을 받게 됩니다.

      감사합니다.