KR102284422B1 - 블록체인 시스템에서 노드 사이의 통신 확립 방법 및 디바이스 - Google Patents

블록체인 시스템에서 노드 사이의 통신 확립 방법 및 디바이스 Download PDF

Info

Publication number
KR102284422B1
KR102284422B1 KR1020197019262A KR20197019262A KR102284422B1 KR 102284422 B1 KR102284422 B1 KR 102284422B1 KR 1020197019262 A KR1020197019262 A KR 1020197019262A KR 20197019262 A KR20197019262 A KR 20197019262A KR 102284422 B1 KR102284422 B1 KR 102284422B1
Authority
KR
South Korea
Prior art keywords
node
communication session
identifier
connection
communication
Prior art date
Application number
KR1020197019262A
Other languages
English (en)
Other versions
KR20200096720A (ko
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 어드밴스드 뉴 테크놀로지스 씨오., 엘티디.
Publication of KR20200096720A publication Critical patent/KR20200096720A/ko
Application granted granted Critical
Publication of KR102284422B1 publication Critical patent/KR102284422B1/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/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • 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]
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

본원에는 블록체인 시스템에서 제1 노드와 제2 노드 사이의 통신을 확립하는 방법, 디바이스 및 장치 - 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 프로그램을 포함함 -가 개시된다. 방법 중 하나는: 제1 노드와 제2 노드 사이에 제1 통신 세션이 확립되도록, 제1 노드가 제1 노드의 노드 식별자를 제2 노드에 제공하고, 제2 노드로부터 제2 노드의 노드 식별자를 수신하는 것; 제1 노드가 제1 노드와 제2 노드 사이에 제2 통신 세션이 존재하는지를 결정하는 것; 및 제1 노드와 제2 노드 사이에 제2 통신 세션이 존재한다는 결정에 응답하여, 제1 노드의 노드 식별자 및 제2 노드의 노드 식별자를 기초로 제1 통신 세션 및 제2 통신 세션 중 하나를 종료하는 것을 포함한다.

Description

