네트워크와 노드
Substrate 기반 체인을 위한 다양한 네트워크 유형과 노드 역할을 설명합니다.
블록체인을 구축할 때, 네트워크를 정의하는 것이 유용합니다. 예를 들어, 하나의 라우터에 연결된 컴퓨터 집합은 가정용 네트워크로 간주될 수 있습니다. 방화벽은 기업용 네트워크를 정의하는 경계일 수 있습니다. 작은 격리된 네트워크는 공통 통신 프로토콜을 통해 넓은 지역 네트워크에 연결될 수 있습니다. 마찬가지로, 블록체인 네트워크는 경계와 다른 블록체인과의 격리 또는 통신에 의해 정의된다고 생각할 수 있습니다.
Substrate는 블록체인 빌더의 도구로서, 상황에 맞게 경계를 정의하고 원하는 유형의 네트워크를 구축하며, 네트워크 내에서 다른 노드의 역할을 결정할 수 있도록 합니다.
네트워크 유형
Substrate 기반 블록체인은 다양한 유형의 네트워크 아키텍처에서 사용될 수 있습니다. 예를 들어, Substrate 블록체인은 다음과 같은 네트워크 유형을 구축하는 데 사용됩니다:
개인 네트워크: 제한된 노드 집합에 대한 액세스를 제한하는 네트워크입니다.
솔로 체인: 자체 보안 프로토콜을 구현하며 다른 체인과 연결하거나 통신하지 않는 체인입니다. 비트코인과 이더리움은 Substrate 기반이 아닌 솔로 체인의 예입니다.
릴레이 체인: 다른 체인에 대한 탈중앙화된 보안과 통신을 제공하는 체인입니다. Kusama와 Polkadot은 릴레이 체인의 예입니다.
파라체인: 릴레이 체인에 연결되어 같은 릴레이 체인을 사용하는 다른 체인과 통신할 수 있는 체인입니다. 파라체인은 생성된 블록을 최종화하기 위해 릴레이 체인에 의존하기 때문에, 파라체인은 대상이 되는 릴레이 체인과 동일한 합의 프로토콜을 구현해야 합니다.
노드 유형
블록체인은 네트워크 노드가 동기화되어 일관된 최신 블록체인 상태를 제공해야 합니다. 각 동기화된 노드는 블록체인의 사본을 저장하고 들어오는 트랜잭션을 추적합니다. 그러나 전체 블록체인의 사본을 유지하는 것은 많은 저장 공간과 컴퓨팅 리소스를 필요로 하며, 제네시스 블록부터 가장 최근 블록까지 모든 블록을 다운로드하는 것은 대부분의 사용 사례에 적합하지 않습니다. 체인의 보안과 무결성을 유지하면서 클라이언트가 블록체인 데이터에 액세스하기 위한 리소스 요구 사항을 줄이기 위해, 체인과 상호작용할 수 있는 다양한 유형의 노드가 있습니다:
풀 노드
풀 노드는 블록체인 네트워크 인프라의 중요한 부분이며 가장 일반적인 노드 유형입니다. 풀 노드는 블록체인 데이터를 저장하고 일반적으로 블록체인 작업에 참여합니다. 예를 들어, 블록 작성과 검증, 트랜잭션 수신과 검증, 사용자 요청에 대한 데이터 제공 등의 작업을 수행합니다.
기본적으로 풀 노드는 가장 최근 256개 블록만 저장하고 제네시스 블록을 제외한 이전 상태를 삭제하여, 풀 노드가 무한정 커지고 모든 디스크 공간을 소비하는 것을 방지합니다. 풀 노드가 보유하는 블록 헤더는 제네시스 블록부터 가장 최근 블록까지의 모든 블록 헤더를 보유하므로 상태가 올바른지 검증할 수 있습니다. 풀 노드는 모든 블록 헤더에 액세스할 수 있기 때문에, 제네시스 블록부터 모든 블록을 실행하여 전체 블록체인의 상태를 재구성하는 데 사용될 수 있습니다. 따라서 이전 상태에 대한 정보를 검색하는 데는 훨씬 더 많은 계산이 필요하며, 일반적으로 아카이브를 사용해야 합니다.
풀 노드를 사용하면 체인의 현재 상태를 읽고 네트워크에 직접 트랜잭션을 제출하고 검증할 수 있습니다. 이전 블록의 상태를 삭제함으로써, 풀 노드는 아카이브 노드보다 훨씬 적은 디스크 공간을 필요로 합니다. 그러나 풀 노드는 이전 상태에 대한 정보를 조회하고 검색하기 위해 훨씬 더 많은 계산 리소스가 필요합니다. 과거 블록을 조회해야 하는 경우, 풀 노드를 삭제하고 아카이브 노드로 다시 시작해야 합니다.
아카이브 노드
아카이브 노드는 전체 상태가 포함된 모든 과거 블록을 저장하는 풀 노드와 유사합니다. 아카이브 노드는 주로 블록 익스플로러, 지갑, 토론 포럼 등과 같은 유틸리티에서 사용되며, 과거 정보에 액세스해야 하는 경우에 유용합니다.
아카이브 노드는 과거 상태를 보유하기 때문에 많은 디스크 공간이 필요합니다. 디스크 공간 요구 사항 때문에, 아카이브 노드는 풀 노드보다는 일반적으로 적게 사용됩니다. 그러나 아카이브 노드를 사용하면 언제든지 체인의 과거 상태를 조회할 수 있습니다. 예를 들어, 특정 블록에서 계정 잔액을 조회하거나 특정 상태 변경으로 이어진 트랜잭션에 대한 세부 정보를 확인하는 등의 쿼리를 아카이브 노드에서 실행하면 더 빠르고 효율적입니다.
라이트 클라이언트 노드
라이트 클라이언트 노드는 최소한의 하드웨어 요구 사항으로 Substrate 네트워크에 연결할 수 있도록 합니다.
라이트 클라이언트 노드는 최소한의 시스템 리소스를 필요로 하기 때문에, 웹 기반 애플리케이션, 브라우저 확장 프로그램, 모바일 기기 애플리케이션 또는 사물 인터넷(IoT) 기기에 내장될 수 있습니다. 라이트 클라이언트 노드는 런타임과 RPC 엔드포인트를 통해 현재 상태에 액세스할 수 있습니다. 라이트 클라이언트 노드의 RPC 엔드포인트는 Rust, JavaScript 또는 다른 언어로 작성할 수 있으며, 블록 헤더를 읽고 트랜잭션을 제출하고 트랜잭션의 결과를 볼 수 있습니다.
라이트 클라이언트 노드는 블록체인 또는 네트워크 작업에 참여하지 않습니다. 예를 들어, 라이트 클라이언트 노드는 블록 작성이나 검증, 트랜잭션 전파 또는 합의에 대한 역할을 담당하지 않습니다. 라이트 클라이언트 노드는 과거 블록을 저장하지 않기 때문에, 해당 데이터를 가지고 있지 않은 노드에게 요청하지 않으면 과거 데이터를 읽을 수 없습니다.
노드 역할
노드를 시작할 때 지정하는 명령줄 옵션에 따라, 노드는 체인의 진행과 관련된 다른 역할을 수행하고 온체인 상태에 대한 다른 수준의 액세스를 제공할 수 있습니다. 예를 들어, 새로운 블록을 작성할 수 있는 노드와 피어와 통신할 수 있는 노드를 제한할 수 있습니다. 블록 프로듀서로서 권한이 없는 피어 노드는 새로운 블록을 가져올 수 있고, 트랜잭션을 수신하고, 새로운 트랜잭션에 대한 정보를 다른 노드에게 송수신할 수 있습니다. 또한, 노드를 네트워크에 연결하지 못하도록 하거나 특정 노드와의 통신에 제한을 둘 수도 있습니다.
다음 단계로 넘어가기
Substrate를 사용하여 완전히 독립적이고 개인용 솔로 체인부터 자체 릴레이 체인 생태계 또는 호환 가능한 파라체인까지 거의 모든 유형의 네트워크를 구축할 수 있습니다.
네트워크와 노드 유형에 대해 더 깊이 알아보려면, 다음 주제를 살펴보세요.
Last updated