KR102347568B1 - 블록체인 시스템에서 블록 전송 방법 - Google Patents

블록체인 시스템에서 블록 전송 방법 Download PDF

Info

Publication number
KR102347568B1
KR102347568B1 KR1020210125538A KR20210125538A KR102347568B1 KR 102347568 B1 KR102347568 B1 KR 102347568B1 KR 1020210125538 A KR1020210125538 A KR 1020210125538A KR 20210125538 A KR20210125538 A KR 20210125538A KR 102347568 B1 KR102347568 B1 KR 102347568B1
Authority
KR
South Korea
Prior art keywords
container
block
mpbtp
transport
transport block
Prior art date
Application number
KR1020210125538A
Other languages
English (en)
Inventor
박기석
Original Assignee
동국대학교 경주캠퍼스 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 동국대학교 경주캠퍼스 산학협력단 filed Critical 동국대학교 경주캠퍼스 산학협력단
Priority to KR1020210125538A priority Critical patent/KR102347568B1/ko
Application granted granted Critical
Publication of KR102347568B1 publication Critical patent/KR102347568B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1854Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

블록체인(blockchain) 시스템에서 전송 블록체인 노드에서 수행되는 블록(block) 전송 방법에 있어서, 상기 전송 블록체인 노드는 피어 컨테이너 및 MPBTP(multipath block transport protocol) 컨테이너를 포함할 수 있다. 상기 MPBTP 컨테이너는 상기 피어 컨테이너로부터 제1 전송 블록을 획득할 수 있다. 상기 MPBTP 컨테이너는 상기 제1 전송 블록의 수신자가 복수의 제1 수신 블록체인 노드임을 기초로, 상기 제1 전송 블록에 FEC(forward error correcting) 인코딩(encoding)을 수행할 수 있다. 상기 MPBTP 컨테이너는 상기 제1 전송 블록에 암호화를 수행할 수 있다. 상기 MPBTP 컨테이너는 상기 제1 전송 블록을 UDP(user datagram protocol) 방식을 통해 상기 복수의 제1 수신 블록체인 노드에게 전송할 수 있다.

Description

