P2P 네트워크 레이어

노드

P2P 네트워크를 포함한 모든 컴퓨터 네트워크는 노드들 간의 연결로 구성되어 있습니다.

노드의 종류

노드에는 채굴(mining)이 가능하지만 높은 성능을 요구하는 풀노드와, 채굴은 불가능하지만 가볍에 운영할 수 있는 라이트웨이트 노드가 있습니다.

노드 운영을 위한 하드웨어 사양

기본적으로 채굴 기반의 블록체인 풀노드를 운영하기 위해서는 높은 연산력을 필요로 합니다. 채굴을 위해서는 끊임없이 해시 작업을 해야하기 때문입니다.

네트워크 구성

노드끼리의 연결을 네트워크라 부르며 이를 위해서는 노드를 발견하고 연결을 유지해야 합니다. 네트워크에 연결을 완료하면 라우팅을 통해 어떤 노드에게 데이터를 전달해야 할지를 결정하고 이를 통해 네트워크의 일부가 됩니다.

부트스트래핑

부트스트래핑은 노드를 최초로 실행했을 때 일어나는 과정으로 이웃 노드 정보를 가져오는 과정입니다.

노드 발견

부트스트래핑을 통해서 혹은 이전에 연결되었던 내역을 통해 이웃 노드와 연결하고 각자 알고 있는 노드 목록을 교환합니다.

연결 유지

노드와 연결 후 지속적으로 메시지를 주고받으며 연결을 유지합니다.

라우팅

이웃 노드로부터 데이터 메시지가 전송되면 이를 어떤 노드에게 전달해야 할지를 결정합니다.

블록 동기화

네트워크 구성을 통해 다른 노드와 연결이 되었으면 블록 동기화 작업을 통해 최신 정규 블록체인 정보를 가져와야합니다.

최초(genesis) 블록

최초 블록은 모든 노드 클라이언트에 하드코딩(hard-coding) 되어있는, 모든 노드가 공통적으로 알고 있는 유일한 선조 블록입니다. 최초 블록 이후로 생성된 블록들을 연결하는 형태로 블록체인이 생성됩니다.

트랜잭션의 구성

각 블록체인별 트랜잭션의 형식과 구성 요소를 알아봅니다.

메모리 풀

메모리 풀은 아직 블록에 포함되지 않은, 혹은 포함 여부를 알 수 없는 트랜잭션을 모아놓은 임시 데이터 저장소입니다.

블록의 구성

보통 블록은 트랜잭션의 목록과 블록 헤더로 구성되어 있습니다.

고아(orphan) 블록

고아 블록이란 부모 블록의 정보를 알 수 없는 블록으로 동기화 과정에서 임시적으로 나타나는 현상입니다.