블록체인 시스템에서 노드 사이의 통신 확립 방법 및 디바이스
본 명세서는 일반적으로 컴퓨터 기술 더욱 구체적으로는, 블록 체인 시스템에서 노드 사이의 통신 확립 방법 및 디바이스에 관한 것이다.
분산형 원장 시스템(distributed ledger system, DLSs) 또는 합의 시스템(consensus systems)으로도 알려진 블록체인 시스템(blockchain system)은 참가 엔티티(participating entities)가 안전하고 불변하게(immutably) 데이터를 저장하는 것을 가능케 한다. 블록체인 시스템은 임의의 특정 사용 케이스를 참조하지 않으면서, 임의의 DLS를 포함할 수 있으며, 공중(public), 개인(private) 및 컨소시엄(consortium) 블록체인 네트워크에 대해 사용될 수 있다. 공중 블록체인 네트워크는 모든 엔티티가 시스템을 사용하고 합의 처리에 참가하도록 개방된다. 개인 블록체인 네트워크는 읽기 및 쓰기 허가(permission)를 중앙 제어하는 특정 엔티티에 대해 제공된다. 컨소시엄 블록체인 네트워크는 합의 처리를 제어하는 엔티티의 선택 그룹에 대해 제공되며, 액세스 제어 계층을 포함한다.
블록체인 시스템은 하나 이상의 블록 체인을 유지한다. 블록체인은 악의적인 파티에 의한 데이터의 탬퍼링(tampering) 및 조작을 방지할 수 있는, 트랜잭션(transactions)과 같은 데이터를 저장하는 데이터 구조이다.
블록체인 시스템은 예를 들어, 고정된 중앙 서버의 필요 없이, 노드가 서로 직접적으로 통신하는 피어 투 피어(peer-to-peer, P2P) 네트워크를 사용하여 구현된다. P2P 네트워크에서 각 노드는 P2P 네트워크 내의 다른 노드와 통신을 개시할 수 있다.
하나의 이러한 시스템에서, P2P 네트워크 내의 두 개의 노드, 노드 A 및 노드 B는 모두 서로에게 통신을 개시하기 위한 연결 요청을 전송할 수 있다. 양자의 연결 요청이 처리되면, 생성된 네트워크는 노드 A와 노드 B 사이에 확립된 두 개의 중복된 연결을 포함할 것이다. 다른 이러한 시스템에서, 두 개의 노드 중 더욱 높은 노드 식별자를 갖는 노드만이 연결 요청을 전송하도록 허용된다. 더욱 낮은 노드 식별자를 갖는 노드가 예를 들어, 보안의 이유로 어느 연결 요청을 수락하도록 허용되지 않는 경우, 두 개의 노드 사이에는 통신이 확립되지 않을 수 있다.
일 태양에서, 블록체인 시스템에서 제1 노드와 제2 노드 사이의 통신을 확립하는 컴퓨터 구현 방법은: 제1 노드와 제2 노드 사이에 제1 통신 세션이 확립되도록, 제1 노드에 의해, 제1 노드의 노드 식별자를 제2 노드에 제공하고, 제1 노드에 의해 제2 노드로부터 제2 노드의 노드 식별자를 수신하는 것; 제1 노드에 의해, 제1 노드와 제2 노드 사이에 제2 통신 세션이 존재하는지를 결정하는 것; 및 제1 노드와 제2 노드 사이에 제2 통신 세션이 존재한다는 결정에 응답하여, 제1 노드에 의해, 제1 노드의 노드 식별자 및 제2 노드의 노드 식별자를 기초로 제1 통신 세션 및 제2 통신 세션 중 하나를 종료하는 것을 포함한다.
다른 태양에서, 블록체인 시스템에서 제1 노드를 구현하는 컴퓨팅 디바이스는: 하나 이상의 프로세서; 및 하나 이상의 프로세서에 연결되고, 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 메모리를 포함한다. 명령어는 제1 노드와 제2 노드 사이에 제1 통신 세션이 확립되도록, 제1 노드의 노드 식별자를 제2 노드에 제공하고, 제2 노드로부터 제2 노드의 노드 식별자를 수신하고; 제1 노드와 제2 노드 사이에 제2 통신 세션이 존재하는지를 결정하며; 제1 노드와 제2 노드 사이에 제2 통신 세션이 존재한다는 결정에 응답하여, 제1 노드의 노드 식별자 및 제2 노드의 노드 식별자를 기초로 제1 통신 세션 및 제2 통신 세션 중 하나를 종료하도록 하나 이상의 프로세서에 의해 실행 가능하다.
또 다른 태양에서, 비일시적 컴퓨터 판독가능 매체는 컴퓨팅 디바이스의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스가 블록체인 시스템에서 제1 노드와 제2 노드 사이의 통신 확립 방법을 수행하게 하는 명령어를 저장한다. 방법은: 제1 노드와 제2 노드 사이에 제1 통신 세션이 확립되도록, 제1 노드에 의해, 제1 노드의 노드 식별자를 제2 노드에 제공하고, 제1 노드에 의해 제2 노드로부터 제2 노드의 노드 식별자를 수신하는 것; 제1 노드에 의해, 제1 노드와 제2 노드 사이에 제2 통신 세션이 존재하는지를 결정하는 것; 및 제1 노드와 제2 노드 사이에 제2 통신 세션이 존재한다는 결정에 응답하여, 제1 노드에 의해, 제1 노드의 노드 식별자 및 제2 노드의 노드 식별자를 기초로 제1 통신 세션 및 제2 통신 세션 중 하나를 종료하는 것을 포함한다.
본 명세서의 일 부분에 통합되고 이를 구성하는 첨부 도면은 실시예를 예시한다. 도면을 참조하는 다음의 서술에서, 상이한 도면에서 동일한 번호는 달리 나타내지 않는 한 동일하거나 유사한 요소를 나타낸다.
도 1은 일 실시예에 따른 블록체인 시스템의 개략도이다.
도 2는 일 실시예에 따른, 블록체인 시스템에서 노드를 구현하는 컴퓨팅 디바이스의 개략도이다.
도 3은 일 실시예에 따른, 블록체인 시스템에서 제1 및 제2 노드 사이의 통신 확립 방법의 흐름도이다.
도 4는 일 실시예에 따른, 블록체인 시스템에서 제1 및 제2 노드 사이의 통신 확립 방법의 흐름도이다.
도 5는 일 실시예에 따른 블록체인 시스템의 개략도이다.
도 6은 일 실시예에 따른, 블록체인 시스템에서 제1 및 제2 노드 사이의 통신 확립 장치의 블록도이다.
본 명세서의 실시예는 블록체인 시스템에서 제1 노드와 제2 노드 사이의 통신을 확립하는 방법 및 디바이스를 제공한다. 방법 및 디바이스는 제1 노드 및 제2 노드의 각각이 제1 노드와 제2 노드 사이의 통신 세션을 확립하도록 연결 요청을 전송하는 것을 허용한다. 그 후, 방법 및 디바이스는 하나보다 많은 통신 세션이 제1 노드와 제2 노드 사이에 확립되었는지를 검사하며, 그러한 경우 여분의 통신 세션과, 제1 노드와 제2 노드의 노드 식별자를 기초로 여분의 통신 세션이 확립된 연결을 종료할 수 있다.
본 명세서에 개시된 실시예는 하나 이상의 기술적인 효과를 갖는다. 일부 실시예에서, 방법 및 디바이스는 블록체인 시스템 내의 모든 노드에게 연결을 요청할 능력을 제공한다. 이는 더욱 높은 유연도를 허용하며, 일정 조건 하에, 예를 들어 노드가 일정한 미리 확립된 규칙을 충족하지 못할 때 발생할 수 있는 기아(starvation)를 방지하여, 다른 노드와의 연결을 요청하는 것이 방지된다. 다른 실시예에서, 방법 및 디바이스는 하나보다 많은 통신 세션이 블록체인 시스템 내의 주어진 노드의 쌍 사이에 확립되었는지를 검사하는 능력을 제공한다. 이는 블록체인 시스템이 노드 사이에 중복된 연결을 확립하는 것을 피하도록 허용하여, 연산 리소스를 절약하고 동시에, 보안 환경에서 노드 사이의 통신을 용이하게 한다. 또 다른 실시예에서, 이러한 보안 환경은 예를 들어, 일정 노드가 연결을 위한 요청만을 하도록 허용되고 보안의 이유로 수신된 모든 연결 요청을 거부하도록 요구되는 일정 요건을 충족한다. 또 다른 실시예에서, 방법 및 디바이스는 그의 IP 주소를 사용하지 않으면서, 블록체인 시스템 내의 노드를 식별하는 능력을 제공한다. 이는 각 IP 주소가 하나보다 많은 노드를 지원하는데 사용되도록 허용하여, 시스템 유연도를 개선한다. 실제로, IP 주소가 하나보다 많은 노드를 지원하도록 허용하는 것은 하나의 컴퓨팅 디바이스가 하나보다 많은 노드를 호스트하는(host) 것을 가능케 하여, 블록체인 시스템을 구현하기 위한 하드웨어 비용을 절감한다.
다음의 서술은 실시예의 세부사항을 제공한다. 실시예에서, 블록체인은 데이터 예를 들어, 트랜잭션(transaction)을, 트랜잭션이 불변이고 차후에 검증될 수 있는 방식으로 저장하는 데이터 구조이다. 블록체인은 하나 이상의 블록을 포함한다. 각 블록은 이전의 블록의 암호 해시(cryptographic hash)를 포함함으로써, 블록체인 내에서 바로 앞의 이전의 블록에 링크된다. 각 블록은 또한, 타임스탬프, 그 자신의 암호 해시 및 하나 이상의 트랜잭션을 포함할 수 있다. 일반적으로 블록체인 시스템의 노드에 의해 이미 검증된 트랜잭션은 머클 트리(Merkle tree)와 같은 데이터 구조로 해시되고 인코딩될 수 있다. 머클 트리에서, 트리의 잎 노드(leaf nodes)에서 데이터가 해시되고, 트리의 각 가지에서 모든 해시는 가지의 루트(root)에 사슬같이 이어질 수 있다(concatenated). 이 처리는 트리에서 모든 데이터를 나타내는 해시를 저장하는, 전체 트리의 루트까지 트리의 위로 계속된다. 트리에 저장된 트랜잭션으로 지칭될 해시는 그것이 트리의 구조와 일치하는 지를 결정함으로써, 빠르게 검증될 수 있다.
블록체인 시스템은 하나 이상의 블록체인을 관리하고 갱신하며 유지하는 컴퓨팅 노드의 네트워크를 포함한다. 네트워크는 공중 블록체인 네트워크, 개인 블록체인 네트워크, 또는 컨소시엄 블록체인 네트워크일 수 있다. 예를 들어, 수백, 수천 또는 심지어 수백만의 엔티티와 같은 다수의 엔티티가 공중 블록체인 네트워크에서 동작할 수 있고, 엔티티의 각각은 공중 블록체인 네트워크에서 적어도 하나의 노드를 동작시킨다. 따라서, 공중 블록체인 네트워크는 참가 엔티티에 대한 공중 네트워크로 여겨질 수 있다. 때때로, 대부분의 엔티티(노드)는 블록이 블록체인 네트워크의 블록체인에 대해 유효하고 이에 추가되도록 매 블록에 서명을 해야(sign) 한다. 공중 블록체인 네트워크의 예시는 블록체인으로 지칭되는 분산형 원장(distributed ledger)을 활용하는(leverage) 특정 피어 투 피어 지불 네트워크를 포함한다.
일반적으로, 공중(public) 블록체인 네트워크는 공중 트랜잭션을 지원할 수 있다. 공중 트랜잭션은 공중 블록체인 네트워크 내의 모든 노드와 공유되고, 전역(global) 블록체인에 저장된다. 전역 블록체인은 모든 노드를 통해 복제되는 블록체인이며, 모든 블록체인은 전역 블록체인에 대해 합의되는 완전한 상태에 있다. 합의(예를 들어, 블록체인에 블록의 추가에 대한 동의)를 달성하기 위해, 공중 블록체인 네트워크에는 합의 프로토콜(consensus protocol)이 구현된다. 합의 프로토콜의 예시는 (예를 들어, 일부 암호화폐 네트워크에서 구현되는) 작업 증명(proof-of-work, POW), 지분 증명(proof-of-stake, POS), 및 권한 증명(proof-of-authority, POA)을 포함한다.
일반적으로, 개인 블록체인 네트워크는 읽기 및 쓰기 허가를 중앙 제어하는 특정 엔티티에 대해 제공될 수 있다. 엔티티는 어느 노드가 블록체인 네트워크에 참가할 수 있는지를 제어한다. 결과적으로, 개인 블록체인 네트워크는 일반적으로 네트워크에 참가하도록 누가 허용되는지, 그리고 (예를 들어, 일정한 트랜잭션에서만) 그의 참가 레벨에 대해 제한을 가하는 허가된(permissioned) 네트워크로 지칭된다. 다양한 타입의 액세스 제어 메커니즘이 사용될 수 있다(예를 들어, 기존의 참가자는 새로운 엔티티를 추가하는 것에 투표를 하고, 규제 기관(regulatory authority)은 승인(admission)을 제어할 수 있다).
일반적으로, 컨소시엄 블록체인 네트워크는 참가 엔티티 중 개인일 수 있다. 컨소시엄 블록체인 네트워크에서, 합의 처리는 인가된 노드의 세트에 의해 제어되고, 하나 이상의 노드는 각각의 엔티티(예를 들어, 금융기관, 보험 회사)에 의해 동작된다. 예를 들어, 열 개(10)의 엔티티(예를 들어, 금융 기관, 보험 회사)의 컨소시엄은 컨소시엄 블록체인 네트워크를 동작시킬 수 있으며, 이들 각각은 컨소시엄 블록체인 네트워크에서 적어도 하나의 노드를 동작시킬 수 있다. 따라서, 컨소시엄 블록체인 네트워크는 참가 엔티티에 대해 개인 네트워크로 여겨질 수 있다. 일부 예시에서, 각 엔티티(노드)는 블록이 블록체인에 대해 유효하고 이에 추가되도록 모든 블록에 서명해야 한다. 일부 예시에서, 엔티티(노드)의 적어도 서브세트(예를 들어, 적어도 7개의 엔티티)는 블록이 블록체인에 대해 유효하고 이에 추가되도록 모든 블록에 서명해야 한다.
도 1은 일 실시예에 따른 블록체인 시스템(100)의 개략도를 도시한다. 도 1을 참조하면, 블록체인 시스템(100)은 블록체인(120) 상에서 동작하도록 구성된 복수의 노드 예를 들어, 노드(102-110)를 포함할 수 있다. 노드(102-110)는 피어 투 피어(P2P) 네트워크와 같은 네트워크(112)를 형성할 수 있다. 노드(102-110)의 각각은 블록체인(120)의 사본을 저장하도록 구성되는, 컴퓨터 또는 컴퓨터 시스템과 같은 컴퓨팅 디바이스이거나, 또는 프로세스 또는 애플리케이션과 같이 컴퓨팅 디바이스 상에서 구동되는 소프트웨어일 수 있다. 노드(102-110)의 각각은 고유의 식별자를 가질 수 있다.
블록체인(120)은 도 1에서 블록(B1-B5)과 같이 데이터 블록의 형태로 레코드의 성장하는 리스트(growing list of records)를 포함할 수 있다. 블록(B1-B5)의 각각은 타임스탬프, 이전의 블록의 암호(cryptographic) 해시 및 현재 블록의 데이터를 포함할 수 있으며, 이는 통화(monetary) 트랜잭션과 같은 트랜잭션일 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 블록(B5)은 타임스탬프, 블록(B4)의 암호 해시, 및 블록(B5)의 트랜잭션 데이터를 포함할 수 있다. 또한, 예를 들어, 이전의 블록의 암호 해시를 생성하기 위해, 이전의 블록 상에서 해싱 동작이 수행될 수 있다. 해싱 동작은 다양한 길이의 입력을 SHA-256과 같은 해시 알고리즘을 통해 고정된 길이의 암호 출력으로 변환할 수 있다.
노드(102-110)는 블록체인(120) 상에서 동작을 수행하도록 구성될 수 있다. 예를 들어, 노드 예를 들어, 노드(102)가 블록체인(120)에 새로운 데이터를 저장하기를 원할 때, 그 노드는 블록체인(120)에 추가될 새로운 블록을 생성하고, 다른 노드 예를 들어, 네트워크(112) 내의 노드(104-110)에 새로운 블록을 브로드캐스트(broadcast)할 수 있다. 새로운 블록의 정당성(legitimacy) 예를 들어, 그의 서명 및 트랜잭션의 유효성을 기초로, 다른 노드는 노드(102) 및 다른 노드가 새로운 블록을 블록체인(120)의 그들 각각의 사본에 추가할 수 있도록, 새로운 블록의 수락을 결정할 수 있다. 이 처리는 반복되기 때문에, 데이터의 더욱더 많은 블록이 블록체인(120)에 추가될 수 있다.
도 2는 일 실시예에 따른, 블록체인 시스템에서 노드 예를 들어, 노드(102, 도 1)를 구현하는 컴퓨팅 디바이스(200)의 개략도를 도시한다. 도 2를 참조하면, 컴퓨팅 디바이스(200)는 통신 인터페이스(202), 프로세서(204) 및 메모리(206)를 포함할 수 있다.
통신 인터페이스(202)는 네트워크 내에서 컴퓨팅 디바이스(200)와, 다른 노드 예를 들어, 노드(104-110, 도 1)를 구현하는 디바이스 사이의 통신을 용이하게 할 수 있다. 일부 실시예에서, 통신 인터페이스(202)는 인터넷 표준 또는 프로토콜, 통합 서비스 디지털 네트워크(Integrated Services Digital Network, ISDN) 표준 등과 같은 하나 이상의 통신 표준을 지원하도록 구성된다. 일부 실시예에서, 통신 인터페이스(202)는 근거리 통신망(LAN) 카드, 케이블 모뎀, 위성 모뎀, 데이터 버스, 케이블, 무선 통신 채널, 무선 기반 통신 채널, 셀룰러 통신 채널, 인터넷 프로토콜(IP) 기반 통신 디바이스, 또는 유선 및/또는 무선 통신을 위한 다른 통신 디바이스 중 하나 이상을 포함할 수 있다. 일부 실시예에서, 통신 인터페이스(202)는 공중 클라우드 인프라구조(public cloud infrastructure), 개인 클라우드 인프라구조, 하이브리드 공중/개인 클라우드 인프라구조를 기초로 할 수 있다.
프로세서(204)는 하나 이상의 전용 프로세싱 유닛, 애플리케이션 특정 집적 회로(application-specific integrated circuits, ASICs), 필드 프로그래머블 게이트 어레이(field-programmable gate arrays, FPGAs), 또는 다양한 다른 타입의 프로세서 또는 프로세싱 유닛을 포함할 수 있다. 프로세서(204)는 메모리(206)와 연결되며, 메모리(206)에 저장된 명령어를 실행하도록 구성된다.
메모리(206)는 블록체인(120, 도 1)의 사본과 같은, 프로세서-실행 가능 명령어 및 데이터를 저장하도록 구성될 수 있다. 메모리(206)는 정적 랜덤 액세스 메모리(static random access memory, SRAM), 전기적 삭제가능 프로그래머블 읽기 전용 메모리(electrically erasable programmable read-only memory, EEPROM), 삭제가능 프로그래머블 읽기 전용 메모리(EPROM), 프로그래머블 읽기 전용 메모리(PROM), 읽기 전용 메모리(ROM), 자기 메모리, 플래시 메모리 또는 자기 또는 광학 디스크와 같은 임의의 타입의 휘발성 또는 비휘발성 메모리 디바이스, 또는 이들의 조합을 포함할 수 있다. 메모리(206) 내의 명령어가 프로세서(204)에 의해 실행될 때, 컴퓨팅 디바이스(200)는 블록체인(120) 상에서 동작을 수행할 수 있다.
블록체인 시스템(100, 도 1)의 동작을 용이하게 하기 위해, 네트워크(112) 내의 노드(102-110)는 노드 간(inter-node) 통신 방법에 따라 동작할 수 있다. 이 노드 간 통신 방법은 두 개의 노드 사이의 중복된 연결이 회피될 수 있도록, 네트워크에서 제1 및 제2 노드 사이의 통신을 확립하는 처리를 규정할 수 있다.
예를 들어, 노드(102 및 104)는 연결 요청을 전송하기 전에, 예를 들어, 그들의 대응하는 IP 주소를 기초로 연결이 이미 확립되었는지를 검증할 수 있다. 추가적으로, 연결 요청을 수신할 때, 수신 노드는 연결이 이미 확립되었는지를 검증할 수 있다. 연결이 이미 확립된 것으로 결정한 경우, 수신 노드는 연결 요청을 거부할 수 있으며, 중복된 연결을 효율적으로 회피한다.
도 3은 일 실시예에 따른, 블록체인 시스템에서 제1 및 제2 노드 사이의 통신 확립 방법(300)의 흐름도를 도시한다. 예를 들어, 블록체인 시스템은 복수의 노드를 포함하는 P2P 네트워크로 구현될 수 있다. 또한, 예를 들어, 방법(300)은 제1 노드인 노드(102, 도 1)에 의해, 제2 노드인 노드(104, 도 1)와의 통신을 개시하도록 수행될 수 있다.
도 1 및 도 3을 참조하면, 단계(302)에서, 노드(102)는 이전의 통신 세션이 이미 존재하는지, 또는 노드(102)와 노드(104) 사이에 확립되었는지를 검증할 수 있다. 예를 들어, 통신 세션은 노드(102)와 노드(104) 사이의 일시적이고(temporary) 상호적인 정보 교환일 수 있다. 특정 구현에 의존하여, 통신 세션은 응용 계층 또는 세션 계층에 확립될 수 있다. 일부 실시예에서, 노드(102)는 노드(102)와 노드(104) 사이에 통신 세션이 이미 존재하는지를 검증하기 위해, 노드(104)의 노드 식별자를 사용할 수 있다.
단계(304)에서, 노드(102)가 노드(102)와 노드(104) 사이에 이전의 통신 세션이 이미 존재하는 것으로 결정하면, 노드(102)는 방법(300)의 실행을 종료할 수 있다. 다른 한편으로, 노드(102)가 노드(102)와 노드(104) 사이에 이전의 통신 세션이 존재하지 않는 것으로 결정하면, 노드(102)는 단계(306)에서, 노드(104)와 연관된 IP 주소에 연결 요청을 전송할 수 있다. 예를 들어, 연결 요청은 노드(102)와 노드(104) 사이에 물리적인 통신 채널을 확립하도록 구성된다. 일부 실시예에서, 노드(102)는 송신 계층 레벨(transport layer level)에서 노드(104)와의 연결을 요청할 수 있으며 예를 들어, 노드(104)와의 전송 제어 프로토콜(Transmission Control Protocol, TCP) 연결의 확립을 요청할 수 있다. 일부 실시예에서, 노드(102)는 노드(104)와의 통신 세션을 생성하지 않고 TCP 연결을 확립함으로써 단계(306)를 수행할 수 있다.
단계(308)에서, 노드(102)는 노드(104)와의 연결이 성공적인지를 결정할 수 있다. 예를 들어, 연결 요청이 노드(104)에 의해 거부되어 그렇지 않은 경우, 노드(102)는 방법(300)의 실행을 종료할 수 있다. 다른 한편으로, 노드(102)가 연결이 성공적인 것으로 결정하면, 노드(102)는 단계(310)에서, 노드(102)와 노드(104) 사이에 통신 세션이 존재하는지를 더 결정할 수 있다. 예를 들어, 노드(102)가 노드(104)와의 연결을 요청할 때, 노드(104)는 또한, 노드(102)와의 연결 및 노드(102)와의 통신 세션의 확립을 요청할 수 있다. 단계(310)에서 노드(102)가 노드(102)와 노드(104) 사이에 통신 세션이 존재하는 것으로 결정한 경우, 노드(102)는 방법(300)의 실행을 종료할 수 있다. 그렇지 않은 경우, 노드(102)는 단계(312)로 진행될 수 있다.
단계(312)에서, 노드(102)는 노드(102)의 노드 식별자를 노드(104)에 제공하고 노드(104)로부터 노드(104)의 노드 식별자를 수신함으로써, 노드(104)와 노드 식별자를 교환할 수 있다. 일부 실시예에서, 노드(102) 및 노드(104)는 보안의 이유로 그들의 개인 키를 사용하여 교환에 각각 서명할 수 있다. 예를 들어, 노드(102)는 노드(102)의 개인 키를 사용하여 그의 노드 식별자를 암호화하고, 노드(104)는 노드(104)의 개인 키를 사용하여 그의 노드 식별자를 암호화할 수 있다. 하지만, 일부 실시예에서, 개인 키를 사용하여 교환에 서명하는 것은 가령, 노드(102 및 104)가 보호되는 환경 예를 들어, 분리된(isolated) 시험 환경에서 동작할 때 필요치 않을 수 있다. 특정 구현이 변할 수 있는 한편, 교환의 목적은 동일하다는 점이 이해될 것이며, 이는 단계(314)에서 노드(102)와 노드(104) 사이의 연결 상에 통신 세션이 확립되도록, 노드 식별자의 교환을 용이하게 할 것이다.
단계(316)에서, 노드(102)는 다른 통신 세션 예를 들어, 단계(314)에서 방금 확립된 통신 세션과 상이한 이전의 통신 세션이 노드(102)와 노드(104) 사이에 이미 존재하는지를 결정할 수 있다. 예를 들어, 노드(102)가 노드(104)와 노드 식별자를 교환할 때, 노드(104)는 또한, 노드(102)와 통신 세션을 확립할 수 있다. 노드(102)가 노드(102)와 노드(104) 사이에 다른 통신 세션이 존재하지 않는 것으로 결정하면, 노드(102)는 방법(300)의 실행을 종료할 수 있다. 다른 한편으로, 노드(102)가 노드(102)와 노드(104) 사이에 다른 통신 세션이 이미 존재하는 것으로 결정하면, 노드(102)는 미리 확립된 규칙을 기초로 통신 세션 중 하나를 종료하기 위해 단계(318)로 진행될 수 있다. 노드(102)는 또한, 종료된 통신 세션이 확립되었던, 노드(102)와 노드(104) 사이의 연결을 더 종료할 수 있다.
미리 확립된 규칙은 노드 식별자를 기초로 할 수 있다. 예를 들어, 노드(102)는 더욱 높은(또는 더욱 낮은) 노드 식별자를 갖는 노드에 의해 개시된 통신 세션을 종료를 위해 선택할 수 있다. 미리 확립된 규칙은 또한, 하나의 통신 세션이 유지하도록 허용되고, 모든 다른 통신 세션이 식별되고 종료될 수 있도록, 사용된 인자가 통신 세션을 시스템적으로 구분할 수 있는 한, 다른 인자를 기초로 할 수 있다. 예를 들어, 미리 확립된 규칙은 노드(102)에게 이전에 확립된 모든 통신 세션을 종료하고, 가장 최근에 확립된 통신 세션을 유지하도록 요구할 수 있다.
도 4는 일 실시예에 따른, 블록체인 시스템에서 제1 및 제2 노드 사이의 통신 확립 방법(400)의 흐름도이다. 예를 들어, 블록체인 시스템은 복수의 노드를 포함하는 P2P 네트워크 내에 구현된다. 또한, 예를 들어, 방법(400)은 제2 노드인 노드(104, 도 1)에 의해, 제1 노드인 노드(102, 도 1)에 의해 전송된 연결 요청을 처리하도록 수행될 수 있다.
도 1 및 도 4를 참조하면, 단계(402)에서, 노드(104)는 노드(102)에 의해 전송된 연결 요청을 수신할 수 있다. 일부 실시예에서, 노드(102)는 송신 계층 레벨에서 노드(104)와의 연결을 요청하고 예를 들어, 노드(104)와의 전송 제어 프로토콜(TCP) 연결의 확립을 요청할 수 있다. 노드(104)는 요청을 처리하고, 따라서 노드(102)와의 연결을 확립할 수 있다.
단계(404)에서, 노드(104)는 노드(104)의 노드 식별자를 노드(102)에 제공하고 노드(102)로부터 노드(102)의 노드 식별자를 수신함으로써, 노드(102)와 노드 식별자를 교환할 수 있다. 일부 실시예에서, 노드(102) 및 노드(104)는 보안의 이유로 그들의 개인 키를 사용하여 교환에 각각 서명할 수 있다. 하지만, 일부 실시예에서, 개인 키를 사용하여 교환에 서명하는 것은 가령, 노드(102 및 104)가 보호되는 환경 예를 들어, 분리된 시험 환경에서 동작할 때 필요치 않을 수 있다. 특정 구현이 변할 수 있는 한편, 교환의 목적은 동일하다는 점이 이해될 것이며, 이는 단계(406)에서 노드(102)와 노드(104) 사이의 연결 상에 통신 세션이 확립되도록, 노드 식별자의 교환을 용이하게 할 것이다.
단계(408)에서, 노드(104)는 다른 통신 세션 예를 들어, 단계(406)에서 방금 확립된 통신 세션과 상이한 이전의 통신 세션이 노드(102)와 노드(104) 사이에 이미 존재하는지를 결정할 수 있다. 예를 들어, 노드(104)가 노드(102)와 노드 식별자를 교환할 때, 노드(102)는 또한, 노드(104)와 통신 세션을 확립할 수 있다. 노드(104)가 노드(102)와 노드(104) 사이에 이전의 통신 세션이 존재하지 않는 것으로 결정하면, 노드(104)는 방법(400)의 실행을 종료할 수 있다. 다른 한편으로, 노드(104)가 노드(102)와 노드(104) 사이에 이전의 통신 세션이 이미 존재하는 것으로 결정하면, 노드(104)는 미리 확립된 규칙을 기초로 통신 세션 중 하나를 종료하기 위해 단계(410)로 진행될 수 있다. 노드(104)는 또한, 종료된 통신 세션이 확립되었던, 노드(102)와 노드(104) 사이의 연결을 더 종료할 수 있다.
일부 실시예에서, 노드(104)는 어느 통신 세션을 종료할 지를 선택하기 위해, 노드(102)에 의해 사용된 것과 동일한 미리 확립된 규칙을 사용하도록 구성된다. 예를 들어, 노드(102)가 더욱 높은 노드 식별자를 갖는 노드에 의해 개시된 통신 세션을 종료시킬 세션으로 선택하도록 구성된 경우, 노드(104)는 동일한 규칙을 사용하도록 구성되며, 이는 노드(102) 및 노드(104)에 의해 동일한 통신 세션을 종료하는 것을 용이하게 할 수 있다.
인식될 바와 같이, 상술한 제1 및 제2 노드 사이의 통신 확립 방법은 제1 및 제2 노드의 노드 식별자를 기초로 한다. 따라서, IP 주소는 예시된 실시예에서 하나보다 많은 노드를 지원하도록 사용될 수 있다. 결과적으로, 하나의 컴퓨팅 디바이스는 예시된 실시예에서 하나보다 많은 노드를 구현하도록 사용될 수 있다.
도 5는 일 실시예에 따른 블록체인 시스템(500)의 개략도를 도시한다. 도 5를 참조하면, 블록체인 시스템(500)은 블록체인(120, 도 1) 상에서 동작하도록 구성되는 노드(102-110)에 유사하게, 블록체인(520) 상에서 동작하도록 구성되는 복수의 노드(502-510)를 포함할 수 있다. 또한, 컴퓨팅 디바이스(530)는 노드(502-506)를 호스트하도록 구성된다. 컴퓨팅 디바이스(530)는 컴퓨팅 디바이스(200, 도 2)와 유사한 방식으로 구현될 수 있다. 즉, 컴퓨팅 디바이스(530)는 통신 인터페이스, 프로세서 및 메모리를 포함할 수 있다. 일부 실시예에서, 컴퓨팅 디바이스(530)는 노드(502-506)를 호스트하기 위한 하이퍼바이저(hypervisors) 및/또는 가상 머신(virtual machines)을 구현할 수 있다. 일부 실시예에서, 컴퓨팅 디바이스(530)는 노드(502-506)를 병렬로 실행되는 프로세스 또는 애플리케이션으로 호스트할 수 있다. 컴퓨팅 디바이스(530)는 또한, 노드(502-506)를 호스트하기 위한 다른 컴퓨팅 기법을 사용할 수 있다.
하나의 컴퓨팅 디바이스를 사용하여 하나보다 많은 노드를 호스트하는 능력을 갖는 것은 블록체인 시스템에 대한 하드웨어 비용을 감소시킬 수 있다. 하지만, 이들 컴퓨팅 디바이스는 하나보다 많은 노드를 호스트하도록 요구되지 않는다. 도 5에 도시된 바와 같이, 예를 들어, 컴퓨팅 디바이스(540 및 550)는 각각 단지 하나의 노드(508 및 510)를 호스트하도록 사용될 수 있으며, 모든 노드(502-510)는 상술한 블록체인(520) 상에서 동작하도록 집합적으로(collectively) 동작할 수 있다. 또한, 본 명세서의 실시예에 따라 구성된 방법은 어떤 노드가 연결 요청을 개시할 수 있는지에 대한 어느 제한을 부과하지 않는다는 점이 주목된다.
위에 제시된 다양한 실시에는 단지 예시적이며 제한하려는 것이 아니다. 예를 들어, 노드(102 및 104, 도 1)가 방법((300, 도 3) 및 (400, 도 4))의 실행을 예시하도록 사용되었지만, 블록체인 시스템(100) 내의 임의의 노드는 다른 노드와의 통신을 요청하기 위해 방법(300)을 사용할 수 있다. 유사하게, 블록체인 시스템(100)에서 임의의 노드는 수신된 연결 요청을 처리하기 위해 방법(400)을 사용할 수 있다.
방법(300 및 400) 상술된 공중 블록체인 네트워크, 개인 블록체인 네트워크 또는 컨소시엄 블록체인 네트워크와 같은 다양한 타입의 블록체인 네트워크에 사용될 수 있다. 방법(300 및 400)은 또한, 명세서의 사상 및 범주를 벗어나지 않으면서 다양한 타입의 응용 예를 들어, 기록 유지, 암호화폐, 블록체인 기반의 분산형 원장 등에 대해 사용될 수 있다.
도 6은 일 실시예에 따른, 블록체인 시스템에서 제1 및 제2 노드 사이의 통신 확립 장치(600)의 블록도이다. 예를 들어, 장치(600)는 제1 노드 및 제2 노드의 각각을 구현할 수 있다. 또한, 예를 들어, 장치(600)는 소프트웨어 프로세스의 구현일 수 있으며, 방법(300, 도 3) 또는 방법(400, 도 4)에 대응할 수 있다. 도 6을 참조하면, 장치(600)는 교환 모듈(602), 결정 모듈(604) 및 종료 모듈(606)을 포함할 수 있다.
교환 모듈(602)은 제1 노드와 제2 노드 사이에 제1 통신 세션이 확립되도록, 제1 노드의 노드 식별자를 제2 노드에 제공하고, 제2 노드로부터 제2 노드의 노드 식별자를 수신할 수 있다. 결정 모듈(604)은 제1 노드와 제2 노드 사이에 제2 통신 세션이 존재하는지를 결정할 수 있다. 종료 모듈(606)은 제1 노드와 제2 노드 사이에 제2 통신 세션이 존재한다는 결정에 응답하여, 제1 노드의 노드 식별자 및 제2 노드의 노드 식별자를 기초로 제1 통신 세션 및 제2 통신 세션 중 하나를 종료할 수 있다.
장치(600)는 통신 모듈(608)을 더 포함할 수 있다. 통신 모듈(608)은 제1 노드와 제2 노드 사이의 연결을 확립하기 위해, 연결 요청을 제2 노드에 전송하거나 또는 제2 노드로부터 연결 요청을 수신할 수 있다. 통신 모듈(608)은 제1 노드와 제2 노드 사이의 연결 상에 통신 세션을 더 확립할 수 있다.
상술한 모듈의 각각은 소프트웨어 또는 하드웨어, 또는 소프트웨어 및 하드웨어의 조합으로 구현될 수 있다. 예를 들어, 상술한 모듈의 각각은 메모리에 저장된 명령어를 실행하는 프로세서를 사용하여 구현될 수 있다. 또한, 예를 들어, 상술한 모듈의 각각은 상술한 방법을 수행하기 위해, 하나 이상의 애플리케이션 특정 집적 회로(ASICs), 디지털 신호 프로세서(DSPs), 디지털 신호 프로세싱 디바이스(DSPDs), 프로그래머블 논리 디바이스(programmable logic devices, PLDs), 필드 프로그래머블 게이트 어레이(FPGAs), 제어기, 마이크로 제어기, 마이크로 프로세서, 또는 다른 구성요소로 구현될 수 있다. 또한, 예를 들어, 상술한 모듈의 각각은 컴퓨터 칩 또는 엔티티를 사용함으로써 구현되거나, 또는 일정 기능을 갖는 제품을 사용함으로써 구현될 수 있다. 일 실시예에서, 장치(600)는 컴퓨터일 수 있으며, 컴퓨터는 개인용 컴퓨터, 랩톱 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트 폰, 개인용 정보 단말기(personal digital assistant), 미디어 플레이어(media player), 내비게이션 디바이스, 이메일 수신 및 전송 디바이스, 게임 콘솔(game console), 태블릿 컴퓨터(tablet computer), 웨어러블 디바이스(wearable device), 또는 이들 디바이스의 임의의 조합일 수 있다.
장치(600)에서 각 모듈의 기능 및 역할의 구현 처리를 위해, 상술한 방법에서 대응하는 단계에 대한 참조가 이루어질 수 있다. 여기서 세부 사항은 단순화를 위해 생략된다.
일부 실시예에서, 컴퓨터 프로그램 제품은 프로세서가 상술한 방법을 수행하게 하는 컴퓨터 판독가능 프로그램 명령어를 갖는 비일시적 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
컴퓨터 판독가능 저장 매체는 명령어 실행 디바이스에 의해 사용하기 위한 명령어를 저장할 수 있는 유형의 디바이스일 수 있다. 컴퓨터 판독가능 저장 매체는 예를 들어, 전자 저장 디바이스, 자기 저장 디바이스, 광학 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스 또는 전술한 것의 임의의 적합한 조합일 수 있지만, 이에 제한되지 않는다. 컴퓨터 판독가능 저장 매체의 더욱 많은 특정한 예시의 완전하지 않은 목록은 다음: 휴대형 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(random access memory, RAM), 읽기 전용 메모리(ROM), 삭제가능 프로그래머블 읽기 전용 메모리(EPROM), 정적 랜덤 액세스 메모리(SRAM), 휴대형 컴팩트 디스크 읽기 전용 메모리(compact disc read-only memory, CD-ROM), 디지털 다기능 디스크(digital versatile disk, DVD), 메모리 스틱(memory stick), 플로피 디스크, 펀치 카드(punch-cards) 또는 명령어가 기록된 그루브(groove) 내의 상승된 구조(raised structures)와 같은 기계적으로 인코딩된 디바이스, 및 전술한 것의 임의의 적합한 조합을 포함한다.
상술한 방법을 수행하기 위한 컴퓨터 판독가능 프로그램 명령어는 어셈블러(assembler) 명령어, ISA(instruction-set-architecture) 명령어, 기계 명령어, 기계 의존 명령어(machine dependent instructions), 마이크로코드, 펌웨어 명령어, 상태 설정 데이터, 또는 객체 지향 프로그래밍 언어 및 종래의 절차형 프로그래밍 언어를 포함하는 하나 이상의 언어의 임의의 조합으로 기록된 소스 코드 또는 객체 코드일 수 있다. 컴퓨터 판독가능 프로그램 명령어는, 독립형 소프트웨어 패키지로 컴퓨팅 디바이스 상에서 그 전체가, 또는 제1 컴퓨터 디바이스 상에서 부분적으로 및 제1 컴퓨팅 디바이스로부터 원격에 있는 제2 컴퓨팅 디바이스 상에서 부분적으로 실행될 수 있다. 후자의 시나리오에서, 제2 원격 컴퓨팅 디바이스는 근거리 통신망(LAN) 또는 광역 통신망(wide area network, WAN)을 포함하는 임의의 타입의 네트워크를 통해 제1 컴퓨팅 디바이스에 연결될 수 있다.
컴퓨터 판독가능 프로그램 명령어는 컴퓨터 또는 기타의 프로그래머블 데이터 처리 장치의 프로세서를 통해 실행되는 명령어가 상술한 방법을 구현하기 위한 수단을 생성하도록, 범용 컴퓨터, 특수 목적 컴퓨터(special-purpose computer), 또는 다른 프로그래머블 데이터 처리 장치의 프로세서로 제공될 수 있다.
도면에서 흐름도 및 도표는 본 명세서의 다양한 실시예에 따른 디바이스, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 아키텍처, 기능 및 동작을 도시한다. 이에 관련하여, 흐름도 또는 도표 내의 블록은 특정 기능을 구현하는 하나 이상의 실행 가능한 명령어를 포함하는, 소프트웨어 프로그램, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또한, 일부 대안적 구현에서, 블록에 표기된 기능은 도면에 표기된 것과는 다른 순서로 발생할 수 있음이 주목되어야 한다. 예를 들어, 연속적으로 도시된 두 개의 블록은 사실상, 실질적으로 동시에 실행되거나, 또는 블록은 수반된 기능에 의존하여 때때로 역순으로 실행될 수 있다. 도표 및/또는 흐름도의 각 블록, 및 도표 및 흐름도의 블록의 조합은 명시된 기능 또는 동작을 수행하는 특수 목적 하드웨어-기반의 시스템, 또는 특수 목적 하드웨어 및 컴퓨터 명령어의 조합에 의해 구현될 수 있다는 점도 주목될 것이다.
명료함을 위해, 분리된 실시예의 맥락에서 서술된 본 명세서의 일정한 피처(feature)는 단일의 실시예로 조합되어 제공될 수도 있다는 점이 인식될 것이다. 반대로, 간결함을 위해 단일의 실시예의 맥락에서 서술된 본 명세서의 다양한 피처는 개별적으로, 또는 어느 적합한 서브조합(subcombination)으로, 또는 명세서의 임의의 다른 서술된 실시예에 적합한 것으로 제공될 수 있다. 다양한 실시예의 맥락에서 서술된 일정 피처는 그러한 것으로 지시되지 않는 한 이들 실시예의 필수적인 피처는 아니다.
본원에서 다양한 요소를 서술하기 위해 "제1" 및 "제2"와 같은 용어가 사용되었지만, 요소는 이들 용어에 의해 제한되지 않아야 하며, 이는 요소를 구분하기 위해서만 사용된다는 점이 인식된다. 예를 들어, 본 명세서의 사상 및 범주를 벗어나지 않으면서, 제1 요소(예를 들어, 제1 노드)는 제2 요소(예를 들어, 제2 노드)로도 지칭될 수 있고, 마찬가지로, 제2 요소는 제1 요소로도 지칭될 수도 있다.
본 명세서가 특정 실시예와 함께 서술되었지만, 통상의 기술자에게는 다수의 대안, 변경 및 변형이 명백할 것이다. 따라서, 다음의 청구범위는 청구범위의 항 내에 속하는 모든 이러한 대안, 변경 및 변형을 포괄한다.