블록체인 시스템에서 블록 전송 방법{BLOCK TRANSFER METHOD AND DEVICE IN BLOCKCHAIN SYSTEM}
본 발명의 실시예들은 블록체인 시스템에서 블록을 전송하는 방법 및 그 장치에 대한 것이다.
블록체인이란 블록에 데이터를 담아 체인 형태로 연결, 수많은 컴퓨터에 동시에 이를 복제해 저장하는 분산형 데이터 저장 기술이다. 공공 거래 장부라고도 부른다. 중앙 집중형 서버에 거래 기록을 보관하지 않고 거래에 참여하는 모든 사용자에게 거래 내역을 보내 주며, 거래 때마다 모든 거래 참여자들이 정보를 공유하고 이를 대조해 데이터 위조나 변조를 할 수 없도록 돼 있다.
블록체인에 저장하는 정보는 다양하기 때문에 블록체인을 활용할 수 있는 분야도 매우 광범위하다. 대표적으로 가상통화에 사용되는데, 이때는 블록에 금전 거래 내역을 저장해 거래에 참여하는 모든 사용자에게 거래 내역을 보내주며 거래 때마다 이를 대조해 데이터 위조를 막는 방식을 사용한다. 이 밖에도 전자 결제나 디지털 인증뿐만 아니라 화물 추적 시스템, P2P 대출, 원산지부터 유통까지 전 과정을 추적하거나 예술품의 진품 감정, 위조화폐 방지, 전자투표, 전자시민권 발급, 차량 공유, 부동산 등기부, 병원 간 공유되는 의료기록 관리 등 신뢰성이 요구되는 다양한 분야에 활용할 수 있다.
본 발명의 실시예들은, 블록체인 시스템에서 블록을 전송하는 장치 및 동작 방법을 제공할 수 있다.
실시예들에서 이루고자 하는 기술적 과제들은 이상에서 언급한 사항들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 이하 설명할 다양한 실시예들로부터 당해 기술분야에서 통상의 지식을 가진 자에 의해 고려될 수 있다.
실시예들에 따르면, 전송 블록체인 노드에 의해 수행되는 블록체인 시스템에서 블록 전송 방법에 있어서, 상기 전송 블록체인 노드는 피어 컨테이너 및 MPBTP(multipath block transport protocol) 컨테이너를 포함하고, 상기 MPBTP 컨테이너가, 상기 피어 컨테이너로부터 제1 전송 블록을 획득하는 단계; 상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 수신자가 복수의 제1 수신 블록체인 노드임을 기초로, 상기 제1 전송 블록에 FEC(forward error correcting) 인코딩(encoding)을 수행하는 단계; 상기 MPBTP 컨테이너가, 상기 제1 전송 블록에 암호화를 수행하는 단계; 및 상기 MPBTP 컨테이너가, 상기 제1 전송 블록을 UDP(user datagram protocol) 방식을 통해 상기 복수의 제1 수신 블록체인 노드에게 전송하는 단계를 포함할 수 있다.
여기서, 상기 MPBTP 컨테이너가, 상기 피어 컨테이너로부터 제2 전송 블록을 획득하는 단계; 및 상기 MPBTP 컨테이너가, 상기 제2 전송 블록의 수신자가 하나의 제2 수신 블록체인 노드임을 기초로, QUIC(quick UDP internet connections) 프로토콜 기반으로 상기 제2 전송 블록을 UDP 방식을 통해 상기 하나의 제2 수신 블록체인 노드에게 전송하는 단계를 더 포함할 수 있다.
여기서, 상기 FEC 인코딩은 랩터(raptor) 코드를 기반으로 수행될 수 있다.
여기서, 상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 수신자가 단수인지 또는 복수인지 여부를 판단하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예는 블록체인 시스템에서 전송 블록체인 노드에 있어서, 상기 전송 블록체인 노드는 피어 컨테이너 및 MPBTP(multipath block transport protocol) 컨테이너, 프로세서(processor); 송수신기(transceiver); 및 메모리(memory); 를 포함하고, 상기 프로세서는: 상기 MPBTP 컨테이너가, 상기 피어 컨테이너로부터 제1 전송 블록을 획득하고; 상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 수신자가 복수의 제1 수신 블록체인 노드임을 기초로, 상기 제1 전송 블록에 FEC(forward error correcting) 인코딩(encoding)을 수행하고; 상기 MPBTP 컨테이너가, 상기 제1 전송 블록에 암호화를 수행하고; 그리고 상기 MPBTP 컨테이너가, 상기 제1 전송 블록을 UDP(user datagram protocol) 방식을 통해 상기 복수의 제1 수신 블록체인 노드에게 전송하도록 설정될 수 있다.
여기서, 상기 프로세서는, 상기 MPBTP 컨테이너가, 상기 피어 컨테이너로부터 제2 전송 블록을 획득하고; 그리고 상기 MPBTP 컨테이너가, 상기 제2 전송 블록의 수신자가 하나의 제2 수신 블록체인 노드임을 기초로, QUIC(quick UDP internet connections) 프로토콜 기반으로 상기 제2 전송 블록을 UDP 방식을 통해 상기 하나의 제2 수신 블록체인 노드에게 전송하도록 더 설정될 수 있다.
여기서, 상기 FEC 인코딩은 랩터(raptor) 코드를 기반으로 수행될 수 있다.
여기서, 상기 프로세서는, 상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 수신자가 단수인지 또는 복수인지 여부를 판단하도록 더 설정될 수 있다.
실시예들에 따르면, 블록체인 시스템에서 블록을 전송할 때, UDP 계층을 이용하여 빠르게 블록을 전송할 수 있다. 또한, UDP 계층을 이용한 전송에서 발생할 수 있는 신뢰성 문제를 해결할 수 있다. 또한, Multi-path 전송과 Single-path 전송의 케이스를 나누어 각 상황에서 최적의 전송 방법으로 블록을 전송할 수 있다.
실시예들로부터 얻을 수 있는 효과들은 이상에서 언급된 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 이하의 상세한 설명을 기반으로 당해 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다.
실시예들에 대한 이해를 돕기 위해 상세한 설명의 일부로 포함된, 첨부 도면은 다양한 실시예들을 제공하고, 상세한 설명과 함께 다양한 실시예들의 기술적 특징을 설명한다.
도 1은 본 발명의 일 실시예에 따른 블록체인을 이용한 분산처리 시스템을 도시한 도면이다.
도 2 및 도 3은 본 발명의 일 실시예에 따른 블록 전송을 수행하는 노드의 일 실시예를 도시한 도면이다.
도 4는 TCP(transmission control protocol)/TLS(transport layer security) 전송의 문제점의 일 실시예를 도시한 도면이다.
도 5는 블록체인 전송 계층으로 UDP를 사용하는 방법의 일 실시예를 도시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 블록 전송 방법을 도시한 도면이다.
도 7은 본 발명의 일 실시예에 따른 전송 블록체인 노드의 동작 방법을 도시한 도면이다.
도 8은 TCP-TLS 기반 연결 방법의 일 실시예를 도시한 도면이고, 도 9는 QUIC 기반 연결 방법의 일 실시예를 도시한 도면이다.
도 10은 QUIC 암호화 handshake 방법의 일 실시예를 도시한 도면이고, 도 11은 QUIC 기반 연결 테스트 결과의 일 실시예를 도시한 도면이다.
도 12는 QUIC 패킷 구조의 일 실시예를 도시한 도면이고, 도 13은 본 명세서의 일 실시예에 따른 블록 전송 시스템 실험 결과의 일 실시예를 도시한 도면이다.
이하의 실시예들은 실시예들의 구성요소들과 특징들을 소정 형태로 결합한 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려될 수 있다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 다양한 실시예들을 구성할 수도 있다. 다양한 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다.
도면에 대한 설명에서, 다양한 실시예들의 요지를 흐릴 수 있는 절차 또는 단계 등은 기술하지 않았으며, 당해 기술분야에서 통상의 지식을 가진 자의 수준에서 이해할 수 있을 정도의 절차 또는 단계는 또한 기술하지 아니하였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함(comprising 또는 including)"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...부", "...기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, "일(a 또는 an)", "하나(one)", "그(the)" 및 유사 관련어는 다양한 실시예들을 기술하는 문맥에 있어서(특히, 이하의 청구항의 문맥에서) 본 명세서에 달리 지시되거나 문맥에 의해 분명하게 반박되지 않는 한, 단수 및 복수 모두를 포함하는 의미로 사용될 수 있다.
이하, 다양한 실시예들에 따른 실시 형태를 첨부된 도면을 참조하여 상세하게 설명한다. 첨부된 도면과 함께 이하에 개시될 상세한 설명은 다양한 실시예들의 예시적인 실시형태를 설명하고자 하는 것이며, 유일한 실시형태를 나타내고자 하는 것이 아니다.
또한, 다양한 실시예들에서 사용되는 특정(特定) 용어들은 다양한 실시예들의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 다양한 실시예들의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.
도 1은 본 발명에 따른 기술적 사상이 적용될 수 있는 블록체인을 이용한 분산처리 시스템을 도시한 도면이다.
도 1을 참조하면, 블록체인을 이용한 분산처리 시스템(100)은 복수의 노드들(110-170)로 이루어진 분산형 네트워크(distributed network) 시스템이다. 상기 분산형 네트워크(100)를 구성하는 노드들(110-170)은 컴퓨터, 이동 단말기, 전용 전자 장치 등 연산 능력이 있는 전자 장치일 수 있다. 일반적으로 분산형 네트워크(100)는 블록체인이라 불리는 블록(block)의 연결 묶음 내에 모든 참여 노드에 공통으로 알려진 정보를 저장하고 참조할 수 있다. 상기 노드들(110-170)은 상호간 통신이 가능하며 블록체인을 저장, 관리 및 전파를 담당하는 완전 노드(full node)와 단순하게 트랜잭션에만 참여할 수 있는 간이 노드(light node)로 구분될 수 있다. 본 명세서에서 별다른 설명 없이 노드에 대하여 언급되는 경우, 이는 분산형 네트워크에 참여하며 블록체인을 생성, 저장 또는 검증하는 동작을 수행하는 완전 노드를 지칭하는 경우가 많으나, 이에 한정되는 것은 아니다. 상기 블록체인에 연결되어 있는 각 블록들은 일정 기간 내의 거래 내역, 즉 트랜잭션(transaction)들을 포함한다. 상기 노드들은 각각 역할에 따라 블록체인을 생성, 저장 또는 검증함으로써 트랜잭션들을 관리할 수 있다. 실시 형태에 따라 상기 트랜잭션은 다양한 형태의 거래를 나타낼 수 있다. 일 실시예에서 상기 트랜잭션은 가상 화폐의 소유 상태 및 그 변동을 나타내기 위한 금융 거래에 해당할 수 있다. 다른 실시예에서 상기 트랜잭션은 물건의 소유 상태 및 그 변동을 나타내기 위한 실물 거래에 해당할 수 있다. 또 다른 실시예에서 상기 트랜잭션은 정보의 기록, 저장 및 이송을 나타내기 위한 정보 공유 과정에 해당할 수 있다. 상기 분산형 네트워크(100)에서 거래를 수행하는 노드들은 각각의 암호학적 연관관계가 있는 개인키(private key) 및 공개키(public key) 쌍을 가질 수 있다.
본 발명의 실시예에 따른 블록 전송 방법은 PC(Personal Computer) 등과 같이 저장공간을 구비하고 인터넷에 연결될 수 있으며 휴대가 용이하지 않는 컴퓨팅 장치에서 수행되거나 스마트폰 등과 같이 휴대용 단말기에서 수행될 수 있다.
그리고 상기 블록 전송 방법은 CD(Compact Disc) 또는 USB(Universal Serial Bus) 메모리 등과 같은 기록매체에 기록된 상태에서 PC 등과 같은 컴퓨팅 장치에 삽입되어 상기 컴퓨팅 장치의 액세스 동작을 통해서 수행되거나 상기 기록매체로부터 컴퓨팅 장치의 저장공간에 저장된 후 컴퓨팅 장치의 액세스 동작을 통해서 수행될 수도 있다.
한편 상기 컴퓨팅 장치 또는 휴대용 단말기가 인터넷에 연결된 서버에 접속가능한 경우, 상기 블록체인 시스템에서 블록 전송 방법은 상기 컴퓨팅 장치 또는 휴대용 단말기의 요청에 따라 서버에서도 실행될 수 있다.
이하에서 상기 블록 전송 방법이 실행되는 컴퓨팅 장치, 휴대용 단말기 또는 서버 등을 통칭하여 블록 전송 장치라고 칭할 수 있다.
상기 블록 전송 장치는 도 2에 예시된 블록 전송 장치와 동일한 구성을 가질 수 있으며, 상기 블록 전송 장치는 도 1에 도시된 블록 전송 장치에 국한되지 않을 수 있다.
도 2 및 도 3은 본 발명의 일 실시예에 따른 블록 전송을 수행하는 노드의 일 실시예를 도시한 도면이다.
도 2 및 도 3을 참조하면, 블록체인 노드(110)(이하, 노드(110))는 피어(peer) 컨테이너(210), 멤버쉽(membership) 컨테이너(220) 및 MPBTP(multipath block transport protocol) 컨테이너(230)를 포함할 수 있다. 도 2의 블록체인 노드(110)에는 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
예를 들어, 피어 컨테이너(210)는 블록체인 시스템에서 블록체인 노드(110)가 수행하는 블록의 저장, 관리 등을 담당할 수 있다. 예를 들어, 피어 컨테이너(210)는 Hyperledger Fabric Peer 뿐만 아니라 다른 블록체인 피어(예를 들어, 비트코인(bitcoin) 등)로 대체될 수 있다.
예를 들어, MPBTP 컨테이너(230)는 블록체인 노드(110)에서 블록의 전송 및 수신을 담당할 수 있다. 예를 들어, MPBTP 컨테이너(230)는 다른 블록체인 노드로부터 블록을 수신할 수 있고, 수신한 블록을 피어 컨테이너(210)에게 전달할 수 있다. 예를 들어, MPBTP 컨테이너(230)는 피어 컨테이너(210)로부터 전송할 블록을 전달받을 수 있고, 전달받은 블록을 다른 블록체인 노드(들)에게 전송할 수 있다.
통신부(미도시)는 다른 블록체인 노드와 유선/무선 통신을 하게 하는 하나 이상의 구성 요소를 포함할 수 있다. 예를 들어, 통신부(미도시)는, 근거리 통신부(미도시), 이동 통신부(미도시) 및 방송 수신부(미도시) 중 적어도 하나를 포함할 수 있다.
일례로, 메모리(미도시)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이 통신부(미도시)의 제어에 따라 네트워크를 통해 다른 블록체인 노드로 전달될 수 있다. 역으로, 다른 블록체인 노드의 프로세서의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 네트워크를 거쳐 통신부(미도시)을 통해 블록체인 노드(110)로 수신될 수 있다. 예를 들어 통신부(미도시)를 통해 수신된 제어 신호나 명령, 컨텐츠 및 파일 등은 프로세서(미도시)로 전달되거나 메모리(미도시)로 전달되어 저장될 수 있다.
메모리(미도시)는 블록체인 노드(110) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 프로세서(미도시)의 처리 및 제어를 위한 프로그램을 저장할 수 있다.
메모리(미도시)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다. 메모리(미도시)는 메모리라고 나타낼 수도 있다.
프로세서(미도시)는 블록체인 노드(110)의 전반적인 동작을 제어한다. 예를 들어, 프로세서(미도시)는 메모리(미도시)에 저장된 프로그램들을 실행함으로써, 입력부(미도시), 디스플레이(미도시), 통신부(미도시), 메모리(미도시) 등을 전반적으로 제어할 수 있다. 프로세서(미도시)는, 메모리(미도시)에 저장된 프로그램들을 실행함으로써, 블록체인 노드(110)의 동작을 제어할 수 있다.
통신부(미도시)는, 블록체인 노드(110)가 다른 장치(미도시) 및 서버(미도시)와 통신을 하게 하는 하나 이상의 구성요소를 포함할 수 있다. 다른 장치(미도시)는 블록체인 노드(110)와 같은 컴퓨팅 장치일 수 있으나, 이에 제한되지 않는다. 통신부(미도시)는 네트워크를 통해, 다른 전자 장치로부터의 사용자 입력을 수신하거나, 외부 장치로부터 외부 장치에 저장된 데이터를 수신할 수 있다.
메모리(미도시)는, 프로세서(미도시)의 처리 및 제어를 위한 프로그램을 저장할 수 있다. 예를 들어, 메모리(미도시)는 서비스 제공을 위한 인스트럭션(instruction)을 저장할 수 있다. 또한 메모리(미도시)는 프로세서(미도시)에서 생성된 데이터를 저장할 수 있다. 예를 들어, 메모리(미도시)는 프로세서(미도시)가 제공하는 블록 전송 방법과 관련된 정보를 저장할 수 있다. 메모리(미도시)는 블록체인 노드(110)로 입력되거나 블록체인 노드(110)로부터 출력되는 정보를 저장할 수도 있다.
프로세서(미도시)는 ASICs (application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 제어기(controllers), 마이크로 컨트롤러(micro-controllers), 마이크로 프로세서(microprocessors), 기타 기능 수행을 위한 전기적 유닛 중 적어도 하나를 이용하여 구현될 수 있다.
메모리(미도시)는 프로세서(미도시)를 통해 실행되는 적어도 하나의 명령을 저장하고 있을 수 있다. 적어도 하나의 명령은 상기 MPBTP 컨테이너가, 상기 피어 컨테이너로부터 제1 전송 블록을 획득하고; 상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 수신자가 복수의 제1 수신 블록체인 노드임을 기초로, 상기 제1 전송 블록에 FEC(forward error correcting) 인코딩(encoding)을 수행하고; 상기 MPBTP 컨테이너가, 상기 제1 전송 블록에 암호화를 수행하고; 그리고 상기 MPBTP 컨테이너가, 상기 제1 전송 블록을 UDP(user datagram protocol) 방식을 통해 상기 복수의 제1 수신 블록체인 노드에게 전송하도록 설정될 수 있다.
여기서, 상기 적어도 하나의 명령은, 상기 MPBTP 컨테이너가, 상기 피어 컨테이너로부터 제2 전송 블록을 획득하고; 그리고 상기 MPBTP 컨테이너가, 상기 제2 전송 블록의 수신자가 하나의 제2 수신 블록체인 노드임을 기초로, QUIC(quick UDP internet connections) 프로토콜 기반으로 상기 제2 전송 블록을 UDP 방식을 통해 상기 하나의 제2 수신 블록체인 노드에게 전송하도록 더 설정될 수 있다.
여기서, 상기 FEC 인코딩은 랩터(raptor) 코드를 기반으로 수행될 수 있다.
여기서, 상기 적어도 하나의 명령은, 상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 수신자가 단수인지 또는 복수인지 여부를 판단하도록 더 설정될 수 있다.
도 4는 TCP(transmission control protocol)/TLS(transport layer security) 전송의 문제점의 일 실시예를 도시한 도면이다.
도 4를 참조하면, TCP에서는 3-way handshake을 수행해야 하고, 패킷이 손실된 경우 재전송(retransmission)을 수행할 수 있다.
3 way handshake 방식 (SYN, ACK)
TCP 통신을 위한 네트워크 연결은 3 way handshake이라는 방식으로 연결될 수 있다. 3 way handshake 방식은 서로의 통신을 위한 port를 확인하고 연결하기 위하여 3번의 요청/응답 후에 연결하는 방법이다.
3 way handshake 연결 과정
- Client에서 Server에 연결 요청을 하기위해 SYN 데이터 보냄
- Server에서 해당 포트는 LISTEN 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경
- 요청을 정상적으로 받았다는 대답(ACK)와 Client도 포트를 열어달라는 SYN을 같이 보냄
- Client에서는 SYN+ACK를 받고 ESTABLISHED로 상태를 변경하고 서버에 ACK를 전송
- ACK를 받은 서버는 상태가 ESTABLSHED로 변경
- 3번의 통신이 정상적으로 이루어지면, 서로의 포트가 ESTABLISHED 되면서 연결
TCP에서의 TLS는 Security와 Privacy를 위한 것으로, 추가적인(Additional) handshake이 필요하다.
UDP(user datagram protocol)는 전송 딜레이가 없으나 신뢰도가 떨어지는(unreliable) 문제가 있다.
TCP와 UDP는 OSI 표준모델과 TCP/IP 모델의 전송계층에서 사용되는 프로토콜이다. 전송계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하고 IP에 의해 전달되는 패킷의 오류를 검사하며 재전송 요구 제어등을 담당하는 계층(데이터의 전달을 담당)이다. TCP와 UDP는 포트 번호를 이용하여 주소를 지정하는것과 데이터 오류검사를 위한 체크섬 존재하는 두가지 공통점을 가지고 있지만 정확성(TCP)을 추구할지 신속성(UDP)을 추구할지에 따라 구분될 수 있다.
데이터를 중요하게 생각하여 확실히 주고받고 싶을 때는 'TCP(Transmission Control Protocol)'를 사용한다. TCP는 통신할 컴퓨터끼리 '보냈습니다', '도착했습니다'라고 서로 확인 메시지를 보내면서 데이터를 주고받음으로써 통신의 신뢰성을 높일 수 있다. 웹이나 메일, 파일 공유 등과 같이 데이터를 누락시키고 싶지 않은 서비스는 TCP를 사용하고 있다.
그에 반해 데이터의 신뢰성은 제쳐두고 빨리 보내고 싶을 때는 'UDP(User Datagram Protocol)'를 사용할 수 있다. UDP는 데이터를 보내면 그것으로 끝이므로 신뢰성은 없지만 확인 응답과 같은 절차를 생략할 수 있으므로 통신의 신속성을 높일 수 있다. VoIP(Voice over IP)나 시간 동기, 이름 해결 등과 같이 무엇보다 속도를 필요로 하는 서비스는 UDP를 사용하고 있다.
TCP(Trasmission Control Protocol)는 연결 지향적 프로토콜이다. 연결 지향 프로토콜이란 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜로서, 클라이언트가 연결 요청(SYN 데이터 전송)을 하고, 서버가 연결을 수락하면 통신 선로가 고정되고, 모든 데이터는 고정된 통신 선로를 통해서 순차적으로 전달하는 방식이다. TCP는 데이터를 정확하고 안정적으로 전달, 호스트간 신뢰성 있는 데이터 전달과 흐름을 제어할 수 있다. TCP 프로토콜은 신뢰성 있는 데이터의 전송을 위해 확인작업을 거치는데 TCP는 패킷을 성공적으로 전송하면(ACK) 라는 신호를 날리고 만약에 ACK 신호가 제 시간에 도착하지 않으면 Timeout이 발생하여 패킷 손실이 발생한 패킷을 다시 전송할 수 있다. TCP는 이렇게 데이터를 송신할때마다 확인 응답을 주고받는 절차가 있으므로 통신의 신뢰성이 올라가게 된다. 주로 Client와 Server 또는 P2P Socket 통신 등, 네트워크를 사용한 통신을 할 때 TCP 통신을 많이 사용한다.
TCP의 단점
- 데이터로 보내기 전에 반드시 연결이 형성되어야한다.
- 1:1 통신만 가능하다.
- 고정된 통신 선로가 최단선(네트워크 길이)이 아닐경우 상대적으로 UDP보다 데이터 전송속도가 느릴 수 있다.
TCP의 특징
- 연결형 (connnection-oriented) 서비스로 연결이 성공해야 통신이 가능
- 데이터의 경계를 구분하지 않음 - (바이트 스트림 서비스)
- 데이터의 전송 순서를 보장 - (데이터의 순서 유지를 위해 각 바이트마다 번호를 부여)
- 신뢰성있는 데이터를 전송 - (Sequence Number, Ack Number를 통한 신뢰성 보장)
- 데이터 흐름 제어(수신자 버퍼 오버플로우 방지) 및 혼잡 제어(패킷 수가 과도하게 증가하는 현상 방지)
- 연결의 설정(3-way handshaking)과 해제(4-way handshaking)
- 전이중(Full-Duplex), 점대점(Point to Point) 서비스
- UDP보다 전송속도가 느림
UDP(User Datagram Protocol)는 전송계층의 비연결 지향적 프로토콜이다. 비연결 지향적이란 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식이다. 연결 과정이 없기 때문에 TCP보다는 빠른 전송을 할 수 있지만 데이터 전달의 신뢰성은 떨어질 수 있다. UDP는 발신자가 데이터 패킷을 순차적으로 보내더라도 이 패킷들은 서로 다른 통신 선로를 통해 전달할 수 있다. 먼저 보낸 패킷이 느린 선로를 통해 전송될 경우 나중에 보낸 패킷보다 늦게 도착할 수 있으며 최악의 경우 잘못된 선로로 전송되어 유실될 수 있다. TCP와는 다르게 UDP는 중간에 패킷이 유실이나 변조가 되어도 재전송을 하지 않는다.
UDP의 단점
- 데이터의 신뢰성 없음
- 의미 있는 서버를 구축하기위해서는 일일이 패킷을 관리해야 함
UDP의 특징
- 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식을 제공
- 데이터 경계를 구분(데이터그램(datagram) 서비스)
- 정보를 주고 받을때 정보를 보내거나 받는다는 신호절차를 거치지 않음
- 신뢰성 없는 데이터를 전송(데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않는다)
- 패킷관리가 필요
- 패킷 오버헤드가 적어 네트워크 부하가 감소되는 장점
- 상대적으로 TCP보다 전송속도가 빠름
도 5는 블록체인 전송 계층으로 UDP를 사용하는 방법의 일 실시예를 도시한 도면이다.
도 5를 참조하면, 왼쪽 순서도는 기존에 비트코인을 전송하는 방법이고, 오른쪽 순서도는 UDP를 이용한 비트코인 전송 방법이다.
기존 비트코인의 문제점은 네트워크 사용량 증가(Significant outbound bandwidth spikes), 패킷 손실 시 재전송으로 증가하는 블록 전달 시간(Long-latency block transfer)가 있었다.
여기서, compact한 block을 설계하고 FEC를 적용하여 패킷 손실에 대한 Recovery를 수행할 수 있다면, UDP를 통한 블록 전송이 가능할 수 있다. 다만, network security가 취약할 수 있다.
UDP 계층에서 신뢰적이고 안전한 블록 데이터 전송을 위해 상기 도 2 및 도 3과 같은 블록 전송 시스템 구조를 제안한다.
상기 도 2 및 도 3의 블록 전송 시스템에서는 UDP 전송 계층에서 블록을 전송하기 때문에 빠른 블록 전송이 가능할 수 있다. 또한, 신뢰도 문제를 해결하기 위해, Multi-path 전송의 경우(즉, 여러 블록 체인 노드에 블록을 전송하는 경우)에는 FEC(forward error correcting) 및 암호화를 상위 계층에서 구현할 수 있다. Single-path 전송의 경우(즉, 하나의 블록 체인 노드에 블록을 전송하는 경우)에는 QUIC 프로토콜을 기반으로 전송할 수 있다.
Single-path 전송의 경우 상대적으로 덜 혼잡한 통신 환경이기 때문에, FEC를 적용하지 않는 방법이 제안되었고, Multi-path의 경우 상대적으로 더 혼잡한 통신환경을 고려하여 FEC가 적용된 전송 방법이 제안되었다.
기존의 블록체인 시스템에서 블록 전송은 피어 컨테이너에서 이루어졌으나, 본 명세서의 실시예들에 따르면 MPBTP 컨테이너가 피어 컨테이너로부터 블록을 획득한 후, 획득한 블록을 전송할 수 있다. 또한, 다른 블록체인 노드로부터 블록을 수신할 때에도 피어 컨테이너가 직접 블록을 수신하지 않고, MPBTP 컨테이너가 블록을 수신한 후, 수신한 블록을 피어 컨테이너에게 전달할 수 있다.
도 6은 본 발명의 일 실시예에 따른 블록 전송 방법을 도시한 도면이다.
도 6을 참조하면, MPBTP 컨테이너는 도 2 및/또는 도 3의 MPBTP 컨테이너를 포함할 수 있다.
송신할 블록이 하나의 블록체인 노드에게 전송(예를 들어, Single path)되는지, 또는 복수의 블록체인 노드에게 전송(예를 들어, Multi path)되는지에 따라 블록 전송 프로세스가 달라질 수 있다. 어떤 경우든 블록은 UDP 방식으로 송신될 수 있다. 송신할 블록은 피어 컨테이너에서 MPBTP 컨테이너로 전달될 수 있다.
예를 들어, 송신할 블록이 하나의 블록체인 노드에게 전송(예를 들어, Single path)되는 경우, 송신할 블록은 QUIC(quick UDP internet connection) 프로토콜 기반으로 전송될 수 있다. 예를 들어, QUIC은 오픈 소스를 활용하여 구현될 수 있다.
예를 들어, 송신할 블록이 복수의 블록체인 노드에게 전송(예를 들어, Multi path)되는 경우, 송신할 블록은 FEC(forward error correcting) 인코딩 된 후에 암호화를 거쳐 전송될 수 있다. 예를 들어, FEC는 오픈 소스(예를 들어, Raptor codec 등)가 사용될 수 있다. 예를 들어, 암호화 시스템(crypto system)은 오픈 소스(예를 들어, DES(data encryption standard), RSA(Rivest-Shamir-Adleman) 등)가 사용될 수 있다.
블록이 송신될 때와 수신될 때 모두 각 블록체인 노드의 MPBTP 컨테이너를 통할 수 있다. 즉, 송신단(Sender)의 MPBTP 컨테이너는 송신단의 피어 컨테이너로부터 블록을 획득한 후, 전송을 위한 일련의 절차를 거쳐 상기 블록을 전송할 수 있고, 수신단(Receiver)의 MPBTP 컨테이너는 블록을 수신한 후, 수신을 위한 일련의 절차를 거쳐 상기 블록을 상기 수신단의 피어 컨테이너에게 전달할 수 있다.
도 7은 본 발명의 일 실시예에 따른 전송 블록체인 노드의 동작 방법을 도시한 도면이다.
전송 블록체인 노드는 피어 컨테이너 및 MPBTP(multipath block transport protocol) 컨테이너를 포함할 수 있다. 예를 들어, 전송 블록체인 노드는 도 2 또는 도 3의 블록 전송을 수행하는 노드를 포함할 수 있다.
도 7을 참조하면, MPBTP 컨테이너는 제1 전송 블록을 획득할 수 있다(S700). 예를 들어, 상기 MPBTP 컨테이너는 상기 피어 컨테이너로부터 제1 전송 블록을 획득할 수 있다.
예를 들어, 전송 블록체인 노드가 제1 전송 블록을 전송하려고 할 때, 상기 제1 전송 블록이 생성된 및/또는 저장된 피어 컨테이너로부터 상기 제1 전송 블록을 MPBTP 컨테이너로 전달할 수 있다. 즉, 상기 제1 전송 블록은 상기 제1 전송 블록이 생성/저장 되어있던 피어 컨테이너가 아니라 MPBTP 컨테이너로 옮겨진 후, 전송될 수 있다.
전송 블록체인 노드는 제1 전송 블록의 수신자가 단수인지 복수인지 판단할 수 있다(S710). 예를 들어, 상기 MPBTP 컨테이너는 상기 제1 전송 블록의 수신자가 단수인지 또는 복수인지 여부를 판단할 수 있다.
예를 들어, 상기 제1 전송 블록의 수신자가 복수인 경우와 단수인 경우에 따라 상기 제1 전송 블록의 전송 프로세스가 달라질 수 있다. 따라서, 전송 블록체인 노드는 상기 제1 전송 블록의 수신자의 수를 파악한 후, 해당하는 전송 프로세스를 적용할 수 있다.
전송 블록체인 노드는 FEC 인코딩을 수행할 수 있다(S720). 예를 들어, 상기 MPBTP 컨테이너는 상기 제1 전송 블록의 수신자가 복수의 제1 수신 블록체인 노드임을 기초로, 상기 제1 전송 블록에 FEC(forward error correcting) 인코딩(encoding)을 수행할 수 있다.
예를 들어, 상기 FEC 인코딩은 랩터(raptor) 코드를 기반으로 수행될 수 있다. 또는 다른 FEC 코드가 사용될 수 있으며, 사용될 수 있는 FEC 코드는 제한되지 않는다.
Multi-path 전송의 경우, FEC를 통해 전송 블록의 사이즈가 더 커질 수 있지만 신뢰성을 확보할 수 있다. 즉, UDP 전송으로 인한 unreliability를 해소하기 위해 FEC가 적용될 수 있다.
전송 블록체인 노드는 암호화를 수행할 수 있다(S730). 예를 들어, 상기 MPBTP 컨테이너는 상기 제1 전송 블록에 암호화를 수행할 수 있다. 예를 들어, 암호화는 DES(data encryption standard), RSA(Rivest-Shamir-Adleman) 등을 기초로 수행될 수 있다.
전송 블록체인 노드는 제1 전송 블록을 전송할 수 있다(S740). 예를 들어, 상기 MPBTP 컨테이너는 상기 제1 전송 블록을 UDP(user datagram protocol) 방식을 통해 상기 복수의 제1 수신 블록체인 노드에게 전송할 수 있다.
전송 블록체인 노드는 제2 전송 블록을 획득할 수 있다(S750). 예를 들어, 상기 MPBTP 컨테이너는 상기 피어 컨테이너로부터 제2 전송 블록을 획득할 수 있다.
전송 블록체인 노드는 제2 전송 블록의 수신자가 단수인지 복수인지 판단할 수 있다(S760). 예를 들어, 상기 MPBTP 컨테이너는 상기 제1 전송 블록의 수신자가 단수인지 또는 복수인지 여부를 판단할 수 있다.
전송 블록체인 노드는 QUIC 기반으로 제2 전송 블록을 전송할 수 있다(S770). 예를 들어, 상기 MPBTP 컨테이너는 상기 제2 전송 블록의 수신자가 하나의 제2 수신 블록체인 노드임을 기초로, QUIC(quick UDP internet connections) 프로토콜 기반으로 상기 제2 전송 블록을 UDP 방식을 통해 상기 하나의 제2 수신 블록체인 노드에게 전송할 수 있다.
이하에서는 QUIC 프로토콜에 대해 설명한다.
1. QUIC 프로토콜이란?
QUIC 프로토콜은 Quick UDP Internet Connections의 약자로 구글이 만든 UDP 기반 TCP를 대체하는 차세대 고속 인터넷 프로토콜이다.
HTTP/3는 HTTP(Hypertext Transfer Protocol)의 세 번째 메이저 버전으로, 기존의 HTTP/1, HTTP/2와는 다르게 UDP 기반의 프로토콜인 QUIC을 사용하여 통신하는 프로토콜이다.
QUIC은 모던 인터넷 환경에서 TCP가 가진 문제점을 극복하여 레이턴시의 한계를 극복하기 위해 만든 프로토콜이다.
QUIC은 3 Way Handshaking과정을 거치지 않는다. TCP는 연결을 수립하는 데 1 RTT(Round Trip Time: 네트워크 왕복 시간)이 필요하고, TLS까지 사용한다면 총 3 RTT가 필요하다.
QUIC은 1 RTT만 소요되면 연결이 수립된다. 심지어는 두 번째 연결 시도부터는 기존 연결의 connection id와 메타데이터를 그대로 사용하기 때문에 커넥션 수립 소요 시간이 0 RTT이다.
이것이 가능한 이유는 첫 번째 연결 시도에서 연결 설정에 필요한 데이터를 포함한 그 외 메타데이터(보안 관련 데이터 등)까지 전부 꽂아버리기 때문이다. 두 번째 연결부터는 첫 번째 연결의 데이터를 그대로 사용하기 때문에 바로 커넥션이 맺어진다.
QUIC 프로토콜은 재전송 패킷을 포함한 모든 패킷에 고유한 패킷 번호를 부여하기 때문에 정확한 네트워크 왕복 시간(RTT)를 계산하게 되었다. 그로 인해 TCP의 재전송의 모호성 문제(TCP's retransmission ambiguity problem)를 해결하였다. 또한 QUIC은 패킷 프레이밍과 ACK 패킷을 개선하여 더 스마트하고 빠른 혼잡 제어를 구현하였다.
이와 같이 패킷 손실 감지에 걸리는 시간 단축하였기 때문에 QUIC은 혼잡 제어를 개선할 수 있었다.
QUIC은 여러 개의 독립적인 스트림을 구성하여 세그먼트가 손실되어도 다른 스트림에 영향을 미치지 않게 한다. TCP의 가상 회선 방식을 개선하기 위해, UDP를 사용하여 가상 회선 방식을 새롭게 구현하였기 때문에 독립적인 스트림을 구성할 수 있었다.
도 8은 TCP-TLS 기반 연결 방법의 일 실시예를 도시한 도면이고, 도 9는 QUIC 기반 연결 방법의 일 실시예를 도시한 도면이다.
도 8 및 도 9를 참조하면, TCP+TLS에서의 HTTP Request보다 QUIC에서의 HTTP Request가 훨씬 적은 신호의 송수신으로 수행될 수 있음을 알 수 있다.
QUIC 프로토콜은 웹 애플리케이션의 성능 및 대기 시간을 개선할 수 있다. 대부분의 웹 응용 프로그램은 HTTP, TCP 및 TLS(HTTPS)로 실행된다. QUIC은 TCP의 흐름 및 정체 제어 개념을 유지한다. QUIC은 최소 연결 지향적이고 안정적이며 순서가 지정된 바이트 스트림(byte stream)을 제공할 수 있다. QUIC은 스트림 멀티플렉싱(예를 들어, HTTP/2와 유사)을 활성화하여 대기 시간을 최적화할 수 있다. QUIC은 기본적으로 제공되는 종단 간 암호화 및 전체 암호화로 보안을 향상시킬 수 있다. QUIC에서도 여전히 TLS/SSL을 사용하지만 TLS의 핸드셰이크 지연 인플레이션을 방지할 수 있다. QUIC에서는 브라우저 내부의 코드를 사용하기 때문에, 전체 시스템 업데이트가 필요하지 않다.
도 10은 QUIC 암호화 handshake 방법의 일 실시예를 도시한 도면이고, 도 11은 QUIC 기반 연결 테스트 결과의 일 실시예를 도시한 도면이다.
도 10을 참조하면, 초기 연결에서 클라이언트는 불완전한(incomplete) 클라이언트(client) Hello(CHLO) 메시지를 전송할 수 있다. 서버는 거부(reject, REJ) 메시지로 응답할 수 있다. 예를 들어, REJ 메시지는 Diffie-Hellman public value, 서버를 인증하는 인증서 체인(certificate chain), 클라이언트의 공인 IP로 인증된 암호화 블록, 체인의 리프 인증서(leaf certificate)의 개인 키(private key)를 사용하는 server config의 서명, 소스 주소 토큰(source-address token) 등에 관련된 정보를 포함할 수 있다. 클라이언트는 완전한(complete) CHLO 이후에는 연결을 위한 초기 키를 소유하고 서버에 데이터를 자유롭게 보낼 수 있다. 예를 들어, 완전한 CHLO 메시지는 클라이언트의 일시적인 D-H(Diffie helman) public value를 포함할 수 있다. 핸드셰이크가 성공하면 서버는 server hello(SHLO) 메시지를 전송할 수 있다. 예를 들어, SHLO 메시지는 서버의 일시적인 D-H public value를 포함할 수 있다. 서버와 클라이언트 모두 순방향 보안 키로 암호화된 패킷을 전송하도록 전환할 수 있다.
예를 들어, 핸드셰이크가 성공하면 서버는 Server Hello(SHLO)와 함께 리턴(return)될 수 있다. 향후 연결에서 클라이언트는 이전 협상을 캐시하고 그 시점에서 시작할 수 있다.
QUIC는 두 가지 수준의 보안을 제공할 수 있다.
- 초기 클라이언트 데이터는 초기 키(TLS)를 사용하여 암호화될 수 있다.
- 후속 데이터는 순방향 보안 키(forward-secure keys)로 암호화될 수 있다.
도 12는 QUIC 패킷 구조의 일 실시예를 도시한 도면이고, 도 13은 본 명세서의 일 실시예에 따른 블록 전송 시스템 실험 결과의 일 실시예를 도시한 도면이다.
도 12를 참조하면, QUIC 패킷 구조는 도 12와 같이 구성될 수 있으나, 이에 한정되지는 않는다.
도 13을 참조하면, 테스트 환경은 Fabric v2.1 Peer가 사용되었고, 피어 간 RTT(roundtrip time)는 3ms로 설정되었다. 총 소요 시간은 약 76ms였고, 랩터 인코딩/디코딩에 약 70ms가 소요되었으며, 암호화에 약 5ms, 전송 지연에 약 1ms가 소요되었다. CPU 병렬 처리를 통해 랩터 인코딩/디코딩의 처리속도는 향상될 수 있을 것으로 보인다.
도 13의 방법은 블록 전송 방법을 설명하기 위한 예시일 뿐, 실제 서비스가 도 13과 같은 형태로 제한되는 것은 아니다.
도 7의 일례에 표시된 세부 단계 중 일부는 필수 단계가 아닐 수 있고, 생략될 수 있다. 도 7에 도시된 단계 외에 다른 단계가 추가될 수 있고, 상기 단계들의 순서는 달라질 수 있다. 상기 단계들 중 일부 단계가 독자적 기술적 의미를 가질 수 있다.
본 명세서의 실시예에 따른 동작은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 프로그램 또는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽힐 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산 방식으로 컴퓨터로 읽을 수 있는 프로그램 또는 코드가 저장되고 실행될 수 있다.
실시예가 소프트웨어로 구현될 때, 상술한 기법은 상술한 기능을 수행하는 모듈(과정, 기능 등)로 구현될 수 있다. 모듈은 메모리에 저장되고, 프로세서에 의해 실행될 수 있다. 메모리는 프로세서 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다.
또한, 컴퓨터가 읽을 수 있는 기록매체는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다. 프로그램 명령은 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
본 발명의 일부 측면들은 장치의 문맥에서 설명되었으나, 그것은 상응하는 방법에 따른 설명 또한 나타낼 수 있고, 여기서 블록 또는 장치는 방법 단계 또는 방법 단계의 특징에 상응한다. 유사하게, 방법의 문맥에서 설명된 측면들은 또한 상응하는 블록 또는 아이템 또는 상응하는 장치의 특징으로 나타낼 수 있다. 방법 단계들의 몇몇 또는 전부는 예를 들어, 마이크로프로세서, 프로그램 가능한 컴퓨터 또는 전자 회로와 같은 하드웨어 장치에 의해(또는 이용하여) 수행될 수 있다. 몇몇의 실시예에서, 가장 중요한 방법 단계들의 하나 이상은 이와 같은 장치에 의해 수행될 수 있다.
실시예들에서, 프로그램 가능한 로직 장치(예를 들어, 필드 프로그래머블 게이트 어레이)가 여기서 설명된 방법들의 기능의 일부 또는 전부를 수행하기 위해 사용될 수 있다. 실시예들에서, 필드 프로그래머블 게이트 어레이는 여기서 설명된 방법들 중 하나를 수행하기 위한 마이크로프로세서와 함께 작동할 수 있다. 일반적으로, 방법들은 어떤 하드웨어 장치에 의해 수행되는 것이 바람직하다.
상술한 다양한 실시예들은 그 기술적 아이디어 및 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 다양한 실시예들의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 다양한 실시예들의 등가적 범위 내에서의 모든 변경은 다양한 실시예들의 범위에 포함된다. 또한, 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함할 수 있다.

Claims (10)

  1. 블록체인(blockchain) 시스템에서 전송 블록체인 노드에서 수행되는 블록(block) 전송 방법에 있어서,
    상기 전송 블록체인 노드는 피어 컨테이너 및 MPBTP(multipath block transport protocol) 컨테이너를 포함하고,
    상기 MPBTP 컨테이너가, 상기 피어 컨테이너로부터 제1 전송 블록을 획득하는 단계;
    상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 수신자가 복수의 제1 수신 블록체인 노드임을 기초로, 상기 제1 전송 블록에 FEC(forward error correcting) 인코딩(encoding)을 수행하는 단계;
    상기 MPBTP 컨테이너가, 상기 제1 전송 블록에 암호화를 수행하는 단계; 및
    상기 MPBTP 컨테이너가, 상기 복수의 제1 수신 블록체인 노드에게 전송하는 단계를 포함하고,
    상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 수신자가 단수인지 또는 복수인지 여부를 판단하는 단계를 더 포함하는,
    블록 전송 방법.
  2. 청구항 1에 있어서,
    상기 MPBTP 컨테이너가, 상기 피어 컨테이너로부터 제2 전송 블록을 획득하는 단계; 및
    상기 MPBTP 컨테이너가, 상기 제2 전송 블록의 수신자가 하나의 제2 수신 블록체인 노드임을 기초로, QUIC(quick UDP(user datagram protocol) internet connections) 프로토콜 기반으로 상기 제2 전송 블록을 UDP 방식을 통해 상기 하나의 제2 수신 블록체인 노드에게 전송하는 단계를 더 포함하는,
    블록 전송 방법.
  3. 청구항 1에 있어서,
    상기 FEC 인코딩은 랩터(raptor) 코드를 기반으로 수행되는,
    블록 전송 방법.
  4. 삭제
  5. 청구항 1에 있어서,
    상기 제1 전송 블록은 UDP(user datagram protocol) 방식을 통해 전송되는,
    블록 전송 방법.
  6. 블록체인(blockchain) 시스템에서 수신 블록체인 노드에서 수행되는 블록(block) 수신 방법에 있어서,
    상기 수신 블록체인 노드는 피어 컨테이너 및 MPBTP(multipath block transport protocol) 컨테이너를 포함하고,
    상기 MPBTP 컨테이너가, 제1 전송 블록체인 노드로부터 UDP(user datagram protocol) 방식을 통해 제1 전송 블록을 수신하는 단계;
    상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 수신자가 상기 수신 블록체인 노드를 포함하는 복수의 블록체인 노드임을 기초로, 상기 제1 전송 블록의 암호를 복호하는 단계;
    상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 FEC(forward error correcting) 디코딩(decoding)을 수행하는 단계; 및
    상기 MPBTP 컨테이너가, 상기 피어 컨테이너에게 상기 제1 전송 블록을 전달하는 단계를 포함하고,
    상기 MPBTP 컨테이너가, 상기 제1 전송 블록의 수신자가 단수인지 또는 복수인지 여부를 판단하는 단계를 더 포함하는,
    블록 수신 방법.
  7. 청구항 6에 있어서,
    상기 MPBTP 컨테이너가, 제2 전송 블록체인 노드로부터 UDP(user datagram protocol) 방식을 통해 제2 전송 블록을 수신하는 단계;
    상기 MPBTP 컨테이너가, 상기 제2 전송 블록의 수신자가 상기 수신 블록체인 노드 하나임을 기초로, QUIC(quick UDP internet connections) 프로토콜 기반으로 상기 제2 전송 블록을 수신하는 단계를 더 포함하는,
    블록 수신 방법.
  8. 청구항 6에 있어서,
    상기 FEC 인코딩은 랩터(raptor) 코드를 기반으로 수행되는,
    블록 수신 방법.
  9. 삭제
  10. 청구항 6에 있어서,
    상기 제1 전송 블록은 UDP(user datagram protocol) 방식을 통해 전송되는,
    블록 수신 방법.
KR1020210125538A 2021-09-23 2021-09-23 블록체인 시스템에서 블록 전송 방법 KR102347568B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210125538A KR102347568B1 (ko) 2021-09-23 2021-09-23 블록체인 시스템에서 블록 전송 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210125538A KR102347568B1 (ko) 2021-09-23 2021-09-23 블록체인 시스템에서 블록 전송 방법

Publications (1)

Publication Number Publication Date
KR102347568B1 true KR102347568B1 (ko) 2022-01-06

Family

ID=79348046

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210125538A KR102347568B1 (ko) 2021-09-23 2021-09-23 블록체인 시스템에서 블록 전송 방법

Country Status (1)

Country Link
KR (1) KR102347568B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200151716A1 (en) * 2018-04-04 2020-05-14 Vijay Madisetti Method and System for Exchange of Value or Tokens Between Blockchain Networks
KR20200074908A (ko) * 2018-12-13 2020-06-25 알리바바 그룹 홀딩 리미티드 분산 시스템 내의 네트워크 노드들 간의 합의 달성
US20200401578A1 (en) * 2017-09-29 2020-12-24 Oracle International Corporation System and method for managing a blockchain cloud service

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200401578A1 (en) * 2017-09-29 2020-12-24 Oracle International Corporation System and method for managing a blockchain cloud service
US20200151716A1 (en) * 2018-04-04 2020-05-14 Vijay Madisetti Method and System for Exchange of Value or Tokens Between Blockchain Networks
KR20200074908A (ko) * 2018-12-13 2020-06-25 알리바바 그룹 홀딩 리미티드 분산 시스템 내의 네트워크 노드들 간의 합의 달성

Similar Documents

Publication Publication Date Title
US7870380B2 (en) Providing secure connections for data transmission
US10091320B2 (en) Distributed cache for state transfer operations
US7228412B2 (en) Bufferless secure sockets layer architecture
US7149892B2 (en) Secure sockets layer proxy architecture
US9258349B2 (en) Method and apparatus of performing remote computer file exchange
US7913261B2 (en) Application-specific information-processing method, system, and apparatus
CN101297516B (zh) 用于自动切换消息认证密钥的方法
US20030014650A1 (en) Load balancing secure sockets layer accelerator
Culley et al. Marker PDU aligned framing for TCP specification
JP2018528679A (ja) 負荷平衡システムにおいて接続を確立するデバイス及び方法
CN114095195B (zh) 用于安全套接字层代理的自适应控制的方法、网络设备以及非瞬态计算机可读介质
KR102347568B1 (ko) 블록체인 시스템에서 블록 전송 방법
US8595477B1 (en) Systems and methods for reducing handshake delay in streaming protocol web requests
Costea et al. Secure opportunistic multipath key exchange
Yosofie et al. Recent progress on the QUIC protocol
CN115801236A (zh) 一种加密代理方法、加密代理模块、代理设备及存储介质
Brendel et al. Zero round-trip time for the extended access control protocol
JP5423228B2 (ja) 通信装置及び通信システム
Pohly et al. MICSS: A realistic multichannel secrecy protocol
Seggelmann Datagram transport layer security
Culley et al. RFC 5044: Marker PDU Aligned Framing for TCP Specification
Dakhane et al. UDP-Based Multi-Stream Communication Protocol
Recio et al. Remote Direct Data Placement Work Group P. Culley INTERNET-DRAFT Hewlett-Packard Company draft-ietf-rddp-mpa-02. txt U. Elzur Broadcom Corporation

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant