김재훈 교수님 [email protected] 010-5293-2551
P2P 네트워크
P2P 블록체인 네트워크
토폴로지
오픈 액세스 블록체인 네트워크
토폴로지(topology 망구성방식) 형성 및 데이터 통신
→ 약간의 수정으로 즉시 사용 가능한 P2P 프로토콜
노드 간의 랜덤 토폴로지는 블록체인 복제 동기화를 위해 효율적으로 정보를 전파
피어 검색 및 토폴로지 유지 관리
분산 네트워킹 미들웨어
NET - 통신 프로토콜
IP(Internet Protocol 어떤 컴퓨터인가)
인터넷에서 컴퓨터의 위치를 찾아서 데이터를 전송하기 위해 지켜야 할 규약
port ← 어떤 서비스인가
socket
개발 취지
소켓은 네트워크 부분의 끝 부분 ← 계층과 계층을 연결
실제 데이터가 어떻게 전송되는지 상관하지 않고 읽기/쓰기 인터페이스를 제공
TCP/IP 계층의 TCP를 지원하기 위해서 Socket, ServerSocket 클래스를 제공
종류
TCP란 소켓 프로그래밍 중의 하나
스트림 통신 프로토콜이라고 부르며, 양쪽의 소켓이 연결된상태여야만 가능 하기 때문에 연결지향 프로토콜
데이터를 송신할때마다 확인 응답을 주고받는 절차로 인해 통신의 신뢰성이 상승
→ **통신 네트워크( client와 Server 또는 P2P Socket)**를 사용한 통신에 많이 사용
3 way handshake 이라는 방식으로 연결( 속도가 느려지는 주요 원인)
위와 같이 3번의 통신이 정상적으로 이루어지면, 서로의 포트가 ESTABLISHED 되면서 연결이 되게 된다.
TCP VS. UDP
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(원격지에 있는 함수 호출)처리
특징
분산 응용 프로그램 만들기
예를 들어, 호텔을 예약하기 위해 Expedia와 같은 여행 수집기를 사용하는 Web 2.0 사용 사례
절차
→ 사용자가 객실 가용성과 같이 검색하던 정보에 액세스하거나 dApp에서도 최종 사용자를 암호화 가격, 블록 데이터 등과 같은 정보에 연결하는 작업을 수행할 수 있다.
2. 자신의 노드에 액세스하지 않고 블록체인 데이터 쿼리
개발자는 빌드할 때 블록 번호, 노드 연결, 트랜잭션 및 과거 블록체인 데이터와 같은 다양한 정보에 액세스해야 한다.
JSON(JavaScript Object Notation)으로 원하는 블록체인에 "요청"하고 필요한 정보가 포함된 응답을 받을 수 있다.
이를 위해 개발자는 선택권이 있다.
노드를 직접 설정하고 장비 유지 관리 및 서버 문제 해결의 DevOps를 수행
RPC 계층을 통해 Ankr과 같은 노드 제공업체의 서비스를 사용
→ 블록체인에 즉시 액세스할 수 있는 가장 쉽고 빠르며 가장 저렴한 솔루션
3. 구축 프로세스 간소화
RPC 계층은 개발자의 작업을 크게 단순화하기 때문에 응용 프로그램을 빌드할 때도 유용
예를 들어, 사용자가 새로운 DeFi 유동성 파밍 사이트 내에서 외부 지갑의 암호화 잔액을 볼 수 있게 하려면 지갑을 처음부터 구축할 필요가 없다.
통신을 요청할 수 있는 API를 구축하기만 하면 됩니다.
사용자가 보유하고 있는 것을 찾기 위해 지갑을 사용합니다. 동시에 암호화 지갑을 구성하는 소프트웨어에는 다른 많은 DeFi 프로토콜과의 상호 운용성을 허용하는 API 활성화 코드가 포함될 수 있다.
4. 실시간 트랜잭션 데이터를 보기 위한 WebSocket 생성
WebSocket은 클라이언트와 서버 간의 지속적인 정보 교환을 허용하는 API.
5. 엄청난 양의 정보에 접근하기 위해 전화를 걸다