Claims (12)

  1. 블록체인 시스템에서 제1 노드와 제2 노드 사이의 통신을 확립하기 위한 컴퓨터로 구현되는 방법으로서, 상기 방법은:
    상기 제1 노드와 상기 제2 노드 사이에 제1 통신 세션이 확립되도록, 상기 제1 노드에 의해, 상기 제1 노드의 노드 식별자를 상기 제2 노드에 제공하고, 상기 제1 노드에 의해 상기 제2 노드로부터 상기 제2 노드의 노드 식별자를 수신하는 것;
    상기 제1 노드에 의해, 상기 제1 노드와 상기 제2 노드 사이에 제2 통신 세션이 존재하는지를 결정하는 것; 및
    상기 제1 노드와 상기 제2 노드 사이에 상기 제2 통신 세션이 존재한다는 결정에 응답하여, 상기 제1 노드에 의해, 상기 제1 노드의 상기 노드 식별자 및 상기 제2 노드의 상기 노드 식별자를 기초로 상기 제1 통신 세션 및 상기 제2 통신 세션 중 하나를 종료하는 것을 포함하고,
    상기 종료하는 것은
    상기 제1 노드 및 상기 제2 노드 중 더욱 높은 노드 식별자를 갖는 노드를 결정하는 것 또는 상기 제1 노드 및 상기 제2 노드 중 더욱 낮은 노드 식별자를 갖는 노드를 결정하는 것 중 하나에 의해 노드를 결정하는 것;
    상기 제1 통신 세션 및 상기 제2 통신 세션 중 상기 결정된 노드로부터 전송된 연결 요청을 기초로 확립된 통신 세션을 결정하는 것; 및
    상기 제1 통신 세션 및 상기 제2 통신 세션 중 상기 결정된 통신 세션을 종료를 위해 선택하는 것을 포함하는, 방법.
  2. 제1항에 있어서,
    상기 제1 노드에 의해, 상기 제1 노드와 상기 제2 노드 사이의 연결을 종료하는 것을 더 포함하고, 상기 제1 통신 세션 및 상기 제2 통신 세션 중 하나는 상기 연결 상에서 확립되는, 방법.
  3. 제1항에 있어서, 상기 제1 노드에 의해, 상기 제1 노드의 노드 식별자를 상기 제2 노드에 제공하고, 상기 제1 노드에 의해 상기 제2 노드로부터 상기 제2 노드의 노드 식별자를 수신하는 것 이전에,
    상기 제1 노드에 의해, 상기 제1 노드와 상기 제2 노드 사이의 연결을 확립하기 위해 제1 연결 요청을 상기 제2 노드에 전송하는 것; 또는
    상기 제1 노드에 의해, 상기 제1 노드와 상기 제2 노드 사이의 연결을 확립하기 위해 상기 제2 노드로부터 제2 연결 요청을 수신하는 것 중 하나를 더 포함하는, 방법.
  4. 제3항에 있어서, 상기 제1 노드와 상기 제2 노드 사이의 상기 연결이 확립되기 전에,
    상기 제1 노드에 의해, 상기 제1 노드와 상기 제2 노드 사이에 이전의 통신 세션이 존재하는지를 결정하는 것; 및
    상기 제1 노드와 상기 제2 노드 사이에 이전의 통신 세션이 존재하지 않는다는 결정에 응답하여, 상기 제1 노드에 의해, 상기 제1 노드와 상기 제2 노드 사이의 상기 연결을 확립하기 위해 상기 제2 노드와 연관된 인터넷 프로토콜(Internet Protocol, IP) 주소에 상기 제1 연결 요청을 전송하는 것을 더 포함하는 방법.
  5. 제3항에 있어서, 상기 제1 노드와 상기 제2 노드 사이의 상기 연결이 확립된 후에,
    상기 제1 노드에 의해, 상기 제1 노드와 상기 제2 노드 사이에 이전의 통신 세션이 존재하는지를 결정하는 것; 및
    상기 제1 노드와 상기 제2 노드 사이에 이전의 통신 세션이 존재하지 않는다는 결정에 응답하여, 상기 제1 노드의 상기 노드 식별자를 상기 제2 노드에 제공하는 것 및 상기 제2 노드로부터 상기 제2 노드의 상기 노드 식별자를 수신하는 것을 상기 제1 노드에 의해 수행하는 것을 더 포함하는, 방법.
  6. 제3항에 있어서, 전송 제어 프로토콜(Transmission Control Protocol, TCP) 연결이 상기 제1 노드와 상기 제2 노드 사이의 상기 연결로서 확립되고, 상기 방법은
    상기 TCP 연결을 기초로 상기 제1 통신 세션을 확립하는 것을 더 포함하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 제1 노드의 상기 노드 식별자를 상기 제2 노드에 제공하기 전에, 상기 제1 노드에 의해, 상기 제1 노드의 개인 키를 사용하여 상기 제1 노드의 상기 노드 식별자를 암호화하는 것을 더 포함하는, 방법.
  8. 삭제
  9. 삭제
  10. 블록체인 시스템에서 제1 노드와 제2 노드 사이의 통신을 확립하기 위한 컴퓨팅 디바이스로서, 상기 컴퓨팅 디바이스는:
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 연결되고, 제1항 내지 제6항 중 어느 한 항의 방법을 수행하기 위해 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 메모리를 포함하는, 컴퓨팅 디바이스.
  11. 블록체인 시스템에서 제1 노드와 제2 노드 사이의 통신 확립 장치로서, 상기 장치는 제1항 내지 제6항 중 어느 한 항의 방법을 수행하는 복수의 모듈을 포함하는, 통신 확립 장치.
  12. 컴퓨팅 디바이스의 프로세서에 의해 실행될 때, 상기 컴퓨팅 디바이스가 제1항 내지 제6항 중 어느 한 항의 방법을 수행하게 하는 명령어를 저장하는, 비일시적 컴퓨터 판독가능 매체.
