네트워크의 기본
Web3에서 네트워크 인프라는 분산형 애플리케이션(dApp)이 안전하고 효율적으로 작동할 수 있도록 하는 데 매우 중요합니다. Web3는 블록체인 기술 위에 구축된 분산형 웹에 대한 비전으로, 사용자가 자신의 데이터를 제어할 수 있고 정부 및 기업의 중앙 집중식 제어를 받지 않습니다.
Web3에서 네트워크는 분산 애플리케이션이 글로벌 규모로 실행될 수 있는 인프라를 제공하기 때문에 중요합니다. 강력하고 안정적인 네트워크 인프라가 없으면 dApp이 제대로 작동하지 못하고 사용자 환경에 부정적인 영향을 미칠 수 있습니다.
Web3에서 네트워크가 중요한 주요 이유
- 분산화: Web3에서 분산은 핵심 원칙이며, 네트워크는 이를 가능하게 하는 데 중요한 역할을 합니다. 분산형 네트워크를 사용하면 단일 장애 지점이 발생하지 않고 노드 네트워크 전체에 데이터가 분산됩니다. 따라서 한 개체가 데이터를 제어하거나 조작하는 것이 훨씬 더 어려워집니다.
- 보안: Web3는 분산된 특성으로 인해 기존의 중앙 집중식 시스템보다 더 안전합니다. 그러나 공격으로부터 보호하고 전송되는 데이터의 무결성을 보장하려면 보안 네트워크가 여전히 필요합니다.
- 확장성: Web3가 계속 성장함에 따라 확장성이 점점 더 중요한 문제가 되고 있습니다. 블록체인에서 발생하는 사용자와 트랜잭션의 증가를 지원하기 위해서는 강력한 네트워크 인프라가 필요합니다.
- 상호 운용성: Web3는 다양한 기술을 기반으로 구축되며, 이러한 기술이 서로 원활하게 통신할 수 있도록 하려면 강력한 네트워크 인프라가 필요합니다.
전반적으로 네트워크는 Web3의 성공에 매우 중요하며, 개발자와 네트워크 엔지니어가 지속적으로 협력하여 미래의 분산된 애플리케이션을 지원할 수 있는 강력하고 확장 가능한 네트워크 인프라를 구축하는 것이 중요합니다.
네트워크 프로토콜
TCP(전송 제어 프로토콜)
TCP는 호스트에서 실행 중인 응용프로그램 간에 데이터 패킷을 안정적으로 전송하고 순서를 지정하며 오류를 검사하는 인터넷 프로토콜 제품군의 핵심 프로토콜입니다. 전자 메일, 파일 전송 및 웹 검색과 같은 많은 인기 있는 응용 프로그램에서 사용됩니다. TCP는 세방향 HandShake 프로세스를 사용하여 두 호스트 간의 연결을 설정하며, 정체 제어, 흐름 제어 및 오류 복구와 같은 기능을 포함하여 안정적인 데이터 전송을 보장합니다.
HTTP(Hypertext Transfer Protocol)
HTTP는 월드 와이드 웹을 통해 데이터를 전송하는 데 사용되는 응용 프로그램 계층 프로토콜입니다. 웹에서의 데이터 통신의 기반이며 웹 브라우저와 서버가 서로 통신하기 위해 사용합니다. HTTP는 요청/응답 모델을 사용합니다. 여기서 클라이언트는 서버에 요청을 보내고 서버는 요청된 데이터로 응답합니다. HTTP의 가장 일반적인 버전은 HTTP/1.1이며, 캐시, 파이프라인 및 영구 연결과 같은 기능을 포함하여 성능을 향상시킵니다.
Web Socket
웹 소켓은 단일 TCP 연결을 통해 클라이언트와 서버 간의 실시간 양방향 통신을 가능하게 하는 프로토콜입니다. 온라인 게임, 채팅 애플리케이션 및 주식 거래 플랫폼과 같이 실시간 통신이 필요한 애플리케이션에 자주 사용됩니다. Web Socket은 실시간으로 양방향으로 데이터를 전송할 수 있는 대기 시간이 짧은 고성능 통신 채널을 제공합니다.
RPC(원격 프로시저 호출)
RPC는 클라이언트가 로컬 프로시저 호출인 것처럼 원격 서버에서 프로시저를 호출할 수 있도록 하는 프로토콜입니다. 시스템의 여러 구성 요소가 네트워크를 통해 서로 통신해야 하는 분산 시스템에서 일반적으로 사용됩니다. RPC는 네트워크 통신의 세부 정보를 추상화하는 데 사용되며 클라이언트가 원격 서버에서 절차를 호출할 수 있는 간단하고 투명한 방법을 제공합니다.
gRPC
gRPC는 고성능, 확장성 및 효율적인 분산 시스템을 구축하기 위해 Google이 개발한 오픈 소스 프레임워크입니다. Protocol Buffers 데이터 형식을 사용하고 여러 프로그래밍 언어를 지원하므로 마이크로 서비스 및 기타 분산 응용 프로그램을 개발하는 데 널리 사용됩니다. gRPC는 HTTP/2를 전송 프로토콜로 사용하고 로드 밸런싱, 흐름 제어 및 양방향 스트리밍과 같은 기능을 제공하여 성능과 확장성을 향상시킵니다.
결론적으로, 확장 가능하고 효율적이며 신뢰할 수 있는 분산 시스템을 구축하려면 다양한 네트워크 프로토콜을 이해하는 것이 필수적입니다. TCP는 안정적이고 질서 있는 데이터 전송을 제공하고, HTTP는 웹에서 데이터 통신의 기반이며, Web Socket은 실시간 통신을 가능하게 하며, RPC는 클라이언트가 원격 절차를 호출할 수 있는 투명한 방법을 제공하며, gRPC는 확장 가능하고 효율적인 분산 시스템을 구축하기 위한 강력한 프레임워크입니다.
P2P Network
P2P(Peer to Peer) 네트워크는 네트워크의 각 노드가 동일한 책임을 지고 네트워크의 다른 노드와 직접 통신할 수 있는 분산형 네트워크 유형입니다. 이는 하나의 중앙 서버가 여러 클라이언트에 서비스를 제공하는 전통적인 클라이언트-서버 네트워크와는 대조적입니다.
P2P 네트워크에서 각 노드는 클라이언트이면서 서버입니다. 즉, 네트워크의 다른 노드에 리소스를 요청하고 제공할 수 있습니다. 이를 통해 일부 노드가 오프라인 상태가 되더라도 네트워크가 계속 작동할 수 있으므로 높은 수준의 확장성과 중복성이 가능합니다.
P2P 네트워크에는 파일 공유, 콘텐츠 배포, 암호화폐 거래 등 다양한 응용 프로그램이 있습니다. 이러한 맥락에서 P2P 네트워크는 중앙 기관 없이도 안전하고 분산된 트랜잭션 및 데이터 공유를 가능하게 합니다.
그러나 P2P 네트워크는 보안 문제와 잠재적인 성능 문제를 포함한 몇 가지 과제도 제시합니다. 결과적으로, 네트워크 엔지니어와 개발자는 P2P 네트워크가 안전하고 효율적이며 확장 가능하도록 노력해야 합니다.
전반적으로, P2P 네트워크는 분산된 통신 및 트랜잭션을 위한 강력하고 다목적인 도구이며, 광범위한 산업 및 애플리케이션에 혁명을 일으킬 수 있는 잠재력을 가지고 있습니다.
Bitcoin Network
비트코인 네트워크는 비트코인 블록체인에서 거래를 촉진하는 데 사용되는 분산형 P2P 네트워크입니다. 네트워크는 노드로 구성되며, 노드는 본질적으로 네트워크에 연결되어 블록체인을 유지 관리하는 개별 컴퓨터입니다.
Client Communication Node (bitcoind) with JSON RPC
노드가 서로 통신하는 한 가지 방법은 JSON RPC를 사용하는 것입니다. JSON RPC는 노드가 네트워크를 통해 서로 통신할 수 있도록 하는 원격 프로시저 호출 프로토콜입니다. 클라이언트 노드(비트코인)는 JSON RPC를 사용하여 네트워크의 다른 노드로 요청을 전송하며, 이러한 요청은 수신 노드에서 처리됩니다.
Node (bitcoind) Communication Node (bitcoind) with Gossip Protocol(TCP)
노드가 서로 통신하는 또 다른 방법은 가십 프로토콜을 사용하는 것입니다. 가십 프로토콜은 네트워크를 통해 정보를 전파하는 데 사용되는 TCP 기반 프로토콜입니다. 노드(비트코인)가 새 블록 또는 트랜잭션을 수신하면 가십 프로토콜을 사용하여 해당 정보를 네트워크의 다른 노드로 전파합니다.
Node (bitcoind) Communication DNS Node with Gossip Protocol(TCP)
비트코인 네트워크의 노드는 가십 프로토콜을 사용하여 DNS 노드와 통신할 수도 있습니다. DNS 노드는 네트워크의 다른 노드에 대한 IP 주소 목록을 유지 관리하는 역할을 합니다. 노드(비트코인)가 네트워크에 가입하려는 경우 먼저 DNS 노드에 연결하고 가십 프로토콜을 사용하여 네트워크의 다른 노드 목록을 가져옵니다.
Block Sync
블록 동기화는 비트코인 네트워크의 노드가 블록체인 복사본을 동기화하는 프로세스입니다. 이는 모든 노드가 블록체인의 최신 정확한 복사본을 갖도록 보장하기 때문에 네트워크의 중요한 구성 요소입니다.
PingPong
블록 동기화 프로세스는 PingPong이라는 프로세스로 시작됩니다. PingPong 중 노드는 서로 메시지를 보내 네트워크의 지연 시간 및 연결을 확인합니다. 이렇게 하면 노드가 서로 효과적으로 통신할 수 있습니다.
Header Download
PingPong이 완료되면 블록 동기화 프로세스가 헤더 다운로드 단계로 이동합니다. 이 단계에서 노드는 블록체인에 있는 모든 블록의 헤더를 다운로드합니다. 이를 통해 블록체인의 현재 상태를 신속하게 파악하고 누락된 블록을 식별할 수 있습니다.
Block Download
헤더가 다운로드되면 노드가 블록 다운로드 프로세스를 시작합니다. 이 단계에서 노드는 네트워크의 다른 노드에서 실제 블록을 다운로드합니다. Genesis Block + 1 부터 시작하여 최근 Block 까지 Transaction을 포함한 전체 데이터 다운로드를 진행합니다.
이는 각 블록이 상당히 클 수 있기 때문에 시간이 많이 소요되는 프로세스입니다.
Block Validation
노드가 블록을 다운로드한 후에는 블록의 유효성을 검사하여 블록이 유효한지 확인해야 합니다.
여기에는 블록이 비트코인 프로토콜의 모든 규칙을 따르고 블록 내에 포함된 트랜잭션이 유효한지 확인하는 작업이 포함됩니다.
- 블록 구조가 일치한가
- Block Header Hash === Block Header Hash 인지 재계산
- Blcok timestamp < now() + 2hours
- 블록 사이즈가 1MB를 넘지 않는지
- etc...
Rule에 따라 검증을 진행합니다.
블록이 유효한 경우 노드는 블록체인 복사본에 블록을 추가합니다.
Transaction Propagation
비트코인 네트워크는 블록 동기화 외에도 트랜잭션 전파 프로세스도 포함합니다. 이 프로세스에는 트랜잭션이 새 블록에 포함될 수 있도록 네트워크를 통해 트랜잭션을 전파하는 작업이 포함됩니다. 노드가 새 트랜잭션을 수신하면 해당 트랜잭션을 확인한 다음 가십 프로토콜을 사용하여 네트워크의 다른 노드로 트랜잭션을 전파합니다.
Transaction Validation
마지막으로, 트랜잭션을 새 블록에 포함하려면 먼저 유효성을 검사해야 합니다. 여기에는 트랜잭션이 비트코인 프로토콜의 모든 규칙을 따르고 트랜잭션에 사용된 입력이 유효한지 확인하는 작업이 포함됩니다. 트랜잭션이 유효한 경우 새 블록에 포함되기를 기다리는 확인되지 않은 트랜잭션 목록인 mempool에 트랜잭션이 추가됩니다.
Block Propagation
블록 전파는 블록이 비트코인 네트워크의 다른 노드로 분산되는 과정입니다. Gossip 프로토콜을 사용하여 네트워크의 다른 노드에 블록을 브로드캐스트합니다. 블록을 수신하는 노드는 블록의 유효성을 검사하고 유효한 경우 네트워크의 다른 노드로 전파합니다.
블록 전파는 노드가 최신 블록을 최신 상태로 유지하고 트랜잭션을 보다 신속하게 검증할 수 있도록 하기 때문에 비트코인 네트워크의 중요한 구성 요소입니다. 그러나 블록 전파는 네트워크 정체 및 지연 시간과 같은 요인에 의해 영향을 받을 수 있으며, 이로 인해 블록 전파 프로세스가 느려지고 트랜잭션이 처리되는 데 걸리는 시간이 늘어날 수 있습니다.
결론
전반적으로 블록 동기화 프로세스와 트랜잭션 전파 프로세스는 비트코인 네트워크의 중요한 구성 요소입니다. 이러한 프로세스를 통해 네트워크의 모든 노드가 블록체인의 최신 정확한 복사본을 보유하고 트랜잭션을 효율적이고 안전하게 처리할 수 있습니다.블록 동기화 프로세스 및 트랜잭션 전파 프로세스는 네트워크 정체, 지연 시간 및 노드 안정성과 같은 요인에 의해 영향을 받을 수 있습니다.
결론적으로, 비트코인 네트워크는 비트코인 블록체인에서 거래를 촉진하는 데 사용되는 복잡하고 분산된 P2P 네트워크입니다. 네트워크에는 JSON RPC와의 클라이언트 통신, Gossip 프로토콜과의 노드 통신, 블록 동기화 프로세스 등 여러 가지 구성 요소가 포함됩니다.
한 번에 끝내는 블록체인 개발 A to Z Online. | 패스트캠퍼스
블록체인 Dapp 개발부터 클론코딩 실습까지 하면서 마스터해보세요!
fastcampus.co.kr
*본 게시물은 패스트캠퍼스 후기 이벤트 참여를 위해 작성되었습니다.
'BlockChain' 카테고리의 다른 글
🔑Web3 프로젝트 세팅 - (1) | 패스트캠퍼스 블록체인 강의 챌린지 6일차 (0) | 2023.03.06 |
---|---|
📃Smart Contract | 패스트캠퍼스 블록체인 강의 챌린지 5일차 (0) | 2023.03.05 |
📦Ethereum Structure | 패스트캠퍼스 블록체인 강의 챌린지 4일차 (2) | 2023.03.04 |
📦Block & Transaction Structure | 패스트캠퍼스 블록체인 강의 챌린지 3일차 (0) | 2023.03.03 |
🔒암호화 기술과 해시 알고리즘 | 패스트캠퍼스 블록체인 강의 챌린지 1일차 (0) | 2023.03.01 |