김재훈 교수님 [email protected] 010-5293-2551

P2P 네트워크

P2P 블록체인 네트워크

토폴로지

오픈 액세스 블록체인 네트워크

토폴로지(topology 망구성방식) 형성 및 데이터 통신

→ 약간의 수정으로 즉시 사용 가능한 P2P 프로토콜

노드 간의 랜덤 토폴로지는 블록체인 복제 동기화를 위해 효율적으로 정보를 전파

피어 검색 및 토폴로지 유지 관리

분산 네트워킹 미들웨어

NET - 통신 프로토콜

IP(Internet Protocol 어떤 컴퓨터인가)

인터넷에서 컴퓨터의 위치를 찾아서 데이터를 전송하기 위해 지켜야 할 규약

img1.daumcdn.png

네트워크 액세스 계층(Network Access Layer)

  1. OSI 7계층의 물리계층과 데이터 링크 계층에 해당
  2. TCP/IP 패킷을 네트워크 매체로 전달하는 것과 네트워크 매체에서 TCP/IP 패킷을 받아들이는 과정을 담당
  3. 에러 검출 기능(Detecting errors), 패킷의 프레임화(Fraimg packets)
  4. 네트워크 접근 방법, 프레임 포맷, 매체에 대해 독립적으로 동작하도록 설계.
  5. 물리적인 주소로 MAC을 사용
  6. LAN, 패킷망, 등에 사용됨

2계층 인터넷 계층(Internet Layer)

  1. OSI 7계층의 네트워크 계층에 해당
  2. 어드레싱(addressing), 패키징(packaging), 라우팅(routing) 기능을 제공
  3. 네트워크상 최종 목적지까지 정확하게 연결되도록 연결성을 제공하게 됨.
  4. 프로토콜 종류 – IP, ARP, RARP

3계층 전송 계층(Transport Layer)

  1. OSI 7계층의 전송 계층에 해당
  2. 애플리케이션 계층의 세션데이터그램(datagram) 통신서비스 제공
  3. 통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다.
  4. 프로토콜 종류 – TCP, UDP

4계층 응용 계층(Application Layer)

  1. OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당한다.
  2. 프로그램(브라우저)가 직접 인터액트하는 레이어. 데이터를 처음으로 받는곳
  3. 다른 계층의 서비스에 접근할 수 있게 하는 애플리케이션을 제공
  4. 애플리케이션들이 데이터를 교환하기 위해 사용하는 프로토콜을 정의
  5. TCP/UDP 기반의 응용 프로그램을 구현할 때 사용한다.
  6. 프로토콜 종류 – FTP, HTTP, SMTP, SSH

port ← 어떤 서비스인가

socket

RPC( Remote Procedure Call)

소캣을 더 쉽게 개발할 수 있도록 사용하는 인터페이스

RPC 는 LPC(Local Procedure Call) 의 확장 개념으로 기술적으로는 프로토콜이 아니며 단지 서버-클라이언트와 같은 분산 시스템을 구성하는 일반적인 메커니즘이다.

즉, RPC 프로토콜은 표준이 없기 때문에 데이터 통신을 위한 추상화된 프르토콜로써 실제 데이터 전송을 위해서 TCP or UDP 를 사용하여 통신한다. 여러 대의 컴퓨터에 프로시져를 분산하고, 결과를 취합하는 방식으로 분산 시스템에서 사용가능하다.

RPC 는 동기 서버, 비동기 서버, 스트리밍 서버에 모두 사용된다. 특정 프로토콜을 이용한 기술적인 개념이 아닌 원격 프로시저를 호출할 수 있다는 키워드에 집중하 면 될 듯 하다.

서버-클라이언트 구조 애플리케이션에서 원격에 있는 프로시저를 실행할 수 있게 하는 통신기술로써 애플리케이션이 로컬인지 원격인지에 관계없이 프로시저를 호출함으로써 하나의 시스템 처럼 동작할 수 있다.

**** 프로시저**

** REST 방식과 경쟁구도

RPC 가 REST 비해 성능이 좋은 이유는 apache thrift 가 내부적으로 빠른 binary serailize 를 구현하고 있기 때문이라고 함

실제로 구글도 내부 서비스에서 프로토콜 버퍼 를 사용하고 있는데, 프로토콜 버퍼도 RPC 기술 중 하나이다. 사실 위에서 설명한 apache thrift 는 업데이트가 거의 중단된 서비스 인데 비해 프로토콜 버퍼는 지속적으로 업데이트 되고 있다.

블록체인에서 클라이언트(디바이스)는

tx를 수행하는 (블록체인 노드의) 스마트컨트랙트RPC(원격지에 있는 함수 호출)처리

특징

  1. 분산 응용 프로그램 만들기

    예를 들어, 호텔을 예약하기 위해 Expedia와 같은 여행 수집기를 사용하는 Web 2.0 사용 사례

    절차

    1. 사용자는 검색 요청 기준을 입력하기 위해 Expedia.com으로 이동
    2. 그런 다음 RPC는 여러 개별 호텔 사이트와 연결하여 데이터를 수집

    → 사용자가 객실 가용성과 같이 검색하던 정보에 액세스하거나 dApp에서도 최종 사용자를 암호화 가격, 블록 데이터 등과 같은 정보에 연결하는 작업을 수행할 수 있다.

2. 자신의 노드에 액세스하지 않고 블록체인 데이터 쿼리

개발자는 빌드할 때 블록 번호, 노드 연결, 트랜잭션 및 과거 블록체인 데이터와 같은 다양한 정보에 액세스해야 한다.

JSON(JavaScript Object Notation)으로 원하는 블록체인에 "요청"하고 필요한 정보가 포함된 응답을 받을 수 있다.

이를 위해 개발자는 선택권이 있다.

  1. 노드를 직접 설정하고 장비 유지 관리 및 서버 문제 해결의 DevOps를 수행

  2. RPC 계층을 통해 Ankr과 같은 노드 제공업체의 서비스를 사용

→ 블록체인에 즉시 액세스할 수 있는 가장 쉽고 빠르며 가장 저렴한 솔루션

3. 구축 프로세스 간소화

RPC 계층은 개발자의 작업을 크게 단순화하기 때문에 응용 프로그램을 빌드할 때도 유용

예를 들어, 사용자가 새로운 DeFi 유동성 파밍 사이트 내에서 외부 지갑의 암호화 잔액을 볼 수 있게 하려면 지갑을 처음부터 구축할 필요가 없다.

통신을 요청할 수 있는 API를 구축하기만 하면 됩니다.

사용자가 보유하고 있는 것을 찾기 위해 지갑을 사용합니다. 동시에 암호화 지갑을 구성하는 소프트웨어에는 다른 많은 DeFi 프로토콜과의 상호 운용성을 허용하는 API 활성화 코드가 포함될 수 있다.

4. 실시간 트랜잭션 데이터를 보기 위한 WebSocket 생성

WebSocket은 클라이언트와 서버 간의 지속적인 정보 교환을 허용하는 API.

5. 엄청난 양의 정보에 접근하기 위해 전화를 걸다