KR1020197019262A 2019-02-01 2019-02-01 블록체인 시스템에서 노드 사이의 통신 확립 방법 및 디바이스 KR102284422B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/074436 WO2019072318A2 (en) 2019-02-01 2019-02-01 METHODS AND DEVICES FOR ESTABLISHING COMMUNICATION BETWEEN NODES IN A BLOCK CHAIN SYSTEM

Publications (2)

Publication Number Publication Date
KR20200096720A KR20200096720A (ko) 2020-08-13
KR102284422B1 true KR102284422B1 (ko) 2021-08-04

Family

ID=66100023

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197019262A KR102284422B1 (ko) 2019-02-01 2019-02-01 블록체인 시스템에서 노드 사이의 통신 확립 방법 및 디바이스

Country Status (7)

Country Link
US (2) US11310321B2 (ko)
EP (1) EP3607727B1 (ko)
JP (1) JP6920442B2 (ko)
KR (1) KR102284422B1 (ko)
CN (1) CN110731073B (ko)
PH (1) PH12019501487A1 (ko)
WO (1) WO2019072318A2 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11386217B2 (en) * 2019-02-20 2022-07-12 Sap Se Hybrid centralized and decentralized enterprise system
US11327946B2 (en) 2019-02-20 2022-05-10 Sap Se Hybrid centralized and decentralized enterprise system
CN111404897A (zh) * 2020-03-06 2020-07-10 深圳前海达闼云端智能科技有限公司 消息分发方法、装置、存储介质及电子设备
US20220237594A1 (en) * 2021-01-26 2022-07-28 Akamai Technologies, Inc. High performance distributed system of record with wallet services resiliency

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2453315A (en) 2007-08-15 2009-04-08 Nec Corp Connection Identifier in a telecommunications network
EP2071809A1 (en) * 2007-12-13 2009-06-17 Alcatel Lucent Method of establishing a connection in a peer-to-peer network with network address translation (NAT)
ES2371378T3 (es) * 2008-04-04 2011-12-30 Canon Kabushiki Kaisha Sistema de gestión de sesiones y método para controlar las mismas.
CN101753592B (zh) * 2008-11-28 2013-04-17 国际商业机器公司 用于数据处理的方法和系统
US20110078312A1 (en) 2009-09-30 2011-03-31 Alcatel-Lucent Method and system for monitoring incoming connection requests in a Peer-to-Peer network
US20110213897A1 (en) * 2010-02-26 2011-09-01 Qualcomm Incorporated Systems and methods for releasing stale connection contexts
US9413758B2 (en) 2012-05-24 2016-08-09 Fmr Llc Communication session transfer between devices
GB201321148D0 (en) 2013-11-29 2014-01-15 Bridgeworks Ltd Data transfer
SE538279C2 (sv) * 2014-09-23 2016-04-19 Kelisec Ab Förfarande och system för att fastställa förekomst av
US10791031B2 (en) * 2015-05-28 2020-09-29 Cisco Technology, Inc. Methods and systems for managing connected data transfer sessions
JP6482406B2 (ja) * 2015-06-23 2019-03-13 キヤノン株式会社 通信装置、通信装置の制御方法、およびプログラム
WO2018122184A1 (en) 2016-12-29 2018-07-05 Koninklijke Philips N.V. Wireless communication system
WO2018224945A1 (en) 2017-06-07 2018-12-13 nChain Holdings Limited Credential generation and distribution method and system for a blockchain network
CN107592292B (zh) 2017-07-26 2019-08-09 阿里巴巴集团控股有限公司 一种区块链节点间通信方法及装置
US20200028775A1 (en) * 2018-07-19 2020-01-23 Moac Blockchain Tech Inc Apparatus and Method for Decentralized Anonymous Communication

Also Published As

Publication number Publication date
CN110731073A (zh) 2020-01-24
KR20200096720A (ko) 2020-08-13
US10880383B2 (en) 2020-12-29
WO2019072318A2 (en) 2019-04-18
PH12019501487A1 (en) 2020-02-24
WO2019072318A3 (en) 2019-11-14
US20200252465A1 (en) 2020-08-06
JP6920442B2 (ja) 2021-08-18
EP3607727A2 (en) 2020-02-12
EP3607727B1 (en) 2023-11-22
CN110731073B (zh) 2022-05-24
US20200382603A1 (en) 2020-12-03
EP3607727A4 (en) 2020-05-27
JP2020522767A (ja) 2020-07-30
US11310321B2 (en) 2022-04-19

Similar Documents

Publication Publication Date Title
EP3639182B1 (en) Methods and devices for validating transaction in blockchain system
KR102247658B1 (ko) 신뢰 실행 환경에서 실행되는 스마트 계약 동작에 기초한 블록체인 데이터의 프로세싱
EP3610383B1 (en) Data isolation in blockchain networks
KR102284422B1 (ko) 블록체인 시스템에서 노드 사이의 통신 확립 방법 및 디바이스
WO2019101235A2 (en) Methods and devices for testing signature verification for blockchain system
EP3632082B1 (en) Methods and devices for establishing communication between blockchain networks
US11157897B2 (en) Methods and devices for managing access to account in blockchain system
EP3665595B1 (en) Methods and devices for data traversal
US11893577B2 (en) Cryptographic key storage system and method
US20200204338A1 (en) Securing public key cryptographic algorithms
US11368309B2 (en) Methods and devices for generating and verifying passwords
WO2020182233A2 (en) Methods and devices for executing cross-chain anonymous multi-swap contracts
CN114641788B (zh) 用于防止对区块链系统的拒绝服务攻击的方法和设备
WO2021223653A1 (en) Methods and devices for protecting and verifying state transition of record
WO2021139605A1 (en) Methods and devices for providing decentralized identity verification
WO2021023094A1 (en) Methods and devices for executing n-time hashed time lock contracts
WO2021139392A1 (en) Methods and devices for providing atomic transaction on blockchain

Legal Events

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